stressapptest 其是:Stressful Application Test (stressapptest) 的简称
Stressful Application Test试图让来自处理器和I/O到内存的数据尽量随机化,以创造出模拟现实的环境来测试现在的硬件设备是否稳定,Google就在使用它,现在是Apache 2.0许可,这里有介绍、安装向导和指南 (http://code.google.com/p/stressapptest/wiki/InstallationGuide)。不过连接可能被墙,要用代理上。
其大概如下:
stressapptest may be used for various purposes:
Many hardware issues reproduce infrequently, or only under corner cases. The theory being used here is that by maximizing bus and memory traffic, the number of transactions is increased, and therefore the probability of failing a transaction is increased. 这个测试会最大化总线和内存的交换量,从而交换失败的概率也会增加。
stressapptest is a userspace test, primarily composed of threads doing memory copies and direct IO disk read/write. It allocates a large block of memory (typically 85% of the total memory on the machine), and each thread will choose randomized blocks of memory to copy, or to write to disk. Typically there are two threads per processor, and two threads for each disk. Result checking is done as the test proceeds by CRCing the data as it is copied. 该软件采用多线程对内存进行拷贝和磁盘接口读写,占用了85%的内存块,而且每个线程都是随机进行的读写操作,一般每个处理器2个线程,磁盘也是;
stressapptest can be download at http://code.google.com/p/stressapptest/downloads
The code is structured fairly simply: 代码结构简单
This test works by stressing system interfaces. It is good at catching memory signal integrity or setup and hold problems, memory controller and bus interface issues, and disk controller issues. It is moderately good at catching bad memory cells and cache coherency issues. It is not good at catching bad processors, bad physical media on disks, or problems that require periods of inactivity to manifest themselves. It is not a thorough test of OS internals. The test may cause marginal systems to become bricks if disk or memory errors cause hard drive corruption, or if the physical components overheat.
该软件在测试系统接口方面比较好,可以评估一些内存信号完整性或内存芯片,接口总线及磁盘方面的情况;但是对已经损坏的处理器,物理存储设备不具有检查功能,在该条件下测试,可能会导致系统或驱动崩溃,以及芯片过热。
Someone running stressapptest on a live system could cause other applications to become extremely slow or unresponsive. 测试中会导致系统反应变慢
stressapptest can output a logfile of miscompares detected during its execution. stressapptest cannot yet log reboot failures, or other failures not visible to user space.
整个执行过程可以输出日志记录文件。下面介绍下其简单的使用过程,由于本人使用的平台不是很支持该软件,所以具体的其它功能和详细说明不好书写和记录。
1、下载该文件包:stressapptest_1.0.4.orig.tar.gz
2、tar -xvf stressapptest_1.0.4.orig.tar.gz
3、进入该文件夹然后:
./configure make sudo make install配置过程中可能会报错,缺少某些库,例如: libaio.a, librt.a (libaio.a: libaio-dev librt.a: libc6-dev);只需在网上查找下对应的库文件,然后连网更新下载便可,然后再编译,一般都可以通过;
也有可能cpu支持不同,如出现下述情况:
root@LOonux:~/test/stressapptest-1.0.4# make
Making all in src
make[1]: 正在进入目录 `/root/test/stressapptest-1.0.4/src'
make all-am
make[2]: 正在进入目录 `/root/test/stressapptest-1.0.4/src'
g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -Wno-psabi -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cc
In file included from finelock_queue.h:29,
from sat.h:28,
from main.cc:18:
os.h:131:4: warning: #warning "Unsupported CPU type: Unable to force cache flushes."
os.h:161:4: warning: #warning "Unsupported CPU type: your build may not function correctly"
mv -f .deps/main.Tpo .deps/main.Po
g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -Wno-psabi -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT os.o -MD -MP -MF .deps/os.Tpo -c -o os.o os.cc
In file included from os.cc:21:
os.h:131:4: warning: #warning "Unsupported CPU type: Unable to force cache flushes."
os.h:161:4: warning: #warning "Unsupported CPU type: your build may not function correctly"
os.cc:165:2: warning: #warning "Unsupported CPU type: unable to determine feature set."
mv -f .deps/os.Tpo .deps/os.Po
目前支持的类型应该有下述三种,否则编译出错:
case x"$target_cpu" in
"xx86_64")
$as_echo "#define STRESSAPPTEST_CPU_X86_64 /**/" >>confdefs.h
;;
"xi686")
$as_echo "#define STRESSAPPTEST_CPU_I686 /**/" >>confdefs.h
;;
"xpowerpc")
$as_echo "#define STRESSAPPTEST_CPU_PPC /**/" >>confdefs.h
;;
"xarmv7a")
安装完成后,运行该软件,可得记录日志如下:
例如 测试1200M大小的内存,测试300000秒的时间
Log: Commandline - ./stressapptest -M 1200 -s 300000
Stats: SAT revision 1.0.1_autoconf, 32 bit binary
Log: root @ RAYS-0bedc0f6 on Sun Mar 14 18:59:09 UTC 2010 from open source release
Log: 1 nodes, 4 cpus.
Log: Defaulting to 4 copy threads
Log: Flooring memory allocation to multiple of 4: 1200MB
Log: Using memaligned allocation at 0x2b4d9000.
Stats: Starting SAT, 1200M, 300000 seconds
Log: Region mask: 0x1
Log: Seconds remaining: 299990
Log: Seconds remaining: 299980
Log: Seconds remaining: 299970
Log: Seconds remaining: 299960
Log: Seconds remaining: 299950
Log: Seconds remaining: 299940
Log: Seconds remaining: 299930
Log: Seconds remaining: 299920
Log: Seconds remaining: 299910
Log: Seconds remaining: 299900
Log: Seconds remaining: 299890