使用nice,cpulimit和cgroups限制程式CPU使用率
大多數程式以相同的優先順序啟動,Linux核心在處理器上均勻地為每個任務安排時間。有一個CPU密集型程式可以以較低的優先順序執行嗎?然後你需要告訴排程程式有關它!
至少有三種方法可以控制程式獲得的CPU時間:
- 使用nice命令手動降低任務的優先順序。
- 使用cpulimit命令重複暫停執行程式,使其不超過某個限制。
- 使用Linux的內建控制組,這種機制告訴排程程式限制程式可用的資源量。
nice
nice命令調整程式的優先順序,使其執行頻率降低。當您需要將CPU密集型任務作為後臺或批處理作業執行時,這非常有用。程度範圍從-20(最有利的排程)到19(最不利的)。Linux上的程式預設情況下以0的良好狀態啟動。nice命令(沒有任何附加引數)將啟動一個程度為10的程式。在該級別,排程程式將其視為優先順序較低的任務併為其提供較少的CPU資源。
Nice有一個名為的相關命令renice。它改變了已經執行的程式的niceness級別。要使用它,找出佔用所有CPU時間的程式的PID(使用ps),然後執行renice:
renice +10 1234
其中1234是PID。
CPULimit
cpulimit工具透過以不同的間隔暫停程式來限制程式的CPU使用率,以使其保持在定義的上限之下。它透過向程式傳送SIGSTOP和SIGCONT訊號來實現此目的。它不會更改nice程式的值,而是監視和控制實際的CPU使用情況。
當您想要確保程式不使用超過CPU的某個部分時,cpulimit非常有用。
相比nice的缺點是當系統空閒時,程式無法使用所有可用的CPU時間。
安裝:
wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip unzip cpulimit.zip cd cpulimit-master make sudo cp src/cpulimit /usr/bin |
上面的命令將從GitHub下載原始碼,解壓縮歸檔檔案,構建二進位制檔案並將其複製到/usr/bin。
cpulimit的使用類似nice的方式,但是您需要使用'-l'引數顯式定義程式的最大CPU限制。
可以透過使用'-p'引數指定其PID來限制當前正在執行的程式。例如
cpulimit -l 50 -p 1234
其中1234是PID。
cgroup
控制組(cgroup)是Linux核心功能,允許您指定核心應如何將特定資源分配給一組程式。使用cgroup,您可以指定駐留在特定組中的程式可以使用多少CPU時間,系統記憶體,網路頻寬或這些資源的組合。
控制組的優勢超過nice或者cpulimit是限制應用於一組程式,而不是僅應用於一個程式。此外,nice或cpulimit僅限制程式的CPU使用率,而cgroup可以限制其他程式資源。
透過明智地使用cgroup,可以控制伺服器的整個子系統的資源。例如,在為大規模伺服器部署而設計的最小Linux發行版CoreOS中,升級過程由cgroup控制。這意味著下載和安裝系統更新不會影響系統效能。
相關文章
- Java程式CPU使用率高排查Java
- Linux檢視CPU使用率Linux
- CPU使用率低負載高負載
- 效能分析(2)- 應用程式 CPU 使用率過高案例
- Win10怎麼看cpu使用率?Win10檢視CPU使用率的方法Win10
- Linux中如何檢視CPU使用率?Linux
- 一文秒懂CPU使用率
- .netcore利用perf分析高cpu使用率NetCore
- cpu使用率過高問題(Java)Java
- win10怎麼減少cpu使用率_win10cpu使用率過高的解決方法Win10
- Linux中顯示記憶體和CPU使用率最高的程式的SHELL指令碼例子Linux記憶體指令碼
- 效能分析(3)- 短時程式導致使用者 CPU 使用率過高案例
- Oracle CPU使用率過高問題處理Oracle
- Win10系統中LSAISO程式CPU使用率過高如何解決Win10AI
- 如何使用 Docker 來限制 CPU、記憶體和 IO等資源?Docker記憶體
- Kubernetes中如何使用CPU請求和限制? - daniele
- kubectl 如何檢視 node、pod 的 cpu、RAM 使用率?
- PostgreSQL DBA(88) - Linux(CPU使用率 vs 平均負載)SQLLinux負載
- Oracle效能優化-資料庫CPU使用率100%Oracle優化資料庫
- 【Azure Developer】通過Azure提供的Azue Java JDK 查詢虛擬機器的CPU使用率和記憶體使用率DeveloperJavaJDK虛擬機記憶體
- Win10系統下IAStorDataSvc程式佔CPU使用率高怎麼解決Win10ASTC程式
- 系統空閒程式佔用大量CPU是什麼原因_系統空閒程式CPU使用率高怎麼解決
- CPU 使用率低高負載的原因,看看這篇!負載
- Google Chrome發現新Bug CPU使用率飆升至100%GoChrome
- win10系統中WMI程式佔用cpu使用率高怎麼解決Win10
- jvm 可以限制cpu嗎JVM
- CPU使用率的幾個重要指標含義列舉指標
- nodejs監聽cpu使用率、記憶體使用率,並通過socket.io與vue專案互動NodeJS記憶體Vue
- 案例:系統的 CPU 使用率很高,但為啥卻找不到高 CPU 的應用?
- 效能測試必備知識(7)- 深入理解“CPU 使用率”
- 從Node Redis遷移到Ioredis後CPU 使用率減少了 30% - AblyRedis
- 伺服器做了兩個優化 CPU 使用率減低 40%伺服器優化
- win10 gpu使用率為0怎麼辦_win10系統cpu使用率0的解決步驟Win10GPU
- 【小貼士】CPU使用率高速度慢的幾大因素
- [轉帖]流量一樣但為什麼CPU使用率差別很大
- 效能分析(5)- 軟中斷導致 CPU 使用率過高的案例
- 深入理解 Docker 核心原理:Namespace、Cgroups 和 RootfsDockernamespace
- 028、限制容器對CPU的使用(2019-01-23 週三)