成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 nice、cpulimit 和cgroups 獲取進程的 CPU 使用率

云計算
Linux內核是一個令人難以置信的馬戲團的表演者,可以很小心的玩弄許多進程和它們的資源需求,來保證你的服務器一直嗡嗡作響。內核也是關于公平的一切:當有資源競爭時,內核試圖公平的分發這些資源。 然而,如果你有一個需要優先級的重要進程怎么辦?一個低優先級的進程呢?或者,限制一組進程的資源呢?

Linux內核是一個令人難以置信的馬戲團的表演者,可以很小心的玩弄許多進程和它們的資源需求,來保證你的服務器一直嗡嗡作響。內核也是關于公平的一切:當有資源競爭時,內核試圖公平的分發這些資源。

然而,如果你有一個需要優先級的重要進程怎么辦?一個低優先級的進程呢?或者,限制一組進程的資源呢?

這需要你的幫助,因為沒有你的幫助,內核是無法知道哪些是CPU的關鍵進程。

所有進程最開始都擁有相同的優先級,Linux內核會為每個任務分配均勻的CPU調度時間。總不能讓一個CPU密集型的進程只運行在低優先級吧?所以,你需要告訴調度器你需要怎么樣的優先級。

最少可以有三種方法來控制我們可以為進程獲得多少CPU時間:

  • 使用 nice 命令手動降低任務的優先級。

  • 使用 cpulimit 命令來反復掛起進程,使進程不超過一定的時間限制。

  • 使用 Linux's 內置的 control groups, control groups是一種告訴調度器去限制進程能獲取的資源數量的機制。

下面我們來看一下這些方法如何工作,還有它們的優缺點。

模擬CPU高使用率

在看這幾個方法前,我們需要找一個工具來模擬系統上CPU負載的情況。我們將使用CentOS作為測試操作系統,然后,為了能人為地加大處理器的負荷,我們可以使用來自Mathomatic toolkit 質數生成器。

因為在CentOS上并沒有現成的質數生成器的包,所以我們需要手工編譯一下。從http://mathomatic.orgserve.de /mathomatic-16.0.5.tar.bz2 下載源碼,然后解壓。切換目錄到 mathomatic-16.0.5/primes. 運行  make && sudo make install進行編譯和安裝.完成后,可執行文件就會在 /usr/local/bin 目錄下。

運行下面的命令:

  1. /usr/local/bin/matho-primes 0 9999999999 > /dev/null &  

這個命令會生成一個從0到999999999的質數列表。這個列表我們并不需要保存,所以結果輸出到 /dev/null。

現在運行一個top命令,可以看到 matho-primes 進程正在使用所有可用的CPU資源。

退出 top (按 q 鍵) ,然后kill掉matho-primes進程 (使用 fg命令把進程推到前臺,然后按 CTRL+C )。

nice

nice 命令會調整進程的優先級,這樣這個進程就不會經常運行。當你需要運行一個CPU密集型的后臺任務或者批處理任務的時候,這是非常有用的。niceness 值(注:調度優先級)范圍從-20 (優先級最高) 到 19 (優先級最低)。 Linux上,進程的優先級默認是0。nice命令(沒有額外參數) 會以10的優先級來啟動進程。這個優先級下,調度器會把這個任務看作一個低優先級的任務并且分配較少的CPU資源。

啟動兩個matho-primes任務, 一個使用nice,一個不使用nice:

  1. nice matho-primes 0 9999999999 > /dev/null & 
  2. matho-primes 0 9999999999 > /dev/null & 

現在看一下 top 。

注意觀察沒有使用nice啟動的進程(優先級為0的進程)獲得了更多的處理器時間,相反,使用nice啟動,優先級為10的進程則獲得了很少處理器時間。

這有什么實際意義呢?如果你要運行一個CPU密集型任務,你可以使用nice啟動它,接下來,調度器就總會讓其他任務的優先級比它高。這意味著,即使服務器(或者桌面系統)在高負荷下仍然能夠保持響應。

Nice有一個相關的命令叫 renice。 這個命令可以重新改變一個正在運行中的進程的優先級。使用方法,找出占用CPU時間的進程的PID(使用ps命令),然后運行 renice:

  1. renice +10 1234 

這里, 1234 就是進程的PID.

在完成實驗后,不要忘了使用niceand renice 把matho-primes都kill掉。

cpulimit

cpulimit工具通過在不同的時間間隔掛起進程來限制進程的CPU使用率,讓進程在指定的上限中運行。cpulimit程序通過發送 SIGSTOP 和 SIGCONT 信號給進程來。這不會改變進程的優先級,相反,它會監控CPU的真實使用率。

當你想保證進程的CPU使用率在一定限度下的時候,cpulimit是很有用的。nice的缺點就是,當系統空閑時,進程也不會使用所有可用的CPU時間。

在CentOS上安裝cpulimit的方法:

  1. wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip 
  2. unzip cpulimit.zip 
  3. cd cpulimit-master 
  4. make 
  5. sudo cp src/cpulimit /usr/bin 

這個命令會從GitHub下載源碼,解壓,然后編譯,拷貝文件到/usr/bin目錄下。

cgroups

控制組(cgroups)是一個Linux內核特性,它允許你指定內核應該如何給一個進程組分配特定的資源。你可以用cgroups指定在某一個組中的進程使用多少cpu時間、系統內存、網絡帶寬,或者這些組合資源。

控制組相對于nice或cpulimit的優勢在于,限制是針對一個進程集合,而不只是一個進程。還有,nice或cpulimit僅僅限制進程的CPU使用率,而cgroups可以限制其他進程資源。

審慎地使用cgroups使得一個服務器的完整子系統的資源可控。 例如在CoreOS中,為大規模服務器部署設計的Linux最小化發行,升級進程是由一個cgroup控制。這意味著系統的下載和安裝不影響系統性能。

為了演示cgroups,我們將創建兩個擁有不同CPU資源分配的組,分別叫做‘cpulimited’和‘lesscpulimited’;

用cgcreate創建組的命令如下:

  1. sudo cgcreate -g cpu:/cpulimited 
  2. sudo cgcreate -g cpu:/lesscpulimited 

命令的"-g cpu'部分告訴cgroups,可以對該組中的進程設置CPU資源分配限制,其他控制包括cpuset,memory和blkio。cpuset控制在允許一個組中進程綁定到一個指定的CPU或CPU核集中和cpu控制相關。

cpu控制有一個屬性是cpu.shares。內核用它決定cgroups中進程間可用的CPU共享資源,默認值是1024。一個組(lesscpulimited)使用默認值1024,另一個組(cpulimited)設置成512,內核按2:1比例劃分CPU資源。

在cpulimted組中將cpu.shares設置成512:

  1. sudo cgset -r cpu.shares=512 cpulimited 

使用cgexec命令啟動一個cgroup任務。 為了測試這兩個組,在cpulimited組中啟動matho-primes:

  1. sudo cgexec -g cpu:lesscpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null 

top命令顯示了cgroup中有更大cpu.shares值的進程得到更多的CPU時間。

現在在cpulimited組中啟動另一個matho-primes進程:

  1. sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null

觀察CPU是如何仍舊按2:1比例分配。現在cpulimited組中的兩個matho-primes任務在均勻地共享CPU,而另一個組中的進程仍然獲得了更多的處理器時間。

使用 Scout 監控CPU使用率

監控CPU使用率是簡單的方法是什么? 在服務器上安裝了監控agent后, Scout 會自動跟蹤CPU和內存使用的軌跡。

[[123497]]

你還可以創建觸發器,當進程超過指定的CPU和內存使用率上限的時候提醒你。

TL;DR

[[123499]]

任務服務器或者桌面系統的有限資源都是寶貴的。上面說的這些工具可以幫你有效地管理這些資源,特別是CPU資源:

  • nice ,一個很好的工具來“一次性”調整系統。

  • cpulimit ,當你需要運行CPU密集型任務,但是CPU空閑時間對系統的快速響應又很重要的時候,cpulimit非常有用。

  • cgroups 是限制進程的瑞士軍刀,它為系統提供了極大的靈活性。

原文出自:http://www.oschina.net/translate/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups

責任編輯:Ophira 來源: 開源中國社區
相關推薦

2024-04-11 13:27:19

Linuxtop命令

2019-01-15 15:04:54

CPU電腦使用率

2009-11-16 17:03:20

Oracle優化CPU

2021-11-11 16:46:02

CPU使用率 .NET

2019-09-10 08:13:33

LinuxCPU內存

2009-12-15 15:12:05

Linux限制進程cp

2021-06-21 06:16:50

cpulimitCPULinux

2017-05-03 11:10:14

Linux進程監控cpustat

2021-05-31 15:53:57

CPU Top命令

2021-08-10 11:45:57

topCPULinux

2010-01-18 10:13:08

VB.NET獲取CPU

2022-07-23 21:31:24

KubernetesLinux開源

2009-12-22 09:23:59

Linux Sysst

2010-04-27 10:32:54

Oracle優化CPU

2022-04-06 06:35:58

進程命令CPU

2019-01-28 10:23:58

CPU使用率Linux

2020-07-08 07:00:00

LinuxCPU應用程序

2019-09-24 14:52:35

CPU負載Linux

2010-04-12 11:21:35

Oracle優化CPU

2023-03-06 08:41:32

CPU使用率排查
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人福利片 | 高清免费av | 91精品国产高清一区二区三区 | 永久免费在线观看 | 国产精品成人一区二区三区夜夜夜 | 中文字幕亚洲欧美日韩在线不卡 | 久久中文一区二区 | 激情一区二区三区 | 综合久 | 日韩av一区二区在线观看 | 久久久精品网 | 久久99精品久久久 | 色综合一区二区 | 日韩精品一区二区在线观看 | 午夜影院在线观看视频 | 午夜精品一区二区三区三上悠亚 | 国产夜恋视频在线观看 | 男女羞羞免费视频 | 日韩中文字幕视频在线观看 | 国产精品揄拍一区二区 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 成人亚洲精品 | 欧美中文字幕一区二区三区亚洲 | 日韩久久久久久 | 日韩无 | 国产伦精品一区二区三区精品视频 | 精品少妇一区二区三区在线播放 | 久久精品免费观看 | 天天久| 亚洲国产成人av好男人在线观看 | 性一交一乱一透一a级 | 成人黄色三级毛片 | 九九精品在线 | 妹子干综合 | www.蜜桃av| 国产99久久精品一区二区永久免费 | 亚州av| 综合第一页 | 成人精品鲁一区一区二区 | 黄色在线免费播放 | 久草网站|