偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用 nice、cpulimit 和cgroups 獲取進(jìn)程的 CPU 使用率

云計(jì)算
Linux內(nèi)核是一個(gè)令人難以置信的馬戲團(tuán)的表演者,可以很小心的玩弄許多進(jìn)程和它們的資源需求,來保證你的服務(wù)器一直嗡嗡作響。內(nèi)核也是關(guān)于公平的一切:當(dāng)有資源競(jìng)爭(zhēng)時(shí),內(nèi)核試圖公平的分發(fā)這些資源。 然而,如果你有一個(gè)需要優(yōu)先級(jí)的重要進(jìn)程怎么辦?一個(gè)低優(yōu)先級(jí)的進(jìn)程呢?或者,限制一組進(jìn)程的資源呢?

Linux內(nèi)核是一個(gè)令人難以置信的馬戲團(tuán)的表演者,可以很小心的玩弄許多進(jìn)程和它們的資源需求,來保證你的服務(wù)器一直嗡嗡作響。內(nèi)核也是關(guān)于公平的一切:當(dāng)有資源競(jìng)爭(zhēng)時(shí),內(nèi)核試圖公平的分發(fā)這些資源。

然而,如果你有一個(gè)需要優(yōu)先級(jí)的重要進(jìn)程怎么辦?一個(gè)低優(yōu)先級(jí)的進(jìn)程呢?或者,限制一組進(jìn)程的資源呢?

這需要你的幫助,因?yàn)闆]有你的幫助,內(nèi)核是無法知道哪些是CPU的關(guān)鍵進(jìn)程。

所有進(jìn)程最開始都擁有相同的優(yōu)先級(jí),Linux內(nèi)核會(huì)為每個(gè)任務(wù)分配均勻的CPU調(diào)度時(shí)間。總不能讓一個(gè)CPU密集型的進(jìn)程只運(yùn)行在低優(yōu)先級(jí)吧?所以,你需要告訴調(diào)度器你需要怎么樣的優(yōu)先級(jí)。

最少可以有三種方法來控制我們可以為進(jìn)程獲得多少CPU時(shí)間:

  • 使用 nice 命令手動(dòng)降低任務(wù)的優(yōu)先級(jí)。

  • 使用 cpulimit 命令來反復(fù)掛起進(jìn)程,使進(jìn)程不超過一定的時(shí)間限制。

  • 使用 Linux's 內(nèi)置的 control groups, control groups是一種告訴調(diào)度器去限制進(jìn)程能獲取的資源數(shù)量的機(jī)制。

下面我們來看一下這些方法如何工作,還有它們的優(yōu)缺點(diǎn)。

模擬CPU高使用率

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

因?yàn)樵贑entOS上并沒有現(xiàn)成的質(zhì)數(shù)生成器的包,所以我們需要手工編譯一下。從http://mathomatic.orgserve.de /mathomatic-16.0.5.tar.bz2 下載源碼,然后解壓。切換目錄到 mathomatic-16.0.5/primes. 運(yùn)行  make && sudo make install進(jìn)行編譯和安裝.完成后,可執(zhí)行文件就會(huì)在 /usr/local/bin 目錄下。

運(yùn)行下面的命令:

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

這個(gè)命令會(huì)生成一個(gè)從0到999999999的質(zhì)數(shù)列表。這個(gè)列表我們并不需要保存,所以結(jié)果輸出到 /dev/null。

現(xiàn)在運(yùn)行一個(gè)top命令,可以看到 matho-primes 進(jìn)程正在使用所有可用的CPU資源。

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

nice

nice 命令會(huì)調(diào)整進(jìn)程的優(yōu)先級(jí),這樣這個(gè)進(jìn)程就不會(huì)經(jīng)常運(yùn)行。當(dāng)你需要運(yùn)行一個(gè)CPU密集型的后臺(tái)任務(wù)或者批處理任務(wù)的時(shí)候,這是非常有用的。niceness 值(注:調(diào)度優(yōu)先級(jí))范圍從-20 (優(yōu)先級(jí)最高) 到 19 (優(yōu)先級(jí)最低)。 Linux上,進(jìn)程的優(yōu)先級(jí)默認(rèn)是0。nice命令(沒有額外參數(shù)) 會(huì)以10的優(yōu)先級(jí)來啟動(dòng)進(jìn)程。這個(gè)優(yōu)先級(jí)下,調(diào)度器會(huì)把這個(gè)任務(wù)看作一個(gè)低優(yōu)先級(jí)的任務(wù)并且分配較少的CPU資源。

啟動(dòng)兩個(gè)matho-primes任務(wù), 一個(gè)使用nice,一個(gè)不使用nice:

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

現(xiàn)在看一下 top 。

注意觀察沒有使用nice啟動(dòng)的進(jìn)程(優(yōu)先級(jí)為0的進(jìn)程)獲得了更多的處理器時(shí)間,相反,使用nice啟動(dòng),優(yōu)先級(jí)為10的進(jìn)程則獲得了很少處理器時(shí)間。

這有什么實(shí)際意義呢?如果你要運(yùn)行一個(gè)CPU密集型任務(wù),你可以使用nice啟動(dòng)它,接下來,調(diào)度器就總會(huì)讓其他任務(wù)的優(yōu)先級(jí)比它高。這意味著,即使服務(wù)器(或者桌面系統(tǒng))在高負(fù)荷下仍然能夠保持響應(yīng)。

Nice有一個(gè)相關(guān)的命令叫 renice。 這個(gè)命令可以重新改變一個(gè)正在運(yùn)行中的進(jìn)程的優(yōu)先級(jí)。使用方法,找出占用CPU時(shí)間的進(jìn)程的PID(使用ps命令),然后運(yùn)行 renice:

  1. renice +10 1234 

這里, 1234 就是進(jìn)程的PID.

在完成實(shí)驗(yàn)后,不要忘了使用niceand renice 把matho-primes都kill掉。

cpulimit

cpulimit工具通過在不同的時(shí)間間隔掛起進(jìn)程來限制進(jìn)程的CPU使用率,讓進(jìn)程在指定的上限中運(yùn)行。cpulimit程序通過發(fā)送 SIGSTOP 和 SIGCONT 信號(hào)給進(jìn)程來。這不會(huì)改變進(jìn)程的優(yōu)先級(jí),相反,它會(huì)監(jiān)控CPU的真實(shí)使用率。

當(dāng)你想保證進(jìn)程的CPU使用率在一定限度下的時(shí)候,cpulimit是很有用的。nice的缺點(diǎn)就是,當(dāng)系統(tǒng)空閑時(shí),進(jìn)程也不會(huì)使用所有可用的CPU時(shí)間。

在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 

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

cgroups

控制組(cgroups)是一個(gè)Linux內(nèi)核特性,它允許你指定內(nèi)核應(yīng)該如何給一個(gè)進(jìn)程組分配特定的資源。你可以用cgroups指定在某一個(gè)組中的進(jìn)程使用多少cpu時(shí)間、系統(tǒng)內(nèi)存、網(wǎng)絡(luò)帶寬,或者這些組合資源。

控制組相對(duì)于nice或cpulimit的優(yōu)勢(shì)在于,限制是針對(duì)一個(gè)進(jìn)程集合,而不只是一個(gè)進(jìn)程。還有,nice或cpulimit僅僅限制進(jìn)程的CPU使用率,而cgroups可以限制其他進(jìn)程資源。

審慎地使用cgroups使得一個(gè)服務(wù)器的完整子系統(tǒng)的資源可控。 例如在CoreOS中,為大規(guī)模服務(wù)器部署設(shè)計(jì)的Linux最小化發(fā)行,升級(jí)進(jìn)程是由一個(gè)cgroup控制。這意味著系統(tǒng)的下載和安裝不影響系統(tǒng)性能。

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

用cgcreate創(chuàng)建組的命令如下:

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

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

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

在cpulimted組中將cpu.shares設(shè)置成512:

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

使用cgexec命令啟動(dòng)一個(gè)cgroup任務(wù)。 為了測(cè)試這兩個(gè)組,在cpulimited組中啟動(dòng)matho-primes:

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

top命令顯示了cgroup中有更大cpu.shares值的進(jìn)程得到更多的CPU時(shí)間。

現(xiàn)在在cpulimited組中啟動(dòng)另一個(gè)matho-primes進(jìn)程:

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

觀察CPU是如何仍舊按2:1比例分配?,F(xiàn)在cpulimited組中的兩個(gè)matho-primes任務(wù)在均勻地共享CPU,而另一個(gè)組中的進(jìn)程仍然獲得了更多的處理器時(shí)間。

使用 Scout 監(jiān)控CPU使用率

監(jiān)控CPU使用率是簡(jiǎn)單的方法是什么? 在服務(wù)器上安裝了監(jiān)控agent后, Scout 會(huì)自動(dòng)跟蹤C(jī)PU和內(nèi)存使用的軌跡。

[[123497]]

你還可以創(chuàng)建觸發(fā)器,當(dāng)進(jìn)程超過指定的CPU和內(nèi)存使用率上限的時(shí)候提醒你。

TL;DR

[[123499]]

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

  • nice ,一個(gè)很好的工具來“一次性”調(diào)整系統(tǒng)。

  • cpulimit ,當(dāng)你需要運(yùn)行CPU密集型任務(wù),但是CPU空閑時(shí)間對(duì)系統(tǒng)的快速響應(yīng)又很重要的時(shí)候,cpulimit非常有用。

  • cgroups 是限制進(jìn)程的瑞士軍刀,它為系統(tǒng)提供了極大的靈活性。

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

責(zé)任編輯:Ophira 來源: 開源中國(guó)社區(qū)
相關(guān)推薦

2024-04-11 13:27:19

Linuxtop命令

2019-01-15 15:04:54

CPU電腦使用率

2009-11-16 17:03:20

Oracle優(yōu)化CPU

2021-11-11 16:46:02

CPU使用率 .NET

2019-09-10 08:13:33

LinuxCPU內(nèi)存

2009-12-15 15:12:05

Linux限制進(jìn)程cp

2021-06-21 06:16:50

cpulimitCPULinux

2017-05-03 11:10:14

Linux進(jìn)程監(jiān)控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

2022-04-06 06:35:58

進(jìn)程命令CPU

2010-04-27 10:32:54

Oracle優(yōu)化CPU

2019-01-28 10:23:58

CPU使用率Linux

2020-07-08 07:00:00

LinuxCPU應(yīng)用程序

2019-09-24 14:52:35

CPU負(fù)載Linux

2010-04-12 11:21:35

Oracle優(yōu)化CPU

2023-03-06 08:41:32

CPU使用率排查
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)