top命令詳解之深入了解CPU

2021-09-20 19:42:05 字數 1929 閱讀 9426

top 

taskset

所謂綁核,其實就是設定某個程序/執行緒與某個cpu核的親和力(affinity)。設定以後,linux排程器就會讓這個程序/執行緒只在所繫結的核上面去執行。

但並不是說該程序/執行緒就獨佔這個cpu的核,其他的程序/執行緒還是可以在這個核上面執行的。如果想要實現某個程序/執行緒獨佔某個核,就要使用cpuset命令去實現。

其實,很多情況下,為了提高效能,linux排程器會自動的實現盡量讓某個程序/執行緒在同樣的cpu上去執行。所以,除非必須,我們沒有必要顯式的去程序綁核操作。

1、首先建立隔離核,在系統啟動的時候在intel_iommu=off那一行最後新增上isolcpus=2,3,4,5,6 隔離出5個核

2、系統啟動,檢查host上是否隔離成功,命令如下:

# ps –elo ruser,pid,ppid,lwp,psr,args | awk 『』

# ps –elo ruser,pid,ppid,lwp,psr,args | awk 『』

# ps –elo ruser,pid,ppid,lwp,psr,args | awk 『』

# ps –elo ruser,pid,ppid,lwp,psr,args | awk 『』通過檢視執行緒確定是否隔離,如果隔離成功,則只有幾個執行緒。

3、啟動虛擬機器之後,檢視qemu的執行緒

# ps –elo ruser,pid,ppid,lwp,psr,args | grep qemu | grep –v grep

4、繫結qemu的程序,繫結核

# taskset –p 0x4 28423

# taskset –p 0x8 28424

5、檢視qemu繫結是否生效

# ps –elo ruser,pid,ppid,lwp,psr,args | grep qemu | grep –v grep

6、檢視cpu2/3/4/5上執行的執行緒

# ps –elo ruser,pid,ppid,lwp,psr,args | awk 『』

編譯執行之後,輸入命令top -p 程序id,輸入f,輸入j,輸入回車,輸入h,可以看到主線程一直保持在cpu0,乙個執行緒在cpu12之前切換,另乙個執行緒在cpu34之間切換。

為程序繫結cpu

1.taskset

taskset用來檢視和設定「cpu親和力」,說白了就是檢視或者配置程序和cpu的繫結關係,讓某程序在指定的cpu核上執行,即是「綁核」。

2.taskset的用法

(1)顯示程序執行的cpu

taskset -p pid

注意,此命令返回的是十六進製制的,轉換成二進位制後,每一位對應乙個邏輯cpu,低位是0號cpu,依次類推。如果每個位置上是1,表示該程序繫結了該cpu。例如,0101就表示程序繫結在了0號和3號邏輯cpu上了

(2)綁核設定

taskset -pc 3  pid    表示將程序pid繫結到第3個核上(注:不用將3弄成二進位制的)

taskset -c 3 command   表示執行command命令,並將command啟動的程序繫結到第3個核上。

st 的全稱是 steal time ,就是 xen hypervisor 分配給執行在其它虛擬機器上的任務的實際  時間。

%st(steal time) 是當 hypervisor 服務另乙個虛擬處理器的時候,虛擬  等待實際  的時間的百分比。

steal 值比較高的話,需要向主機**商申請擴容虛擬機器。伺服器上的另乙個虛擬機器擁有更大更多的 cpu 時間片,需要申請公升級以與之競

爭。另外,高 steal 值也可能意味著主機**商在伺服器上過量地**虛擬機器。如果公升級了虛擬機器, steal 值還是不降的話,應該尋找另一家服務**商。

低 steal 值意味著應用程式在目前的虛擬機器上運作良好。因為虛擬機器不會經常地為了 cpu 時間與其它虛擬機器激烈競爭,虛擬機會更快地響應。主機**商沒有過量地**虛擬服務,絕對是一件好事情。

Ajax之深入了解

上一節,我們說了一些ajax的基礎知識,包括常用的get方法,現在,我們接著來講講post方法,以及利用get方法或post方法實現分頁顯示的功能。以下我們來說說get和post兩種方法的區別。詳見 get方法 建立ajax物件 建立鏈結 xhr.open get getcity?city city...

深入了解jQuery之整體架構

本文是在閱讀了aaron艾倫 先來看看如何生成乙個jquery物件,原始碼 var jquery function selector,context 當我們使用jquery something 或者 something 時,我們得到的是乙個 jquery.fn.init 物件。那麼jquery.fn...

深入了解Nginx之Nginx與Python(1)

fastcgi fast common gateway inte ce 是基於cgi上的改進,是cgi的一種演變產物。雖然目的是保持同樣的。fastcgi在cgi上提供了重大的提公升,通過建立起以下的原則。l 取代對於每乙個請求孵化乙個新程序,fastcgi採用持久化程序。伴隨著可以處理多個請求的能...