1. 程式人生 > >基於Linux系統的效能測試

基於Linux系統的效能測試

                效能測試:CPU記憶體,硬碟IO讀寫,頻寬速度,UnixBench

一、CPU物理個數、核心、超執行緒、多核心

1、登入Terminal,執行:cat /proc/cpuinfo,就會顯示出主機的CPU詳細引數,如核心、頻率、型號等等,以下是我Linux 系統主機的CPU:

             
       2、主要引數physical_id表示物理CPU個數,cpu cores是核心數,Siblings 表示位於這一物理封裝上的邏輯處理器的數量,它們可能支援也可能不支援超執行緒(HT)技術。
       3、如果有一個以上邏輯處理器擁有相同的 core id 和 physical id,則說明系統支援超執行緒(HT)技術。如果有兩個或兩個以上的邏輯處理器擁有 相同的 physical id,但是 core id 不同,則說明這是一個多核心處理器。
       4、如果“siblings”和“cpu cores”一致,則說明不支援超執行緒,或者超執行緒未開啟。如果“siblings”是“cpu cores”的兩倍,則說明支援超執行緒,並且超 執行緒已開啟。

 5、直接檢視邏輯CPU的個數,執行:cat /proc/cpuinfo |grep 'physical id' |sort |uniq

       6、直接檢視CPU的型號,執行:cat /proc/cpuinfo |grep 'model name' |sort |uniq
       7、單個CPU的核心數,執行:cat /proc/cpuinfo |grep 'cpu cores' |sort |uniq
       8、總的CPU執行緒數,執行:cat /proc/cpuinfo |grep 'processor'

           

二、記憶體大小、交換空間、快取記憶體、實際使用記憶體


1、檢視主機的記憶體資訊,執行:cat /proc/meminfo,主要是看記憶體大小、交換空間、快取記憶體。

           
           

       2、主機實際使用記憶體大小。Linux管理記憶體的機制是這樣的:無論實體記憶體有多大,Linux 都將其充份利用,將一些程式呼叫過的硬碟資料讀入記憶體,利用記憶體讀寫的高速特性來提高Linux系統的資料訪問效能。
       3、即Linux會利用空閒的實體記憶體,劃分出一部份空間,做為 cache 和 buffers ,以此提高資料訪問效能。cache主要用來減少對磁碟的I/O操作。 所以我們經常能夠看到一個總記憶體為8GB的Linux VPS測試出來佔用的記憶體也是8GB。
       4、那麼如何才能知道Linux真正佔用的記憶體是多少呢?執行命令:free –m

          
       5、計算主機真實的使用記憶體方法是:Total-Free-Cached=真實使用記憶體,即1016912-18584-206944=791384,表示我的主機真實使用的記憶體是 791384MB。

三、磁碟IO讀寫速度測試

1、磁碟IO,即輸入/輸出(Input/Output),這是測試磁碟效能一個重要指標。
       2、測試主機磁碟IO的效能可以執行以下兩個命令:
            dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
            dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync
       3、conv=fdatasync與oflag=dsync的區別在於:sync函式只是將所有修改過的塊緩衝區排入寫佇列,然後就返回,它並不等待實際寫磁碟操作結束。
       4、而fsync函式只對由檔案描述符filedes指定的單一檔案起作用,並且等待寫磁碟操作結束,然後返回。這是我電腦的硬碟IO測試結果。

        
四、速度測試:上傳下載速度、伺服器頻寬

 測試VPS主機入口與出口的頻寬一鍵指令碼,執行命令:
            wget https://github.com/sivel/speedtest-cli/raw/master/speedtest_cli.py
            python speedtest_cli.py --share

       

五、效能綜合測試:UnixBench跑分工具測試
      1、UnixBench是一款開源的測試 unix 系統基本效能的工具,是比較通用的測試效能的工具,Unixbench的主要測試專案有:系統呼叫、讀寫、程序、圖形化測試、2D、3D、管道、運算、C庫等系統基準效能提供測試資料。
      2、UnixBench測試的結果不僅僅只是CPU,記憶體,或者磁碟為基準,還取決於硬體,作業系統版本,編譯器,測試系統各個方面一系列的效能,然後將每個 測試結果和一個基準值進行比較,得到一個索引值,所有測試專案的索引值結合在一起形成一個測試分值。         

      3、UnixBench測試執行以下命令: 

            wget http://teddysun.com/wp-content/uploads/unixbench.sh
            chmod +x unixbench.sh
            ./unixbench.sh
      4、測試時間可能會比較長,請耐心等待。最後UnixBench會詳細列出各個測試專案的得分情況,以及主機效能的綜合跑分結果。  如下圖,得分為879.7。

    

這些測試的結果有一個指數值(INDEX ,如520),這個值是測試系統的測試結果與一個基線系統測試結果比較得到的指數值,這樣比原始值更容易得到參考價值,測試集合裡面所有的測試得到的指數值結合起來得到整個系統的指數值。
       對於測試結果,說明如下: