LTP介紹
1、LTP介紹
1.簡介
LTP(Linux Test Project)是SGI、IBM、OSDL和Bull合做的項目,目的是爲開源社區提供一個測試套件,用來驗證Linux系統可靠性、健壯性、和穩定性。LTP是Linux內核和相關特色測試的一整套工具集,它力求經過自動化的測試方法改進Linux內核。
2.源碼目錄結構介紹
LTP源代碼說明
INSTALL LTP安裝配置指導文檔
README 描述LTP包內容的文檔
CREDITS 記錄對LTP有很大貢獻的人
COPYING GNU Public License
ChangeLog 描述版本的變化
ltpmenu 規劃執行LTP的圖形化界面接口
Makefile LTP頂層目錄的Makefile,負責編譯安裝pan、testcases和tools
runalltests.sh 能夠順序運行所有測試例程而且報告結果的腳本
doc/* 工程文檔包含工具和庫函數使用手冊,描述各類測試
include/* 通用的頭文件目錄
lib/* 通用的庫函數目錄
testcases/* 包含全部運行在LTP下的測試程序和連接
testscripts/* 存放分組的測試腳本
runtest/* 爲自動測試提供命令列表
pan/* 測試的驅動裝置。具有隨即和並行測試的能力
scratch/* 存放零碎測試的東西
tools/* 存放自動化測試腳本和輔助工具
2、LTP安裝
1.下載地址
http:/ltp.sourceforge.net/(以ltp-20110228版本說明。其餘版本如有不一樣請參考官網)
2.編譯
從官方網站下載最新的LTP測試套件包,解壓後進入ltp源目錄。執行make、makeinsatll命令便可。注意:「make install」 可使用非root用戶。可是在執行測試案例以前必定要使用root用戶執行「IDcheck.sh」命令。在編譯成功後會自動安裝到/opt/ltp目錄下。
[root@server20 ltp]# make
[root@server20 ltp]# make install
3.LTP 測試套件內容
(1)腳本
IDcheck.sh 檢查系統是否缺乏執行LTP測試套件所需的用戶和用戶組,若是缺乏則爲LTP測試套件建立所需的用戶和用戶組。
runltplite.sh 這個腳本用來測試LTP安裝,也可用來對測試套件的子項目進行測試。詳情參閱腳本
runltp 這個腳本可以測試LTP測試套件主要項目。其中包括:
- 硬盤 I/O 測試。
- 內存管理壓力測試。
- IPC 壓力測試。
- SCHED測試。
- 命令功能的驗證測試。
- 系統調用功能的驗證測試。
ver_linux 這個腳本是獲取硬件、軟件、環境信息。
runalltests.sh 測試內容同runltp。不一樣點在於runltp能夠指定測試項進行組合測試,而runalltests.sh則會所有執行。
(2)目錄
bin 存放LTP測試的一些輔助腳本
results 測試結果默認存儲目錄
testcases 測試項集
output 測試日誌默認存儲目錄
share 腳本使用說明目錄
runtest 測試驅動(用於連接testscripts內的測試腳本和testcases測試項目)
lib 通用的庫函數目錄
testscripts 列舉了全部的子系統測試腳本
adp_children.sh sysfs.sh
ltp-aiodio.sh ltpstress.sh
runpan.sh networkstress.sh
adp.sh 等等
(3)其餘
Version 版本說明
(4)測試過程
從一個測試命令文件中讀取要測試的條目的要執行的命令行,而後等待該項測試的結束,並記錄詳細的測試輸出。默認狀態下pan會隨機的選擇一個命令行來運行,能夠指定在同一時間要執行測試的次數。pan會記錄測試產生的詳細的格式複雜的輸出,但它不進行數據的整理和統計,數據整理統計的工做由scanner來完成,scanner是一個測試結果分析工具,它會理解pan的輸出格式,並輸出成一個表格的形式來總結那些測試passed或failed。
LTP測試套件經過執行測試腳本runalltests.sh(或runltp或runltplite.sh),或/testscripts內的測試腳本調用驅動程序pan執行/testcases內的測試項目。
3、LTP使用說明
1.概述
LTP有兩種測試方式。初始測試和自定義場景測試。自定義場景測試是指根據需求對擬定測試項目,自定義場景測試法使用的腳本是runltp(腳本使用方法下詳),在執行runltp腳本的時,能夠指定參數添加你須要的測試的項目(在/testscripts內)。初始測試是對linux系統主要項目(不是所有)進行測試。包括:
- 硬盤 I/O 測試。
- 內存管理壓力測試。
- IPC 壓力測試。
- SCHED測試。
- 命令功能的驗證測試。
- 系統調用功能的驗證測試。
初始測試的測試腳本是runalltests.sh或runltp(runltp默認執行的內容與runalltests相同)。
2.runltp命令介紹
用法:./runltp [option] [command]
-a EMAIL_TO 發送全部的報告到指定的郵箱
-c NUM_PROCS 添加後臺測試CPU的進程數,默認1
-C FAILCMDFILE 失敗案例存儲文件
-d IMPDIR 臨時存儲目錄,默認/tmp
-D NUM_PROCS,NUM_FILES,NUM_BYTES,CLEAN_FLA run LTP under additional background Load on Secondary Storage (Seperate by comma)
[NUM_PROCS = no. of processes creating Storage Load by spinning over write()]
[NUM_FILES = Write() to these many files (Defaults to 1 when value 0 or undefined)]
[NUM_BYTES = write these many bytes (defaults to 1GB, when value 0 or undefined)]
[CLEAN_FLAG = unlink file to which random data written, when value 1]
-e 輸出目前LTP版本的日期
-f CMDFILES 執行用戶自定義的測試案例,用「 ,」隔開(CMDFILES指runtest內的驅動程序)
-g HTMLFILE 添加html格式的輸出文件HTMLFILE
-h 幫助信息
-i NUM_PROCS 添加後臺測試IO bus總線的進程數
-l LOGFILE 記錄測試日誌的文件
-m NUM_PROCS,CHUNKS,BYTES,HANGUP_FLAG run LTP under additional background Load on Main memory (Seperate by comma)
[NUM_PROCS = no. of processes creating main Memory Load by spinning over malloc()]
[CHUNKS = malloc these many chunks (default is 1 when value 0 or undefined)]
[BYTES = malloc CHUNKS of BYTES bytes (default is 256MB when value 0 or undefined) ]
[HANGUP_FLAG = hang in a sleep loop after memory allocated, when value 1]
-N 添加全部的網絡測試
-n 添加後臺測試網絡傳輸
-o OUTPUTFILE 直接打印測試輸出到OUTPUTFILE
-p 人爲指定日誌格式
-q 打印少的測試輸出到屏幕
-r LTPROOT
-s PATTERN 匹配PATTERN執行測試案例
-t DURATION 給定測試執行時間設置(s,m,h,d)
-T REPETITION 重複執行測試案例
-v 打印多的測試輸出到屏幕
-w CMDFILEADDR 使用wget下載用戶測試案例集合。
-x INSTALL 並行執行多個測試場景
3.壓力測試
在testscripts目錄中含有一個測試腳本ltpstress.sh,它能夠對linux系統進行
-內存管理壓力測試。
-文件系統壓力測試。
-數學 (浮點) 測試。
- 多線程壓力測試。
- 硬盤 I/O 測試。
- IPC (pipeio, semaphore) 測試。
- 系統調用功能的驗證測試。
- 網絡壓力測試。
在使用ltpstress.sh腳本的以前須要對系統進行配置
-rsh必須配置完畢並在運行。
-內核支持NFS,而且安裝NFS軟件,經過網絡測試。
-「sar」或"top"工具須要被安裝,執行ltpstress時須要添加"sar"或「top」工具。
(1)ltpstress.sh命令
參數說明 :
-d datefile 指定sar或top記錄文件,默認是/tmp/ltpstress.data
-i #(in sec) 指定sar或top快照時間間隔,默認是10s
-I iofile 記錄"iostat"結果到isofile默認是/tmp/ltpstress.iostat
-l logfile 記錄測試結果到logfile,默認是/tmp/ltpstress
-m #(in Mb) 指定最小的內存使用
-n 不對網絡進行壓力測試
-S 用 sar捕捉數據
-T 利用LTP修改過的top工具捕捉數據
-t duration 指定時間的設置
(2)"top"工具
使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
說明:即時顯示 process 的動態
-d 改變顯示的更新速度,或是在交談式指令列( interactive command)按d
-q 沒有任何延遲的顯示速度,若是使用者是有 superuser 的權限,則 top 將會以最高的優先序執行
-c 切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另外一種是顯示完整的路徑與名稱
-S 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
-s 安全模式,將交談式指令取消, 避免潛在的危機。
-i 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
-n 更新的次數,完成後將會退出 top
-b 批次檔模式,搭配 "n" 參數一塊兒使用,能夠用來將 top 的結果輸出到檔案內
(3)"sar"工具
sar [options] [-A] [-o file] t [n]
說明:在命令行中,n 和t 兩個參數組合起來定義採樣間隔和次數,t爲採樣間隔,是必須有的參數,n爲採樣次數,是可選的,sar命令的選項不少,下面只列出經常使用選項:
-a 報告文件讀寫使用狀況
-b 報告緩存的使用狀況
-c 報告系統調用的使用狀況
-d 報告磁盤的使用狀況
-h 報告關於buffer使用的統計數據
-m 報告IPC消息隊列和信號量的使用狀況
-q 報告運行隊列和交換隊列的平均長度
-R 報告進程的活動狀況
-r 報告沒有使用的內存頁面和硬盤塊
-u 報告CPU的利用率
-v 報告進程、i節點、文件和鎖表狀態
-w 報告系統交換活動情況
4、測試案例
1.初始測試
[root@server25 ltp]# ./runalltests.sh
*******************************************************************
*******************************************************************
** **
** This script is being re-written to cover all aspects of **
** testing LTP, which includes running all those tests which **
** are not run by default with runltp script. Special setup **
** in system environment will be done to run all those tests **
** like the File System tests, SELinuxtest, etc **
** **
*******************************************************************
*******************************************************************
Running Default LTP...
INFO: creating /opt/ltp/results directory
INFO: no command files were provided. Will execute the following
runtest scenario files:
syscalls fs fs_perms_simple fsx dio io mm ipc sched math nptl pty containers fs_
bind controllers filecaps cap_bounds fcntl-locktests connectors admin_tools time
rs power_management_tests numa hugetlb commands hyperthreading
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.
NFS-Asianux Server
LSB_VERSION="3.1"
DISTRIB_ID="AsianuxServer"
DISTRIB_RELEASE="3"
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
Linux server25.nfs 2.6.18-128.7NFS #1 SMP Thu Aug 26 10:13:03 EDT 2010 x86_64 x8
6_64 x86_64 GNU/Linux
Gnu C gcc (GCC) 4.1.2 20080704 (Asianux 3.0 4.1.2-44)
Gnu make 3.81
util-linux pre7)
mount pre7)
modutils 3.3-pre2
e2fsprogs 1.39
PPP 2.4.4
isdn4k-utils 3.9
Linux C Library > libc.2.5
Dynamic linker (ldd) 2.5
Procps 3.2.7
Net-tools 1.60
iproute2 iproute2-ss061002
Kbd 1.12
Sh-utils 5.97
Modules Loaded i915 drm ipv6 xfrm_nalgo crypto_api dm_mirror dm_multipat
h scsi_dh video hwmon backlight sbs i2c_ec button battery asus_acpi acpi_memhotp
lug ac lp sg snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_
seq_midi_event snd_seq snd_seq_device snd_pcm_oss ide_cd snd_mixer_oss i2c_i801
8139too pcspkr snd_pcm i2c_core 8139cp mii cdrom serio_raw parport_pc snd_timer
snd parport soundcore snd_page_alloc dm_raid45 dm_message dm_region_hash dm_log
dm_mod dm_mem_cache ata_piix libata sd_mod scsi_mod ext3 jbd uhci_hcd ohci_hcd e
hci_hcd
free reports:
total used free shared buffers cached
Mem: 501400 490124 11276 0 2432 87364
-/+ buffers/cache: 400328 101072
Swap: 2096472 136 2096336
/proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Pentium(R) 4 CPU 3.06GHz
stepping : 9
cpu MHz : 3059.069
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc
pni monitor ds_cpl tm2 cid cx16 xtpr lahf_lm
bogomips : 6121.34
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Pentium(R) 4 CPU 3.06GHz
stepping : 9
cpu MHz : 3059.069
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl tm2 cid cx16 xtpr lahf_lm
bogomips : 6117.09
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 48 bits virtual
power management:
remove test cases which require the block device.
You can specify it with option -b
COMMAND: /opt/ltp/bin/ltp-pan -e -S -a 5704 -n 5704 -p -f /tmp/ltp-c rOdkS5710/alltests -l /opt/ltp/results/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.log - o /opt/ltp/output/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.output -C /opt/ltp/output/ LTP_RUN_ON-2011_.failed
LOG File: /opt/ltp/results/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.log
OUTPUT File: /opt/ltp/output/LTP_RUN_ON-2011_ 3月_25-16h_36m_16s.output
FAILED COMMAND File: /opt/ltp/output/LTP_RUN_ON-2011_.failed
HTML File: /opt/ltp/output/2011_
Running tests.......
分析:
remove test cases which require the block device這句前面一部分是對系統信息的捕捉,後面是對記錄結果的文件的說明。
詳細測試結果略
2.壓力測試
Linux 2.6.18-128.7NFS (server20) 2011年03月26日
Running LTP Stress for 24 hour(s) using 730 Mb
Test output recorded in:
/tmp/ltpstress.2496.output1
/tmp/ltpstress.2496.output2
/tmp/ltpstress.2496.output3
13時01分04秒 all 4.00 0.00 8.45 87.56 0.00 0.00
13時00分59秒 CPU %user %nice %system %iowait %steal %idle
13時01分09秒 all 4.35 0.00 9.50 86.14 0.00 0.00
13時01分14秒 all 5.56 0.00 13.46 80.98 0.00 0.00
13時01分19秒 all 6.20 0.00 16.10 77.70 0.00 0.00
13時01分24秒 all 7.80 0.00 15.15 77.05 0.00 0.00
13時01分29秒 all 9.05 0.00 12.81 78.14 0.00 0.00
分析:
sar會動態收集系統的狀態信息。詳細結果略。收集的信息保存在
tmp/ltpstress.data利用sar工具分析ltpstress.data。
(1)sar -u -f ltpstress.data //cpu 平均利用率
[root@server25 tmp]# sar -u -f ltpstress.data
Linux 2.6.18-128.7NFS (server25.nfs) 2011年03月25日
16時49分02秒 CPU %user %nice %system %iowait %steal %idle
16時49分12秒 all 3.81 0.00 3.50 92.69 0.00 0.00
16時49分22秒 all 14.17 0.00 7.14 78.69 0.00 0.00
16時49分45秒 all 31.94 0.00 5.30 62.76 0.00 0.00
16時50分11秒 all 6.25 0.00 5.38 88.36 0.00 0.02
16時50分49秒 all 9.13 0.00 3.21 87.65 0.00 0.00
Average: all 13.35 0.00 4.57 82.07 0.00 0.0
(2) sar -r -f ltpstress.data //內存平均利用率
inux 2.6.18-128.7NFS (server25.nfs) 2011年03月25日
16時49分02秒 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
16時49分12秒 5036 496364 99.00 360 14804 1747512 348960 16.65 44664
16時49分22秒 5540 495860 98.90 464 11304 1633908 462564 22.06 58788
16時49分45秒 8428 492972 98.32 232 9660 1347532 748940 35.72 43848
16時50分11秒 4852 496548 99.03 432 10568 1468572 627900 29.95 39252
16時50分49秒 4772 496628 99.05 940 11980 1198232 898240 42.85 35224
Average: 5726 495674 98.86 486 11663 1479151 617321 29.45 44355
[root@server25 tmp]#