日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

使用cgroup控制cpu、內(nèi)存、IO資源實(shí)踐

作者:小堅(jiān)學(xué)Linux 更新時(shí)間: 2022-07-09 編程語(yǔ)言

一、按比例控制cpu資源

1.掛載cgroup文件系統(tǒng)

jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o cpu cgroup /cgroup

2.創(chuàng)建兩個(gè)cpu資源分組ga和ga

jian@ubuntu:~/share$ sudo mkdir /cgroup/ga
jian@ubuntu:~/share$ sudo mkdir /cgroup/gb

3.把進(jìn)程分配給兩個(gè)資源組組
首先通過(guò)ps查看到自己這個(gè)控制臺(tái)的PID為8086,并且把8086進(jìn)程分配給ga組。

jian@ubuntu:~/share$ ps
    PID TTY          TIME CMD
   8086 pts/0    00:00:00 bash
   8253 pts/0    00:00:00 ps
jian@ubuntu:~/share$ sudo echo 8086 > sudo /cgroup/ga/tasks 

新開一個(gè)控制臺(tái)進(jìn)行同樣的操作,分給資源組gb。當(dāng)然,可以使用$$代表當(dāng)前進(jìn)程來(lái)進(jìn)行快速操作:

jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/ga/tasks

4.查看cpu時(shí)間分配值(cgroup分配cpu時(shí)間是根據(jù)值的比例來(lái)分配的)

jian@ubuntu:~/share$ cat /cgroup/ga/cpu.shares 
1024

5.修改ga和gb分配cpu資源的比重為2:1

jian@ubuntu:~/share$ sudo echo 1024 > sudo /cgroup/ga/cpu.shares 
jian@ubuntu:~/share$ sudo echo 512 > sudo /cgroup/gb/cpu.shares

二、按cpu號(hào)控制cpu資源(可以提高緩存的利用率)

1.開啟cpuset功能
修改內(nèi)核CONFIG_CPUSETS = y

2.掛載cgroup文件系統(tǒng)

jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o cpuset cgroup /cgroup

3.創(chuàng)建兩個(gè)cpu資源分組ga

jian@ubuntu:~/share$ sudo mkdir /cgroup/ga

4.把cpu0分配給ga組

jian@ubuntu:~/share$ sudo echo 0 > sudo /cgroup/ga/cpuset.cpus

5.把進(jìn)程分配給ga資源組

jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/ga/task

這樣子sh進(jìn)程就可以只運(yùn)行在cpu0上。

三、控制內(nèi)存資源

1.在Ubuntu21.10虛擬機(jī)上無(wú)法查看和修改cgroup的memory.limit_in_bytes參數(shù),需要修改/etc/default/grub文件,其中的兩行原文是:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US"

改為:

GRUB_CMDLINE_LINUX_DEFAULT="quiet systemd.unified_cgroup_hierarchy=0"
GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US systemd.unified_cgroup_hierarchy=0"

執(zhí)行線面命令更新grup:

grub-mkconfig -o /boot/grub/grub.cfg

2.掛載cgroup文件系統(tǒng)

jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o memory cgroup /cgroup

3.創(chuàng)建兩個(gè)cpu資源分組ga

jian@ubuntu:~/share$ sudo mkdir /cgroup/ga

4.設(shè)置ga組的內(nèi)存使用量限制為10M

jian@ubuntu:~/share$ sudo echo 10M > sudo /cgroup/ga/memory.usage_in_bytes

5.把進(jìn)程分配給ga資源組

jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/ga/task

這樣子當(dāng)前sh進(jìn)程只能使用10M內(nèi)存。

四、控制IO資源

1.配置內(nèi)核

CONFIG_BLK_CGROUP = y
CONFIG_CFQ_CGROUP_IOSCHED = y

2.確定cgroup支持Block IO控制
查看 /proc/cgroups 文件,可以看到 blkio ,并且enabled為1則說(shuō)明支持。

3.掛載cgroup文件系統(tǒng)

jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o blkio cgroup /cgroup

4.查看塊設(shè)備的調(diào)度算法

cat /sys/class/block/sda/queue/scheduler 
[mq-deadline] none cfq

看到支持的調(diào)度算法,其中當(dāng)前選擇的調(diào)度算法已加上[ ]括號(hào)。

5.設(shè)置cfq調(diào)度算法

jian@ubuntu:~/share$ sudo echo cfq > /sys/class/block/sda/queue/scheduler 

6.創(chuàng)建兩個(gè)io資源分組high和low

jian@ubuntu:~/share$ sudo mkdir /cgroup/high
jian@ubuntu:~/share$ sudo mkdir /cgroup/low

7.設(shè)置權(quán)重

jian@ubuntu:~/share$ sudo echo 1000 > sudo /cgroup/high/blkio.weight
jian@ubuntu:~/share$ sudo echo 100 > sudo /cgroup/low/blkio.weight

8.把進(jìn)程分配給兩個(gè)組
新建一個(gè)控制臺(tái),把進(jìn)程分配給high組

jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/high/task

同樣新建一個(gè)控制臺(tái),把進(jìn)程分配給low組

jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/low/task

9.清理cache

jian@ubuntu:~/share$ sudo echo 3 > sudo  /proc/sys/vm/drop_caches

10.兩個(gè)控制臺(tái)同時(shí)執(zhí)行dd操作,并且使用time計(jì)時(shí)

jian@ubuntu:~/share$ time dd if=~/high of=/dev/null bs=1M count=400
jian@ubuntu:~/share$ time dd if=~/low of=/dev/null bs=1M count=400

原文鏈接:https://blog.csdn.net/sinat_22338935/article/details/124700376

欄目分類
最近更新