cgroup--cgroup 測試
cgroups全稱control groups,在RHEL6的2.6.32內核中已經包括了cgroup的patch。這里強烈建議安裝RHEL6(CentOS6)來使用cgroups,如果沒有的話,
只能升級內核了 ( > 2.6.26版本)
安裝cgroups
apt-get install cgroup-bin
改變配置:vi /etc/cgconfig.conf
將最后的mount 改為如下形式:
mount { cpuset = /sys/fs/cgroup/cpuset; net_cls = /sys/fs/cgroup/net_cls; blkio = /sys/fs/cgroup/blkio; perf_event = /sys/fs/cgroup/perf_event; cpu = /sys/fs//cgroup/cpu; cpuacct = /sys/fs/cgroup/cpuacct; devices = /sys/fs/cgroup/devices; memory = /sys/fs/cgroup/memory; freezer = /sys/fs/cgroup/freezer; } |
測試 cpu 子系統
cpu.shares:假設cgroup A的 tasks 的 cpu.shares 值為1,cgroup B的tasks的cpu.shares值為2,則cgroup B的進程占用的cpu時間是cgroup A上進程的2倍。
cpu.rt_runtime_us
cpu.rt_period_us: 這兩個值建議不要設,讓OS去調度占用的CPU時間的絕對值。
進入 cpu 目錄:
sina@ubuntu:~$ cd /sys/fs/cgroup/cpu
創建目錄:
# mkdir tinker
# mkdir tailor
下面通過taskset -c 3 ,啟動兩個虛擬機 并指定其 cpu affinity為cpu 3,啟動2個虛擬機:
# taskset -c 3 ./for-test.sh
并在每個虛擬機中 滿負荷運行 計算密集型程序。
觀察兩臺虛擬機的PID,及cpu使用率:
root@ubuntu:~# ps -C qemu-system-i386 -opid,%cpu,psr,args PID %CPU PSR COMMAND 3237 50.1 3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386 3306 49.8 3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386 |
此時把兩個qemu 任務的 pid分別 echo 進 tasks 文件中。并且修改 cpu/tinker 的 cpu.shares 為2048, cpu/tailor 的 cpu.shares 為512:
root@ubuntu:~# echo 3237 > /sys/fs/cgroup/cpu/tinker/tasks root@ubuntu:~# echo 3306 > /sys/fs/cgroup/cpu/tailor/tasks root@ubuntu:~# echo 2048 > /sys/fs/cgroup/cpu/tinker/cpu.shares root@ubuntu:~# echo 512 > /sys/fs/cgroup/cpu/tailor/cpu.shares |
此時觀察兩個任務的 cpu 使用率:
root@ubuntu:~# ps -C qemu-system-i386 -opid,%cpu,psr,args PID %CPU PSR COMMAND 3237 80 3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386 3306 20 3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386 |
設置了cpu.shares之后CPU利用率不會立刻就變為shares指定的那樣,需要等待一段時間,基本上是個曲線的變化過程,之后就按照設置的數值來分配cpu使用率。