linux cgroup限制cpu( 二 )


示例
这里以 & 为例,演示一下如何控制CPU的使用率 。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31继续使用上面创建的子: test
设置只能使用1个cpu的20%的时间
[]:/sys/fs//cpu,/test$ sudo sh -c "echo 50000 > cpu."
[]:/sys/fs//cpu,/test$ sudo sh -c "echo 10000 > cpu."
#将当前bash加入到该
[]:/sys/fs//cpu,/test$ echo $$
5456
[]:/sys/fs//cpu,/test$ sudo sh -c "echo 5456 > .procs"
#在bash中启动一个死循环来消耗cpu,正常情况下应该使用100%的cpu(即消耗一个内核)
[]:/sys/fs//cpu,/test$ while :; do echo test > /dev/null; done
#--------------------------重新打开一个shell窗口----------------------
#通过top命令可以看到5456的CPU使用率为20%左右,说明被限制住了
#不过这时系统的%us+%sy在10%左右,那是因为我测试的机器上cpu是双核的,
#所以系统整体的cpu使用率为10%左右
Tasks: 139 total, 2 , 137 , 0 , 0
%Cpu(s): 5.6 us, 6.2 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem :total, 15472 free, 81488 used,buff/cache
KiB Swap: 0 total, 0 free, 0 used.avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
5456 dev 20 0 22640 5472 3524 R 20.3 1.1 0:04.62 bash
#这时可以看到被限制的统计结果
[]:~$ cat /sys/fs//cpu,/test/cpu.stat
1436
1304
结束语
使用限制CPU的使用率比较纠结,用 & 吧,限制死了,没法充分利用空闲的CPU,用吧,又没法配置百分比,极其难控制 。总之,使用的cpu子系统需谨慎 。