Kích hoạt và sử dụng Ability to throttle resources per-user (CPU/RAM/IO etc.) của Directadmin trên Centos 8

Directadmin Giza Data Tháng hai 21, 2023

Phiên bản CentOS 8 hỗ trợ đầy đủ các công nghệ cgroup và namespace cần thiết để sử dụng tính năng Ability to throttle resources per-user (CPU/RAM/IO etc.) trên DirectAdmin.

Do đó, nếu bạn cài đặt DirectAdmin trên CentOS 8, bạn có thể sử dụng chức năng Ability to throttle resources per-user (CPU/RAM/IO etc.) để giới hạn tài nguyên máy chủ được sử dụng bởi từng người dùng, giúp đảm bảo tính ổn định và tăng cường bảo mật cho hệ thống.

Tuy nhiên, khi cài đặt DirectAdmin trên CentOS 8, bạn cần cài đặt thủ công các gói phụ thuộc và thiết lập cấu hình để đảm bảo tính tương thích và hoạt động ổn định của hệ thống. Bạn cần tìm hiểu kỹ trước khi tiến hành cài đặt để đảm bảo thành công.

Để kích hoạt chức năng Ability to throttle resources per-user (CPU/RAM/IO etc.) trên DirectAdmin trên CentOS 8, bạn cần thực hiện các bước sau

Cài đặt gói cgroups và cgroups-utils bằng lệnh sau

PowerShell
yum install -y libcgroup-tools

Mở file cấu hình /etc/cgconfig.conf và thêm các khai báo cho CPU, RAM và I/O tương ứng với từng group của người dùng như sau

PowerShell
group user1 {
    cpu {
        cpu.cfs_period_us = 100000;
        cpu.cfs_quota_us = 50000;
    }
    memory {
        memory.limit_in_bytes = 100M;
        memory.memsw.limit_in_bytes = 200M;
    }
    blkio {
        blkio.throttle.read_bps_device = "253:0 1048576";
        blkio.throttle.write_bps_device = "253:0 1048576";
        blkio.throttle.read_iops_device = "253:0 1000";
        blkio.throttle.write_iops_device = "253:0 1000";
    }
}

Trong đó, group user1 là tên group của người dùng, bạn có thể đặt tên group khác tùy ý. Các thiết lập CPU, RAM và I/O sẽ được áp dụng cho các quy trình được chạy trong group này.

Khởi động dịch vụ cgconfig và cgred bằng lệnh sau

PowerShell
systemctl start cgconfig
systemctl start cgred

Vào DirectAdmin và chỉnh sửa tài khoản người dùng cần giới hạn tài nguyên, bật chức năng Limit Resource Usage và chọn group tương ứng với tài khoản người dùng.

Sau khi hoàn tất các bước trên, các tài nguyên (CPU, RAM và I/O) sẽ được giới hạn theo các thiết lập được định nghĩa trong file cấu hình cgconfig.conf cho từng group của người dùng.

Ví dụ bạn muốn cài đặt các nhóm bao gồm:

  • 4 core cpu, 4gb ram, tốc độ I/O max
  • 8 core cpu, 8gb ram, tốc độ I/O max
  • 16 core cpu, 16gb ram, tốc độ I/O max
  • 32 core cpu, 32gb ram, tốc độ I/O max
  • 64 core cpu, 64gb ram, tốc độ I/O max
  • 88 core cpu, 64gb ram, tốc độ I/O max

Ở bước cấu hình file /etc/cgconfig.conf ta thêm các khai báo cho các nhóm như sau:

PowerShell
group cpu4gb4io {
    cpu {
        cpu.cfs_quota_us = 400000;
    }
    memory {
        memory.limit_in_bytes = 4G;
        memory.memsw.limit_in_bytes = 4G;
    }
    blkio {
        blkio.throttle.read_bps_device = "8:0 1000000000";
        blkio.throttle.write_bps_device = "8:0 1000000000";
        blkio.throttle.read_iops_device = "8:0 1000";
        blkio.throttle.write_iops_device = "8:0 1000";
    }
}

group cpu8gb8io {
    cpu {
        cpu.cfs_quota_us = 800000;
    }
    memory {
        memory.limit_in_bytes = 8G;
        memory.memsw.limit_in_bytes = 8G;
    }
    blkio {
        blkio.throttle.read_bps_device = "8:0 2000000000";
        blkio.throttle.write_bps_device = "8:0 2000000000";
        blkio.throttle.read_iops_device = "8:0 2000";
        blkio.throttle.write_iops_device = "8:0 2000";
    }
}

group cpu16gb16io {
    cpu {
        cpu.cfs_quota_us = 1600000;
    }
    memory {
        memory.limit_in_bytes = 16G;
        memory.memsw.limit_in_bytes = 16G;
    }
    blkio {
        blkio.throttle.read_bps_device = "8:0 4000000000";
        blkio.throttle.write_bps_device = "8:0 4000000000";
        blkio.throttle.read_iops_device = "8:0 4000";
        blkio.throttle.write_iops_device = "8:0 4000";
    }
}

group cpu32gb32io {
    cpu {
        cpu.cfs_quota_us = 3200000;
    }
    memory {
        memory.limit_in_bytes = 32G;
        memory.memsw.limit_in_bytes = 32G;
    }
    blkio {
        blkio.throttle.read_bps_device = "8:0 8000000000";
        blkio.throttle.write_bps_device = "8:0 8000000000";
        blkio.throttle.read_iops_device = "8:0 8000";
        blkio.throttle.write_iops_device = "8:0 8000";
    }
}

group cpu64gb {
  cpu {
    cpu.shares="64000";
  }
  memory {
    memory.limit_in_bytes="68719476736";
  }
  blkio {
    blkio.throttle.read_bps_device="8:0 1048576000";
    blkio.throttle.write_bps_device="8:0 1048576000";
  }
}

group cpu88gb {
  cpu {
    cpu.shares="88000";
  }
  memory {
    memory.limit_in_bytes="75161927680";
  }
  blkio {
    blkio.throttle.read_bps_device="8:0 1395864371";
    blkio.throttle.write_bps_device="8:0 1395864371";
  }
}

Giải thích một số lưu ý về cấu hình:

  • cpu64gb: Tên nhóm tài nguyên được định nghĩa cho nhóm với tài nguyên 64 core CPU và 64 GB RAM. Tương tự, cpu88gb là tên nhóm tài nguyên cho nhóm với tài nguyên 88 core CPU và 64 GB RAM.
  • cpu.shares: Đây là số điểm phân chia CPU mà nhóm sẽ được phân chia khi các tiến trình cạnh tranh cho tài nguyên CPU. Các tiến trình của nhóm với số điểm phân chia cao hơn sẽ được ưu tiên thực thi hơn. Điểm phân chia CPU được tính toán dựa trên tổng số điểm của tất cả các nhóm CPU trong hệ thống. Vì vậy, số điểm phân chia CPU của mỗi nhóm CPU cần được cân nhắc kỹ lưỡng để đảm bảo các nhóm có tỷ lệ phân chia CPU phù hợp.
  • memory.limit_in_bytes: Đây là giới hạn dung lượng RAM tối đa mà mỗi nhóm được phép sử dụng. Giá trị được đặt theo đơn vị byte. Trong ví dụ này, giá trị 68719476736 bytes tương đương với 64 GB RAM, và giá trị 75161927680 bytes tương đương với 70 GB RAM.
  • blkio.throttle.read_bps_deviceblkio.throttle.write_bps_device: Đây là giới hạn tốc độ I/O tối đa mà mỗi nhóm được phép sử dụng. Giá trị được đặt theo đơn vị byte mỗi giây (bps). Trong ví dụ này, tốc độ I/O tối đa được giới hạn là 1000 MB/s (1 GB/s) cho cả đọc và ghi cho nhóm 64 core CPU và 64 GB RAM, và 1331 MB/s cho cả đọc và ghi cho nhóm 88 core CPU và 64 GB RAM.
Quảng Cáo