1. 程式人生 > >lmbench的使用方法 與CPU上下文切換的次數和時間(context switch)

lmbench的使用方法 與CPU上下文切換的次數和時間(context switch)

一、引言
要評價一個系統的效能,通常有不同的指標,相應的會有不同的測試方法和測試工具,一般來說為了確保測試結果的公平和權威性,會選用比較成熟的商業測試軟體。但在特定情形下,只是想要簡單比較不同系統或比較一些函式庫效能時,也能夠從開源世界裡選用一些優秀的工具來完成這個任務,本文就通過lmbench 簡要介紹系統綜合性能測試。

二、測試軟體 Lmbench是一套簡易,可移植的,符合ANSI/C標準為UNIX/POSIX而制定的微型測評工具。一般來說,它衡量兩個關鍵特徵:反應時間和頻寬。Lmbench旨在使系統開發者深入瞭解關鍵操作的基礎成本。
軟體說明: lmbench是個用於評價系統綜合性能的多平臺開源benchmark,能夠測試包括文件讀寫、記憶體操作、程序建立銷燬開銷、網路等效能,測試方法
簡單。
Lmbench是個多平臺軟體,因此能夠對同級別的系統進行比較測試,反映不同系統的優劣勢,通過選擇不同的庫函式我們就能夠比較庫函式的效能;更為重要的是,作為一個開源軟體,lmbench提供一個測試框架,假如測試者對測試專案有更高的測試需要,能夠通過少量的修改原始碼達到目的(比如現在只能評測程序建立、終止的效能和程序轉換的開銷,通過修改部分程式碼即可實現執行緒級別的效能測試)。
下載:
www.bitmover.com/lmbench,最新版本3.0-a9
LMbench的主要功能: *頻寬測評工具 —讀取快取檔案 —拷貝記憶體 —讀記憶體 —寫記憶體 —管道 TCP
    * 反應時間測評工具 —上下文切換 —網路:連線的建立,管道,TCPUDPRPC hot potato —檔案系統的建立和刪除 —程序建立 —訊號處理 —上層的系統呼叫 —記憶體讀入反應時間     * 其他 —處理器時鐘比率計算 LMbench的主要特性: —對於作業系統的可移植性測試 評測工具是由C語言編寫的,具有較好的可移植性(儘管它們更易於被GCC編譯)。這對於產生系統間逐一明細的對比結果是有用的。 —自適應調整 Lmbench對於應激性行為是非常有用的。當遇到BloatOS比所有競爭者慢4倍的情況時,這個工具會將資源進行分配來修正這個問題。 —資料庫計算結果
資料庫的計算結果包括了從大多數主流的計算機工作站製造商上的執行結果。 —儲存器延遲計算結果 儲存器延遲測試展示了所有系統(資料)的快取延遲,例如一級,二級和三級快取,還有記憶體和TLB表的未命中延遲。另外,快取的大小可以被正確劃分成一些結果集並被讀出。硬體族與上面的描述相象。這種測評工具已經找到了作業系統分頁策略的中的一些錯誤。 —上下文轉換計算結果 很多人好象喜歡上下文轉換的數量。這種測評工具並不是特別注重僅僅引用“在快取中”的數量。它時常在程序數量和大小間進行變化,並且在當前內容不在快取中的時候,將結果以一種對使用者可見的方式進行劃分。您也可以得到冷快取上下文切換的實際開銷。 —迴歸測試    Sun公司和SGI公司已經使用這種測評工具以尋找和補救存在於效能上的問題。    Intel公司在開發P6的過程中,使用了它們。    LinuxLinux的效能調整中使用了它們。 —新的測評工具 原始碼是比較小的,可讀並且容易擴充套件。它可以按常規組合成不同的形式以測試其他內容。舉例來說,如包括處理連線建立的庫函式的網路測量,伺服器關閉等。
三、測試 在此次測試中我分兩種測試,一個是在我的pc機上測試的,一個是在SEP4020的arm720t平臺上測試的: (1)     在pc機上的測試
測試平臺:HP compoq,fedora 7 Linux 2.6.21
1、  確認安裝了C編譯器,假如沒有需要先安裝
2、  拷貝lmbench原始碼文件lmbench-3.0-a9.tgz到fedora的/root/test目錄下,解壓到當前目錄即可
3、  cd lmbench-3.0-a9,在命令列鍵入make results即可開始編譯測試
4、  假如編譯沒有錯誤,會出現一些選擇提示以對測試進行一個配置並生成配置指令碼,後續的測試將使用該配置指令碼,在以後測試中也能夠直接使用同樣的配置多次測試。配置提示除了測試的記憶體範圍(如“MB [default 371]”時,對記憶體較大的應該避免選擇太大值,否則測試時間會很長)和是否Mail results外,基本上都能夠選擇預設值。
5、  Lmbench根據配置文件執行任何測試項,在results目錄下根據系統型別、系統名和作業系統型別等生成一個子目錄,測試結果文件(system name+序號)存放於該目錄下。
6、  測試完畢執行make see可檢視到測試結果報告,則可以將測試資料/results/i686-pc-linux-gnu/目錄下的檔案匯出為測試報告/results/summary.out檔案,我們檢視summary.out檔案就可以看測試結果了。 (2)    在SEP4020上的測試
測試平臺:SEP4020 evb1.5, Linux 2.6.16
1、  確認宿主機上安裝了交叉編譯編譯器arm-linux-gcc,假如沒有需要先安裝
2、  拷貝lmbench原始碼文件lmbench-3.0-a9.tgz到fedora的/root/test目錄下,解壓到當前目錄即可
3、  cd lmbench-3.0-a9,在命令列鍵入make CC=arm-linu-gcc OS=arm-linux 即可開始編譯測試用例,編譯完成後,會在/root/test/lmbench-3.0-a9/bin下出現一個arm-linux目錄,在這個目錄下就是測試用例的目標檔案。由於我們的目標平臺不支援make命令,所以我們必須另外寫一個執行指令碼,腳步名為run_all.sh,放在scripts下面,內容是: #!/bin/sh echo run the lmbench on sep4020 arm-linux env OS=arm-linux ./config-run env OS=arm-linux ./results
4、  然後將整個lmbench-3.0-a9目錄拷貝到目標機的nfs根目錄下面,然後進入目標機的串列埠終端,在/lmbench-3.0-a9/scripts下面輸入./run_all.sh 假如交叉編譯沒有錯誤,會出現一些選擇提示以對測試進行一個配置並生成配置指令碼,後續的測試將使用該配置指令碼,在以後測試中也能夠直接使用同樣的配置多次測試。配置提示除了測試的記憶體範圍(如“MB [default 19]”時,對記憶體較大的應該避免選擇太大值,否則測試時間會很長)和是否Mail results外,基本上都能夠選擇預設值。
5、  Lmbench根據配置文件執行任何測試項,在results目錄下根據系統型別、系統名和作業系統型別等生成一個子目錄,測試結果文件(system name+序號)存放於該目錄下。
6、  測試完畢執行,在虛擬機器fedora7中進入/nfs/lmbench-3.0-a9 鍵入make see命令可生成測試結果報告,它可以將測試資料/results/i686-pc-linux-gnu/目錄下的檔案匯出為測試報告/results/summary.out檔案,我們檢視summary.out檔案就可以看測試結果了。 四、關於測試結果及說明
make[1]: Entering directory `/nfs/lmbench-3.0-a9/results'
                 L M B E N C H  3 . 0   S U M M A R Y
                 ------------------------------------
   (Alpha software, do not distribute)
Basic system parameters
------------------------------------------------------------------------------
Host                 OS Description              Mhz  tlb  cache  mem   scal
                                                     pages line   par   load
                                                           bytes  
--------- ------------- ----------------------- ---- ----- ----- ------ ----
192.168.0  Linux 2.6.16               arm-linux   85    60     8 1.0000    1
192.168.0  Linux 2.6.27               arm-linux   86    63    16 1.0000    1
192.168.0  Linux 2.6.16               arm-linux   86    63    16 1.0000    1
192.168.0  Linux 2.6.16               arm-linux   86    63    16 1.0000    1
192.168.0  Linux 2.6.16               arm-linux   86    63    16 1.0000    1
localhost Linux 2.6.21-       i686-pc-linux-gnu 1817     8   128 1.3300    1
localhost Linux 2.6.21-       i686-pc-linux-gnu 1864     8   128 1.2900    1
Processor, Processes - times in microseconds - smaller is better
------------------------------------------------------------------------------
Host                 OS  Mhz null null      open slct sig  sig  fork exec sh  
                             call  I/O stat clos TCP  inst hndl proc proc proc
--------- ------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
192.168.0  Linux 2.6.16   85 2.04 8.44 187. 2064      21.0 81.2 9655 42.K 63.K
192.168.0  Linux 2.6.27   86 2.69 8.44 266. 5338      20.7 94.7 10.K 44.K 73.K
192.168.0  Linux 2.6.16   86 2.03 8.34 185. 5100      20.7 85.9 9468 63.K 121K
192.168.0  Linux 2.6.16   86 2.03 8.72 185. 19.K      20.7 84.9 9556 53.K 72.K
192.168.0  Linux 2.6.16   86 2.04 8.33 185. 5321      20.7 80.5 9395 42.K 101K
localhost Linux 2.6.21- 1817 1.11 1.26 3.08 5.17 10.2 1.70 2.85 674. 1922 5177
localhost Linux 2.6.21- 1864 1.09 1.26 2.98 5.05 8.94 1.48 3.27 1083 2086 6119
Basic integer operations - times in nanoseconds - smaller is better
-------------------------------------------------------------------
Host                 OS  intgr intgr  intgr  intgr  intgr  
                          bit   add    mul    div    mod   
--------- ------------- ------ ------ ------ ------ ------ 
192.168.0  Linux 2.6.16   11.6 8.6900   52.1 1489.3  255.9
192.168.0  Linux 2.6.27   11.5 8.5800   52.2 1469.2  252.6
192.168.0  Linux 2.6.16   11.5 8.5400   52.2 1472.0  252.9
192.168.0  Linux 2.6.16   11.5 8.6200   52.0 1472.8  251.9
192.168.0  Linux 2.6.16   11.5 8.6400   52.2 1472.5  254.5
localhost Linux 2.6.21- 0.5600 0.2800 0.2000   20.6   10.9
localhost Linux 2.6.21- 0.6100 0.2700 0.1700   20.0 9.8600
Basic uint64 operations - times in nanoseconds - smaller is better
------------------------------------------------------------------
Host                 OS int64  int64  int64  int64  int64  
                         bit    add    mul    div    mod   
--------- ------------- ------ ------ ------ ------ ------ 
192.168.0  Linux 2.6.16    23.         691.6 4295.6 3895.0
192.168.0  Linux 2.6.27    23.         685.4 4192.8 4074.3
192.168.0  Linux 2.6.16    23.         683.0 4199.0 4082.1
192.168.0  Linux 2.6.16    23.         680.7 4202.6 4082.9
192.168.0  Linux 2.6.16    23.         686.9 4235.7 4080.3
localhost Linux 2.6.21-  0.690        0.6200   34.5   41.4
localhost Linux 2.6.21-  0.660        0.6100   36.8   40.2
Basic float operations - times in nanoseconds - smaller is better
-----------------------------------------------------------------
Host                 OS  float  float  float  float
                         add    mul    div    bogo
--------- ------------- ------ ------ ------ ------ 
192.168.0  Linux 2.6.16 6902.1 7781.9  12.1K  42.2K
192.168.0  Linux 2.6.27 6911.0 6568.4  11.6K  43.0K
192.168.0  Linux 2.6.16 6757.4 7578.5  11.9K  43.5K
192.168.0  Linux 2.6.16 6763.1 7611.3  11.7K  43.5K
192.168.0  Linux 2.6.16 6759.3 7640.4  11.9K  43.5K
localhost Linux 2.6.21- 1.6600 2.7900   21.7   20.6
localhost Linux 2.6.21- 1.6300 2.7200   20.9   20.1
Basic double operations - times in nanoseconds - smaller is better
------------------------------------------------------------------
Host                 OS  double double double double
                         add    mul    div    bogo
--------- ------------- ------  ------ ------ ------ 
192.168.0  Linux 2.6.16 9955.5  10.6K  22.8K  79.8K
192.168.0  Linux 2.6.27 9157.0 9909.4  20.6K  79.4K
192.168.0  Linux 2.6.16 9793.3  10.3K  22.4K  79.8K
192.168.0  Linux 2.6.16 9703.9  10.4K  22.2K  79.9K
192.168.0  Linux 2.6.16 9746.9  10.3K  22.3K  79.7K
localhost Linux 2.6.21- 1.6900 2.7900   21.2   20.6
localhost Linux 2.6.21- 1.6300 2.8800   21.0   20.2
Context switching - times in microseconds - smaller is better
-------------------------------------------------------------------------
Host                 OS  2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K
                         ctxsw  ctxsw  ctxsw ctxsw  ctxsw   ctxsw   ctxsw
--------- ------------- ------ ------ ------ ------ ------ ------- -------
192.168.0  Linux 2.6.16  164.8  120.0  311.9  165.3  162.5   165.9   151.1
192.168.0  Linux 2.6.27  247.5  196.1  198.4  238.0  254.9   262.9   291.2
192.168.0  Linux 2.6.16  164.4  118.5  115.2  161.1  156.4   164.4   164.3
192.168.0  Linux 2.6.16  167.2  116.6  119.6  166.9  161.9   171.3   158.1
192.168.0  Linux 2.6.16  172.5  117.4  114.3  161.3  147.6   163.8   127.5
localhost Linux 2.6.21-   11.0   11.6   11.7   15.3   19.2    16.8    25.1
localhost Linux 2.6.21-   10.2   11.4   11.3   14.3   20.9    17.4    26.0
*Local* Communication latencies in microseconds - smaller is better
---------------------------------------------------------------------
Host                 OS 2p/0K  Pipe AF     UDP  RPC/   TCP  RPC/ TCP
                        ctxsw       UNIX         UDP         TCP conn
--------- ------------- ----- ----- ---- ----- ----- ----- ----- ----
192.168.0  Linux 2.6.16 164.8 482.3 925.                             
192.168.0  Linux 2.6.27 247.5 770.7 1069                             
192.168.0  Linux 2.6.16 164.4 477.4 917.                             
192.168.0  Linux 2.6.16 167.2 472.9 926.                             
192.168.0  Linux 2.6.16 172.5 474.9 913.                             
localhost Linux 2.6.21-  11.0  28.3 50.8  45.9  55.2  48.2  59.8 126.
localhost Linux 2.6.21-  10.2  32.1 55.7  36.7  49.2  40.2  53.1 113.
*Remote* Communication latencies in microseconds - smaller is better
---------------------------------------------------------------------
Host                 OS   UDP  RPC/  TCP   RPC/ TCP
                               UDP         TCP  conn
--------- ------------- ----- ----- ----- ----- ----
192.168.0  Linux 2.6.16                             
192.168.0  Linux 2.6.27                             
192.168.0  Linux 2.6.16                             
192.168.0  Linux 2.6.16                             
192.168.0  Linux 2.6.16                             
localhost Linux 2.6.21-                             
localhost Linux 2.6.21-                             
File & VM system latencies in microseconds - smaller is better
-------------------------------------------------------------------------------
Host                 OS   0K File      10K File     Mmap    Prot   Page   100fd
                        Create Delete Create Delete Latency Fault  Fault  selct
--------- ------------- ------ ------ ------ ------ ------- ----- ------- -----
192.168.0  Linux 2.6.16 6410.3 6135.0  37.0K 6896.6  5112.0 3.124    36.8 280.8
192.168.0  Linux 2.6.27  18.9K  71.4K  55.6K  28.6K   16.2K  15.9    54.2 194.3
192.168.0  Linux 2.6.16  22.7K  15.4K 1000.K  47.6K  4926.0 5.213    37.1 284.2
192.168.0  Linux 2.6.16  31.2K  29.4K  41.7K  50.0K  4907.0 1.087    36.0 277.1
192.168.0  Linux 2.6.16  33.3K  25.0K  58.8K 9434.0  5108.0 9.428    37.1 285.6
localhost Linux 2.6.21-  112.0   12.4   88.5  130.8  7413.0 2.360 5.98870 4.635
localhost Linux 2.6.21-   36.1   19.0  181.2  138.4  9006.0 2.134   482.1 4.148
*Local* Communication bandwidths in MB/s - bigger is better
-----------------------------------------------------------------------------
Host                OS  Pipe AF    TCP  File   Mmap  Bcopy  Bcopy  Mem   Mem
                             UNIX      reread reread (libc) (hand) read write
--------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- -----
192.168.0  Linux 2.6.16 10.2 11.2        13.1   32.8   19.1   17.8 32.8  72.9
192.168.0  Linux 2.6.27 8.96 11.4        12.9   32.6   19.1   17.7 32.7  71.2
192.168.0  Linux 2.6.16 10.2 11.2        13.0   32.8   19.0   17.8 32.7  71.2
192.168.0  Linux 2.6.16 10.2 11.2        12.9   32.9   19.0   17.8 32.9  71.6
192.168.0  Linux 2.6.16 10.2 11.2        12.9   32.9   19.0   17.8 32.7  71.6
localhost Linux 2.6.21- 1153 436. 640. 1742.8 3463.7 1239.0 1116.5 3502 1589.
localhost Linux 2.6.21- 1194 451. 744. 1742.3 3443.5 1217.8 1159.0 3357 1555.
Memory latencies in nanoseconds - smaller is better
    (WARNING - may not be correct, check graphs)
------------------------------------------------------------------------------
Host                 OS   Mhz   L1 $   L2 $    Main mem    Rand mem    Guesses
--------- -------------   ---   ----   ----    --------    --------    -------
192.168.0  Linux 2.6.16    85   33.6  293.4       296.6       856.8    No L2 cache?
192.168.0  Linux 2.6.27    86   35.2  293.8       309.8       863.1    No L2 cache?
192.168.0  Linux 2.6.16    86   35.4  293.7       310.3       861.4    No L2 cache?
192.168.0  Linux 2.6.16    86   35.4  293.7       309.9       863.6    No L2 cache?
192.168.0  Linux 2.6.16    86   35.4  293.6       308.2       860.2    No L2 cache?
localhost Linux 2.6.21-  1817 1.6620 7.9160        98.6       191.7
localhost Linux 2.6.21-  1864 1.7240 7.7130       104.3       205.4
make[1]: Leaving directory `/nfs/lmbench-3.0-a9/results'

主要技術引數說明:

分類

其中host為localhost 說明是我用的虛擬機器,而192.168.0則說明是用4020進行的測試
技術引數
引數說明
(1)Basic system parameters(系統基本引數)
Tlb pages:TLB(Translation Lookaside Buffer)的頁面數
Cache line bytes :(cache的行位元組數)
Mem par
memory hierarchy parallelism
Scal load:並行的lmbench
(2)Processor, Processes(處理器、程序操作時間)
Null call:簡單系統呼叫(取程序號)
Null I/O:簡單IO操作(空讀寫的平均)
Stat:取文件狀態的操作
Open clos:開啟然後立即關閉關閉文件操作
Slct tcp
Select:配置
Sig inst:配置訊號
Sig hndl:捕獲處理訊號
Fork proc :Fork程序後直接退出
Exec proc:Fork後執行execve呼叫再退出
Sh proc:Fork後執行shell再退出
(3)Basic integer/float/double operations


(4)Context switching 上下文切換時間
2p/16K: 表示2個並行處理16K大小的資料

(5)*Local* Communication latencies(本地通訊延時,通過不同通訊方式傳送後自己立即讀)
Pipe:管道通訊
AF UNIX
Unix協議
UDP
UDP
RPC/UDP
TCP
RPC/TCP
TCP conn
TCP建立connect並關閉描述字
(6)File & VM system latencies(文件、記憶體延時)
File Create & Delete:建立並刪除文件
MMap Latency:記憶體對映
Prot Fault
Protect fault
Page Fault:缺頁
100fd selct:對100個文件描述符配置select的時間
(7)*Local* Communication bandwidths(本地通訊頻寬)
Pipe:管道操作
AF UNIX
Unix協議
TCP
TCP通訊
File reread:文件重複讀
MMap reread:記憶體對映重複讀
Bcopy(libc):記憶體拷貝
Bcopy(hand):記憶體拷貝
Mem read:記憶體讀
Mem write:記憶體寫
(8)Memory latencies(記憶體操作延時)
L1:快取1
L2:快取2
Main Mem:連續記憶體
Rand Mem:記憶體隨機訪問延時
Guesses
假如L1和L2近似,會顯示“No L1 cache?”
假如L2和Main Mem近似,會顯示“No L2 cache?”

        什麼是CPU上下文切換?

        現在linux是大多基於搶佔式,CPU給每個任務一定的服務時間,當時間片輪轉的時候,需要把當前狀態儲存下來,同時載入下一個任務,這個過程叫做上下文切換。時間片輪轉的方式,使得多個任務利用一個CPU執行成為可能,但是儲存現場和載入現場,也帶來了效能消耗。  那執行緒上下文切換的次數和時間以及效能消耗如何看呢?  

        

    ​    ​如何獲得上下文切換的次數?

         vmstat直接執行即可,在最後幾列,有CPU的context switch次數。 這個是系統層面的,加入想看特定程序的情況,可以使用pidstat。     

1 2 3 4 5 6 7 $ vmstat 1 100 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 0  0     88 233484 288756 1784744    0    0     0    23    0    0  4  1 94  0  0 4  0     88 233236 288756 1784752    0    0     0     0 6202 7880  4  1 96  0  0 2  0     88 233360 288756 1784800    0    0     0   112 6277 7612  4  1 95  0  0 0  0     88 232864 288756 1784804    0    

相關推薦

lmbench的使用方法 CPU上下文切換次數時間context switch

一、引言 要評價一個系統的效能,通常有不同的指標,相應的會有不同的測試方法和測試工具,一般來說為了確保測試結果的公平和權威性,會選用比較成熟的商業測試軟體。但在特定情形下,只是想要簡單比較不同系統或比較一些函式庫效能時,也能夠從開源世界裡選用一些優秀的工具來完成這個

CPU上下文切換次數時間context switch

分享 2.6 輸出 -c tar dsta make legacy RR 什麽是CPU上下文切換? 現在linux是大多基於搶占式,CPU給每個任務一定的服務時間,當時間片輪轉的時候,需要把當前狀態保存下來,同時加載下一個任務,這個過程叫做上下文切換。時間片

初夏小談:判斷系統日期時間C語言

計算系統當前日期和時間: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int array[] =

cpu上下文切換

cpu上下文就是暫存器和程式計數器。這裡記錄著指令的位置,他們存在系統核心 系統呼叫過程叫上下文切換。 程序的上下文切換,執行緒的上下文切換,中斷的上下文切換 一:程序的上下文切換:他與系統呼叫的不同是,程序中還包括,虛擬記憶體,全部變數,棧等使用者態。也包括暫存器,核心堆疊等核心態 二:執行緒的上下

cpu上下文切換

--怎麼檢視系統的上下文切換情況 過多的上下文切換,會把cpu時間消耗在暫存器、核心棧以及虛擬記憶體等資料的儲存和恢復上,縮短程序真正執行的時間,成了系統性能大幅下降的一個元凶。 檢視,使用vmstat,來檢視系統的上下文切換 -vmstat是一個常用的系統性能分析工具,主要用來分析系統的記憶體使用情況

深入理解Linux的CPU上下文切換

如何理解Linux的上下文切換 Linux 是一個多工作業系統,它支援同時執行的任務數量遠大於 CPU 個數。其實這些任務沒有真正的同時執行,是因為系統在很短的時間內,將 CPU 輪流分配給它們,造成多工同時執行的錯覺。 而在每個任務執行前,CPU 都需要知道任務從哪裡載入、從哪裡開始執

C# 監測每個方法的執行次數佔用時間測試1

    程式碼: using Castle.Core.Interceptor; using Castle.DynamicProxy; using ConsoleApplication1.test; using System; using System.Colle

C# 監測每個方法的執行次數佔用時間測試2

在Nuget引用 Castle.DynamicProxy 和 Newtonsoft.Json 這個   程式碼: using Castle.Core.Interceptor; using Castle.DynamicProxy; using ConsoleApp

C# 監測每個方法的執行次數佔用時間測試3

原文:http://www.cnblogs.com/RicCC/archive/2010/03/15/castle-dynamic-proxy.html  在Nuget引用 Castle.DynamicProxy 和 Newtonsoft.Json 這個    

一文讓你明白CPU上下文切換

我們都知道,Linux 是一個多工作業系統,它支援遠大於 CPU 數量的任務同時執行。當然,這些任務實際上並不是真的在同時執行,而是因為系統在很短的時間內,將 CPU 輪流分配給它們,造成多工同時執行的錯覺。 而在每個任務執行前,CPU 都需要知道任務從哪裡載入、又從哪裡開始執行,也

從Java視角理解系統結構(一)CPU上下文切換

作者:Minzhou  本文是從Java視角理解系統結構連載文章 在高效能程式設計時,經常接觸到多執行緒. 起初我們的理解是, 多個執行緒並行地執行總比單個執行緒要快, 就像多個人一起幹活總比一個人幹要快. 然而實際情況是, 多執行緒之間需要競爭IO裝置, 或者競爭鎖資源,導致往往執行速度還不

CPU上下文切換分析

一、CPU上下文切換 1、上下文切換,有時也稱做程序切換或任務切換,是指CPU從一個程序或執行緒切換到另一個程序或執行緒。 2、vmstat是一個常用的系統性能分析工具,主要用來分析系統記憶體使用情況,也常用來分析CPU上下文切換和中斷的次數。 例:vmstat -w 上下文切換需要特別關注的四列

從Java視角理解CPU上下文切換(Context Switch)

從Java視角理解系統結構連載, 關注我的微博(連結)瞭解最新動態 在高效能程式設計時,經常接觸到多執行緒. 起初我們的理解是, 多個執行緒並行地執行總比單個執行緒要快, 就像多個人一起幹活總比一個人幹要快. 然而實際情況是, 多執行緒之間需要競爭IO裝置, 或者競爭鎖資源

作業系統CPU上下文切換

程序切換 進行程序切換就是從正在執行的程序中收回處理器,然後再使待執行程序來佔用處理器。 這裡所說的從某個程序收回處理器,實質上就是把程序存放在處理器 的暫存器中的中間資料找個地方存起來,從而把處理器的暫存器騰出來讓其他程序使用。那麼被中止執行程序的中間資料存在何處好呢?當然這個地方應該是程序的 私有堆疊。

Linux CPU 上下文切換

system in 每秒CPU的中斷次數,包括時間中斷 cs 每秒上下文切換次數,例如我們呼叫系統函式,就要進行上下文切換,執行緒的切換,也要程序上下文切換,這個值要越小越好,太大了,要考慮調低執行緒或者程序的數目,例如 在apache和nginx這種web伺服器中

效能測試必備知識5- 深入理解“CPU 上下文切換

做效能測試的必備知識系列,可以看下面連結的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html   前言 上一篇文章中,舉例了大量程序等待 CPU 排程的場景   靈魂拷問 既然程序是在等待,並沒有執行,為什麼系統的平均負載還是會

效能測試必備知識6- 如何檢視“CPU 上下文切換

做效能測試的必備知識系列,可以看下面連結的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html   課前準備,安裝 sysbench 下載 sysbench git clone https://github.com/akopytov/sy

python---基礎知識回顧進程線程自定義線程池,上下文管理器協程的使用

elf () self. 數據類型 大小 get 基礎數據類型 __init__ 進行 前戲: 在進行自定義線程池前,先了解下Queue隊列 隊列中可以存放基礎數據類型,也可以存放類,對象等特殊數據類型 from queue import Queue class T:

安裝Ubuntu Server18.04CentOS占用體積Python版本的對比

blog 版本 自帶 17. 安裝 系統 inux 8.0 png 這邊只演示一下最新系統的安裝過程,設置之類的和以前講的Kali以及CentOS大同小異:https://www.cnblogs.com/dunitian/p/4822808.html#linux

CollectionCollections、ArrayListVector、HashMapHashtable面試常用

Collections與Collection 1. Collections是java.util下的類,它包含有各種有關集合操作的靜態方法2. Collection是java.util下的介面,它是各種集合結構的父介面   ArrayList和Vector1. 同步性: Vector是執行緒安全