網(wǎng)站首頁(yè) 編程語(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
相關(guān)推薦
- 2022-09-18 Golang實(shí)現(xiàn)文件傳輸功能_Golang
- 2022-03-21 golang?調(diào)用c語(yǔ)言動(dòng)態(tài)庫(kù)方式實(shí)現(xiàn)_Golang
- 2022-08-25 C++詳細(xì)講解互斥量與lock_guard類模板及死鎖_C 語(yǔ)言
- 2022-10-30 使用AVFoundation實(shí)現(xiàn)視頻錄制詳解_IOS
- 2022-01-02 無(wú)法將“node.exe”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱
- 2022-04-15 python使用reportlab生成pdf實(shí)例_python
- 2022-01-25 項(xiàng)目啟動(dòng)的時(shí)候報(bào)Exception in thread main 錯(cuò)誤解決方法
- 2022-12-07 聊聊C語(yǔ)言中sizeof運(yùn)算符的一個(gè)陷阱_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支