使用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
- weblogic程式高CPU使用率分析WebC程式
- cpu 使用率和負載的關係和區別負載
- Cgroups控制cpu,記憶體,io示例記憶體
- CPU使用率低負載高負載
- Linux檢視CPU使用率Linux
- C++獲取CPU使用率C++
- Win10怎麼看cpu使用率?Win10檢視CPU使用率的方法Win10
- 效能分析(2)- 應用程式 CPU 使用率過高案例
- cpu使用率過高問題(Java)Java
- linux 使用 ionice 限制 Xen 虛擬機器磁碟 IOLinux虛擬機
- win10怎麼減少cpu使用率_win10cpu使用率過高的解決方法Win10
- 在 Ubuntu 14.04 下使用 cgroups 和 DockerUbuntuDocker
- Linux中如何檢視CPU使用率?Linux
- cpu使用率低負載高,原因分析負載
- 關於CPU使用率高的awr分析
- Linux系統CPU和記憶體使用率統計命令Linux記憶體
- linux命令:killjobsnicerenicebgfg程式管理Linux
- 效能分析(3)- 短時程式導致使用者 CPU 使用率過高案例
- Oracle CPU使用率過高問題處理Oracle
- .netcore利用perf分析高cpu使用率NetCore
- Linux中顯示記憶體和CPU使用率最高的程式的SHELL指令碼例子Linux記憶體指令碼
- 如何使用 Docker 來限制 CPU、記憶體和 IO等資源?Docker記憶體
- Win10系統中LSAISO程式CPU使用率過高如何解決Win10AI
- 如何解決cpu使用率過高的問題
- 差SQL引起CPU使用率100%的效能分析SQL
- [勝通]程式優先順序和程式nice值?
- 【Azure Developer】通過Azure提供的Azue Java JDK 查詢虛擬機器的CPU使用率和記憶體使用率DeveloperJavaJDK虛擬機記憶體
- Win10系統下IAStorDataSvc程式佔CPU使用率高怎麼解決Win10ASTC程式
- java透過ip獲取遠端伺服器cpu使用率的程式碼Java伺服器
- 系統空閒程式佔用大量CPU是什麼原因_系統空閒程式CPU使用率高怎麼解決
- Oracle效能優化-資料庫CPU使用率100%Oracle優化資料庫
- CPU 使用率低高負載的原因,看看這篇!負載
- PostgreSQL DBA(88) - Linux(CPU使用率 vs 平均負載)SQLLinux負載
- WindowsXP系統CPU使用率100%解決辦法Windows
- 如何定位死迴圈或高CPU使用率(linux)Linux
- jvm 可以限制cpu嗎JVM
- Docker CPU資源限制Docker