Linux上下文切換監控
我們在監測Linux的應用的時候,當CPU的利用率非常高,但是系統的性能卻上不去的時候,不妨監控一下線程/進程的切換,看看是不是context switching導致的overhead過高。
一般我使用 dstat 工具用來監控,比如 dstat -y :
---system-- intcsw 367561 274439 279363
或者 vmstat 3 :
[root@colobusmallnest]#vmstat3 procs-----------memory-------------swap-------io------system-------cpu----- rbswpdfreebuffcachesisobiboincsussyidwast 000312619231692152161200176325166258119630
但是如何知道那些進程/線程做切換能,淘寶褚霸有篇文章: latencytop深度了解你的Linux系統的延遲 介紹了一種方法。事實上,有一個工具 pidstat ,可以用來監控上下文切換。 它是 sysstat 包其中的一個工具,sysstat包含好幾個很棒的工具,比如sar、iostat等。
執行 pidstat -w
root@abcsmallnest]# pidstat -w Linux2.6.32-358.el6.x86_64 (abc)04/11/2016_x86_64_(2CPU) 11:25:00PMPIDcswch/s nvcswch/sCommand 11:25:00PM10.600.03init 11:25:00PM20.040.00kthreadd 11:25:00PM30.360.00migration/0 11:25:00PM40.580.00ksoftirqd/0 11:25:00PM50.010.00migration/0 11:25:00PM60.080.00watchdog/0 11:25:00PM70.390.00migration/1 11:25:00PM80.010.00migration/1 11:25:00PM90.520.00ksoftirqd/1 ……
cswch/s 是主動地上下文切換, nvcswch/s 是被動執行上下文切換的次數。
如要要顯示線程的上下文切換統計,可以執行``:
[root@abc allnest]# pidstat -wt Linux 2.6.32-358.el6.x86_64 (abc)04/11/2016_x86_64_ (2CPU) 11:27:57PM TGID TID cswch/s nvcswch/s Command 11:27:57PM1-0.560.03init 11:27:57PM -10.560.03|__init 11:27:57PM2-0.030.00kthreadd 11:27:57PM -20.030.00|__kthreadd 11:27:57PM3-0.340.00migration/0 11:27:57PM -30.340.00|__migration/0 11:27:57PM4-0.570.00ksoftirqd/0 11:27:57PM -40.570.00|__ksoftirqd/0 11:27:57PM5-0.010.00migration/0 ……
更多的參數可以 man pidstat 獲得。
本文由用戶 zhangferry 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!