網站首頁 編程語言 正文
一、按比例控制cpu資源
1.掛載cgroup文件系統
jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o cpu cgroup /cgroup
2.創建兩個cpu資源分組ga和ga
jian@ubuntu:~/share$ sudo mkdir /cgroup/ga
jian@ubuntu:~/share$ sudo mkdir /cgroup/gb
3.把進程分配給兩個資源組組
首先通過ps查看到自己這個控制臺的PID為8086,并且把8086進程分配給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
新開一個控制臺進行同樣的操作,分給資源組gb。當然,可以使用$$代表當前進程來進行快速操作:
jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/ga/tasks
4.查看cpu時間分配值(cgroup分配cpu時間是根據值的比例來分配的)
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號控制cpu資源(可以提高緩存的利用率)
1.開啟cpuset功能
修改內核CONFIG_CPUSETS = y
2.掛載cgroup文件系統
jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o cpuset cgroup /cgroup
3.創建兩個cpu資源分組ga
jian@ubuntu:~/share$ sudo mkdir /cgroup/ga
4.把cpu0分配給ga組
jian@ubuntu:~/share$ sudo echo 0 > sudo /cgroup/ga/cpuset.cpus
5.把進程分配給ga資源組
jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/ga/task
這樣子sh進程就可以只運行在cpu0上。
三、控制內存資源
1.在Ubuntu21.10虛擬機上無法查看和修改cgroup的memory.limit_in_bytes參數,需要修改/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"
執行線面命令更新grup:
grub-mkconfig -o /boot/grub/grub.cfg
2.掛載cgroup文件系統
jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o memory cgroup /cgroup
3.創建兩個cpu資源分組ga
jian@ubuntu:~/share$ sudo mkdir /cgroup/ga
4.設置ga組的內存使用量限制為10M
jian@ubuntu:~/share$ sudo echo 10M > sudo /cgroup/ga/memory.usage_in_bytes
5.把進程分配給ga資源組
jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/ga/task
這樣子當前sh進程只能使用10M內存。
四、控制IO資源
1.配置內核
CONFIG_BLK_CGROUP = y
CONFIG_CFQ_CGROUP_IOSCHED = y
2.確定cgroup支持Block IO控制
查看 /proc/cgroups 文件,可以看到 blkio ,并且enabled為1則說明支持。
3.掛載cgroup文件系統
jian@ubuntu:~/share$ sudo mkdir /cgroup
jian@ubuntu:~/share$ sudo mount -t cgroup -o blkio cgroup /cgroup
4.查看塊設備的調度算法
cat /sys/class/block/sda/queue/scheduler
[mq-deadline] none cfq
看到支持的調度算法,其中當前選擇的調度算法已加上[ ]括號。
5.設置cfq調度算法
jian@ubuntu:~/share$ sudo echo cfq > /sys/class/block/sda/queue/scheduler
6.創建兩個io資源分組high和low
jian@ubuntu:~/share$ sudo mkdir /cgroup/high
jian@ubuntu:~/share$ sudo mkdir /cgroup/low
7.設置權重
jian@ubuntu:~/share$ sudo echo 1000 > sudo /cgroup/high/blkio.weight
jian@ubuntu:~/share$ sudo echo 100 > sudo /cgroup/low/blkio.weight
8.把進程分配給兩個組
新建一個控制臺,把進程分配給high組
jian@ubuntu:~/share$ sudo echo $$ > sudo /cgroup/high/task
同樣新建一個控制臺,把進程分配給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.兩個控制臺同時執行dd操作,并且使用time計時
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
- 上一篇:systemd開機啟動和關機回調腳本
- 下一篇:linux用戶態使用gpio中斷方法
相關推薦
- 2022-03-03 【css】page-break-after 頁面打印分頁屬性
- 2022-07-13 復選框 prop 不觸發 change 事件
- 2022-07-03 python類的私有屬性和公共屬性說明_python
- 2022-09-18 ASP.NET?Core實現文件上傳和下載_實用技巧
- 2023-01-21 C#實現Word轉換RTF的示例代碼_C#教程
- 2022-03-30 C語言代碼實現猜數字游戲_C 語言
- 2022-06-02 C語言深入淺出解析二叉樹_C 語言
- 2023-01-02 Pytes正確的配置使用日志功能_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支