【Cgroup】Centos7上面的Cgroup簡單實驗
阿新 • • 發佈:2017-10-12
lin 流量控制 prime lee 名稱 網絡數 resource 識別 brush
實驗目標
- 控制CPU分配
- 控制CPU使用率
- 控制內存分配
安裝配置工具
[[email protected] cpu]# yum install -y libcgroup-tools.x86_64 libcgroup
創建我們的cgroup組my1
#創建分組 [[email protected] ~]# cgcreate -g cpu,cpuset,memory:my1 #設置限制使用cpu 0 [[email protected] ~]# cgset -r cpuset.cpus=0 my1 #設置限制使用的內存條 [[email protected] ~]# cgset -r cpuset.cpus=0 my1 #設置限制cpu最多用到50% [[email protected] ~]# cgset -r cpu.cfs_period_us=100000 my1 [[email protected] ~]# cgset -r cpu.cfs_quota_us=50000 my1 #設置限制內存最大使用大小,這裏單位是byte,這裏限制最多用512M [[email protected] ~]# cgset -r memory.limit_in_bytes=524288000 my1
安裝測試工具 matho-primes
[[email protected] small]# wget -O mathomatic-16.0.1.tar.bz2 http://download.chinaunix.net/down.php?id=42725&ResourceID=6566&site=1 [[email protected] small]# yum install -y bzip2 [[email protected] small]# bzip2 -b mathomatic-16.0.1.tar.bz2 && tar -xf mathomatic-16.0.1.tar [[email protected] small]# cd mathomatic-16.0.1/primes/ [[email protected] small]# make && make install
測試,可以看到下面的matho-primes 進程使用了第一個cpu,50%的資源
[[email protected] ~]# cgexec -g cpuset,memory,cpu:/my1 /usr/local/bin/matho-primes 0 999999999 > /dev/null & [[email protected] ~]# top top - 13:40:49 up 1 day, 2:05, 2 users, load average: 0.00, 0.01, 0.10 Tasks: 180 total, 2 running, 178 sleeping, 0 stopped, 0 zombie %Cpu0 : 50.2 us, 0.0 sy, 0.0 ni, 49.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8010804 total, 2646744 free, 4564848 used, 799212 buff/cache KiB Swap: 1679356 total, 1679356 free, 0 used. 3059412 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6965 root 20 0 9200 2524 488 R 49.8 0.0 0:05.44 matho-primes
Cgroup子系統
- blkio -- 這個子系統為塊設備設定輸入/輸出限制,比如物理設備(磁盤,固態硬盤,USB 等等)。
- cpu -- 這個子系統使用調度程序提供對 CPU 的 cgroup 任務訪問。
- cpuacct -- 這個子系統自動生成 cgroup 中任務所使用的 CPU 報告。
- cpuset -- 這個子系統為 cgroup 中的任務分配獨立 CPU(在多核系統)和內存節點。
- devices -- 這個子系統可允許或者拒絕 cgroup 中的任務訪問設備。
- freezer -- 這個子系統掛起或者恢復 cgroup 中的任務。
- memory -- 這個子系統設定 cgroup 中任務使用的內存限制,並自動生成由那些任務使用的內存資源報告。
- net_cls -- 這個子系統使用等級識別符(classid)標記網絡數據包,可允許 Linux 流量控制程序(tc)識別從具體 cgroup 中生成的數據包。
- ns -- 名稱空間子系統。
【Cgroup】Centos7上面的Cgroup簡單實驗