Để chính xác điều này có lẽ bạn cần phải sử dụng các nhóm.
Đây là một ví dụ nhanh mà tôi đã thử nghiệm trên Ubuntu 20.04. Để đơn giản, đây là một máy ảo cpu duy nhất và tất cả các lệnh được chạy với quyền root.
apt-get cài đặt căng thẳng cgroup-tools
- tạo một hệ thống phân cấp các nhóm sẽ bị giới hạn cpu. Cha mẹ được đặt tên
tối đa80
Và nó đã Một
và b
bên dưới nó.
cgcreate -g cpu:max80/A -g cpu:max80/B
- giới hạn cgroup cha
tối đa80
đến 80% CPU.
tiếng vang 1000000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_period_us
tiếng vang 800000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_quota_us
- giới hạn cgroup con
b
để có 10% cổ phần. Bạn đã đề cập đến 1% trong bài đăng của mình, nhưng 10% thì dễ hiển thị hơn. b
sẽ sử dụng tất cả CPU có sẵn, nhưng nếu có xung đột với các quy trình trong Một
sau đó nó sẽ được giới hạn ở mức 10%.
echo $((1024 * 10/100 )) > /sys/fs/cgroup/cpu/max80/B/cpu.shares
trong hành động
- chạy một
thư giãn
quá trình chỉ trong Một
. Việc sử dụng CPU sẽ là 80% cho thư giãn
quá trình thực hiện công việc.
root@ubuntu:~
[1] 2040
căng thẳng: thông tin: [2040] cử lợn: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~
PID %CPU CMD
2041 80.4 căng thẳng --cpu 1
2040 0,0 căng thẳng --cpu 1
root@ubuntu:~
- chạy một
thư giãn
quá trình chỉ trong b
. Việc sử dụng CPU sẽ là 80%.
root@ubuntu:~
[1] 2065
căng thẳng: thông tin: [2065] cử lợn: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~
PID %CPU CMD
2066 80.6 căng thẳng --cpu 1
2065 0,0 căng thẳng --cpu 1
root@ubuntu:~
- chạy một
thư giãn
quá trình trong Một
và b
. Việc sử dụng CPU sẽ được chia 90%/10%.
root@ubuntu:~
[1] 2078
stress: info: [2078] điều phối heo: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~
[2] 2080
căng thẳng: thông tin: [2080] cử lợn: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~
PID %CPU CMD
2079 71,9 căng thẳng --cpu 1
2081 7.2 căng thẳng --cpu 1
2078 0,0 căng thẳng --cpu 1
2080 0,0 căng thẳng --cpu 1
root@ubuntu:~
liên kết