一、文件系統測試工具簡介
1、LTP
參考網站:http://oss.sgi.com/projects/ltp/
LTP(Linux Test Project)是由SGI和IBM聯合發起的項目,提供一套驗證Linux系統可靠性、健壯性、穩定性的測試套件,也可用來進行POSIX兼容測試和功 能性測試。LTP提供了2000多個測試工具,可以根據需要自行進行定制。同時,LTP還是一個優秀的自動化測試框架,基於它通過設計測試用例和測試工具 可以實現更多功能的測試自動化。
穩定性測試相關參考:
基於LTP《測試Linux的可靠性》http://www.ibm.com/developerworks/cn/linux/l-rel/
2、fstest
參考網站:http://www.tuxera.com/community/posix-test-suite/
fstest是一套簡化版的文件系統POSIX兼容性測試套件,它可以工作在FreeBSD, Solaris, Linux上用於測試UFS, ZFS, ext3, XFS and the NTFS-3G等文件系統。fstest目前有3601個回歸測試用例,測試的系統調用覆蓋chmod, chown, link, mkdir, mkfifo, open, rename, rmdir, symlink, truncate, unlink。
該用例測試以上幾個常用的文件系統調用,涉及用例約2K條左右,基於Android系統的測試,需要將相關測試用例的shell腳本稍微做下適配,可以基 於busybox下的相關命令(如dirname修改為busybox dirname),另外還需要適配主腳本“misc.sh”里面的相關命令
3、locktests
參考網站:http://nfsv4.bullopensource.org/tools/tests/locktest.php
locktest用於fcntl鎖功能的壓力測試。運行時,主進程先在指定文件區域設置字節范圍的記錄鎖,然后多個從進程嘗試在該文件區域執行read, write, 加新鎖操作。這些操作結果是可預期的(矩陣如下),如果操作結果與預期一致則測試通過,否則測試失敗。
Expected results
Here is the table of expected results, depending on :
- Slave test operations (READ, WRITE, SET A WRITE LOCK … )
- Master Operation (SET A READ LOCK, SET A WRITE LOCK )
- Slave types (Processes, threads)
- Locking profile (POSIX locking, Mandatory locking)
|
4、PCTS
參考網站:http://www.opengroup.org/testing/downloads.html
PCTS(Posix Complicance Testing Suite),POSIX一致性測試套件,是從POSIX標准出發,通過嚴格的、定量地測試,以驗證、評價、認證操作系統符合POSIX標准的程序的測試 軟件。IEEE std2003.1是PCTS的設計標准,常見的PCTS主要有VSX-PCTS、NIST-PCTS、OPTS-PCTS三種實現,上面提供的連接為 VSX-PCTS。
5、iozone
Iozone是目前應用非常廣泛的文件系統測試標准工具,它能夠產生並測量各種的操作性能,包括read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread ,mmap, aio_read, aio_write等操作。Iozone目前已經被移植到各種體系結構計算機和操作系統上,廣泛用於文件系統性能測試、分析與評估的標准工具。
6、Postmark
參考網站:http://openbenchmarking.org/test/pts/postmark
Postmark 是由著名的 NAS 提供商 NetApp 開發,用來測試其產品的后端存儲性能。Postmark主要用於測試文件系統在郵件系統或電子商務系統中性能,這類應用的特點是:需要頻繁、大量地存取小 文件。 Postmark 的測試原理是創建一個測試文件池。文件的數量和最大、最小長度可以設定,數據總量是一定的。創建完成后, Postmark 對文件池進行一系列的事務( transaction )操作,根據從實際應用中統計的結果,設定每一個事務包括一次創建或刪除操作和一次讀或添加操作,在有些情況下,文件系統的緩存策略可能對性能造成影響, Postmark 可以通過對創建 / 刪除以及讀 / 添加操作的比例進行修改來抵消這種影響。事務操作進行完畢后, Post 對文件池進行刪除操作,並結束測試,輸出結果。 Postmark是用隨機數來產生所操作文件的序號,從而使測試更加貼近於現實應用。輸出結果中比較重要的輸出數據包括測試總時間、每秒鍾平均完成的事務 數、在事務處理中平均每秒創建和刪除的文件數,以及讀和寫的平均傳輸速度。
一、Postmark原理
Postmark是由着名的NAS提供商NetApp開發,用來測試其產品的后端存儲性能。
Postmark主要用於測試文件系統在郵件系統或電子商務系統中性能,這類應用的特點是:需要頻繁、大量地存取小文件。
Postmark的測試原理是創建一個測試文件池。文件的數量和最大、最小長度可以設定,數據總量是一定的。創建完成后,Postmark對文件池進行一 系列的事務(transaction)操作,根據從實際應用中統計的結果,設定每一個事務包括一次創建或刪除操作和一次讀或添加操作,在有些情況下,文件 系統的緩存策略可能對性能造成影響,Postmark可以通過對創建/刪除以及讀/添加操作的比例進行修改來抵消這種影響。事務操作進行完畢后,Post 對文件池進行刪除操作,並結束測試,輸出結果。
Postmark是用隨機數來產生所操作文件的序號,從而使測試更加貼近於現實應用。
輸出結果中比較重要的輸出數據包括測試總時間、每秒鍾平均完成的事務數、在事務處理中平均每秒創建和刪除的文件數,以及讀和寫的平均傳輸速度。
二.Postmark的安裝:
postmark軟件只有一個.c文件,在gcc下編譯即可。假定編譯之后的可執行文件名為postmark。
7、fio
參考網站:http://freecode.com/projects/fio
fio是一個I/O標准測試和硬件壓力驗證工具,它支持13種不同類型的I/O引擎(sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio等),I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs等等。fio可以支持塊設備和文件系統測試,廣泛用於標准測試、QA、驗證測試等,支持Linux, FreeBSD, NetBSD, OS X, OpenSolaris, AIX, HP-UX, Windows等操作系統。
8、filebench
參考網站:http://sourceforge.net/projects/filebench/
Filebench 是一款文件系統性能的自動化測試工具,它通過快速模擬真實應用服務器的負載來測試文件系統的性能。它不僅可以仿真文件系統微操作(如 copyfiles, createfiles, randomread, randomwrite ),而且可以仿真復雜的應用程序(如 varmail, fileserver, oltp, dss, webserver, webproxy )。 Filebench 比較適合用來測試文件服務器性能,但同時也是一款負載自動生成工具,也可用於文件系統的性能。
9、bonnie
參考網站:
http://sourceforge.net/projects/bonnie/
http://www.textuality.com/bonnie/
Bonnie++是一個用來測試UNIX文件系統性能的測試工具,主要目的是為了找出系統的性能瓶頸,其名字來源於作者喜愛的歌手Bonnie Raitt。
Bonnie++在類似的測試工具和軟件中不是最大的和最復雜的,但是在易用性和輸出結果顯示方面很不錯。
為什么需要bonnie++?
我們有以下假設:
內存是有限的,因此cache經常會達到上限;因此許多I/O操作最終需要真正執行I/O;因此有必要測試真實I/O的速度,而且在UNIX文件系統中隨機搜索是非常慢的;
Bonnie++做了什么?
Bonnie++在一個已知文件大小的文件上執行一系列的測試操作。如果不指定文件大小,Bonnie++默認使用100MB。這個默認大小對於大型服務器來說可能不夠大,因此文件的大小最好比可用RAM的大小大一點,一般會要求大兩倍。
Bonnie++的使用說明
Bonnie++將長時間的執行磁盤文件讀寫操作(中間不斷給出進程報告),然后生成一個小而精的報告。
下載Bonnie++的源碼;
解壓tar -xzf bonnie++-1.03e.tgz
進入解壓后的目錄
編譯Bonnie++:make
至此,Bonnie++就已經安裝,並可以使用了。
10、sysbench
sysbench提供了針對linux的基准測試能力,它支持測試CPU、內存、文件IO、信號量、線程等的能力,甚至包括mysql的基准測試。
安裝:
# wget http://nchc.dl.sourceforge.net/project/sysbench/sysbench/0.4.12/sysbench-0.4.12.tar.gz
# tar zxvf sysbench-0.4.12.tar.gz -C ../software/
# ./configure --prefix=/usr/local/sysbench-0.4.12 \
--with-mysql-includes=/usr/local/mysql-5.5.8/include \
--with-mysql-libs=/usr/local/mysql-5.5.8/lib
# make
# make install
1. 基本指令
sysbench [common-options] --test=name [test-options] command
2. 測試文件IO負載
使用以下命令創建測試文件
sysbench --test=fileio --file-total-size=128G prepare
使用以下命令負載測試
sysbench --test=fileio --file-total-size=128G --file-test-mode=rndrw --max-time=60 --max-requests=0 run
測試完畢,使用以下命令清理測試文件
sysbench --test=fileio --file-total-size=128G cleanup
注意:
測試文件大小最好大於內存,確保文件緩存不會過多影響測試;
通過聲明--file-test-mode選項,你可以告訴sysbench你想進行哪種類型的負載(順序讀寫、隨機讀寫、或者組合)。上面例子中指定了隨機讀寫。
通過聲明--max-time選項,你可以告訴sysbench你的測試時長。上面例子中指定了60秒。
3. 測試CPU負載
下面是一個驗證最大素數的例子,通常用它來測試CPU
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run
4. 測試內存負載
執行以下命令:
sysbench --test=memory --num-threads=4 run
更多參數參見:SysBench manual
二、內存測試工具簡介
1、memtester
參考網站:http://pyropus.ca/software/memtester/
memtester是用戶態工具,用於測試內存子系統的故障。非常方便,支持32位或64位Unix-like系統。對於硬件開發開發者來說,memtester可以定位到物理地址。
1、安裝
下載獲取memtester-4.3.0.tar.gz源碼包。
#tar –zxvf memtester-4.3.0.tar.gz
#make
#make install
2、測試
./memtester [-p physaddrbase] [B|K|M|G] [loops]
其中:
Physaddrbase:需要測試的物理地址;
<mem>[B|K|M|G]:測試內存的大小;
[loops]:測試次數