Sys_basher is offered free of charge by Polybus Systems corporation under a BSD style open source license.
Polybus offers Intellectual Property including InfiniBand Link Layer and Transport Layer cores. Polybus also provides FPGA and ASIC design services.
Polybus is the leading supplier of InfiniBand cores for use in Xilinx Virtex2P, Virtex4FX, Virtex5FXT, Virtex6LX/HX FPGAs and Altera Stratix2GX and Stratix4GX/GT FPGAs as well for ASICs. We offer an IBA Release 1.1 compliant Link Layer core (10GBit/Second), an IBA Release 1.2 compliant Double Data Rate Link Layer core (20GBit/Second), 1.2 compliant 8X QDR Link Layer Cores (80GBits/Sec) for ASICs and a 4X QDR/8X DDR (40GBits/Sec) for the Stratix4 and the Virtex6. Polybus also offers companion Transport Layer Cores for SDR and DDR UC Target Channel Adapters.
If you are looking for FPGA or ASIC design consulting or would like more information about our cores please contact Joshua Rosen bjrosen@polybus.com, (978) 828-0944.
sys_basher may be downloaded here, (revision 1.2.3, Aug 20, 2009)
Sys_basher is a multithreaded CPU,memory and disk exerciser. It's purpose is to provide a system reliablity test, it is not designed to identify individual failed components. Sys_basher can keep all the cores in a system running at 100% capacity using 100% of the memory bandwidth. The floating point tests use the FP multipliers, adders, and memory system at the maximum possible rate, this should heat the CPU as much as any application will. It is also capable of doing continuous disk I/O to upto 32 separate directories.
Sys_basher is a 64 bit program, it has been tested on systems with 12G of RAM but it should have no trouble testing as much RAM as 64 bit Linux supports. If it is compiled on a 32 bit system it will only be able to test about 3G of RAM which is the limit imposed by the 32 bit Linux kernel. The program is POSIX compliant so it should work on any *nix system, although it's only been tested on Fedora 9,10, 11, CentOS 5.2 and Cygwin on WinXP.
Sys_basher can spawn multiple threads, each running the selected suite of tests. The default number of Cores supported is 16 however this number can be changed by modifying the MAX_CORES value in sys_structs.h and recompiling. The default number of threads is the number of CPUs in the system, the thread limit can be changed with the --threads switch which allows the user to specify from 1 to MAX_CORES threads.
Sys_basher can test most of the physical memory on a system. The default is to test only the free memory however a switch is provided which allows the user to set the test array size to the total memory size minus a specified number of megabytes. If the test array is set to totalmem - 300 MBytes, or smaller, the memory tests will usually run without swapping. To increase the amount of memory that's testable it is suggested that you run at INIT 3 (no X) with no other programs running.
As of rev 1.0.7 sys_basher logs CPU and system temperatures. The current temperatures are displayed after each test completes and a table of maximum temperatures is displayed at the end ot the test. Temperature logging is available for Linux only and requires the installation of lm-sensors and the libsensors development library.
To run without swapping,
sys_basher -t 400
If swapping is desired then set the reserve space to 0,
sys_basher -t 0
The optimal -t value is system dependent, the only way to determine the maximum value that will not force swapping is to use the free command to determine if sys_basher is swapping. In the following example we use swapoff and then swapon to flush the swap space and then run sys_basher followed by a free command to determine how much RAM and swap space is in use,
> su
> swapoff -a
> swapon -a
> exit
> sys_basher -m -t 550 >& log &
> free
total used free shared buffers cached
Mem: 8113872 8069804 44068 0 2888 38004
-/+ buffers/cache: 8028912 84960
Swap: 16779852 912 16778940
------------------------------------------------------------------------------------------------------------------
Building sys_basher.
Sys_basher uses a csh script during it's build process to determine the version of the libsensors library that's in use by the system. If you haven't already done so you must install the tcsh package on your system.
Sys_basher can be built with or without sensors.
To build it with sensors you will have to install the libsensors development package.
For Redhat and Clones yum -y install lm_sensors-devel
For Ubuntu sudo install apt-get libsensors-dev
To build it without you will need to do a make nosensors instead of make or make sys_basher
make sys_basher
make nosensors Make without lm-sensors
make win Make for Cygwin
make install Make sys_basher and move it to /usr/bin
The man page is created using help2man, to install it
Redhat and Clones yum -y install help2man
Ubuntu sudo apt-get install help2man
Note: CentOS and RHEL will have to add the EPEL yum repository to get help2man
------------------------------------------------------------------------------------------------------------------
Report Files
Sys_basher generates a report in two formats, .rpt and .csv. The .rpt format is human readable text file format, .csv is a comma separated format thats allows the user to import the results into a spreadsheet.
To generate the report files use the -r switch,
sys_basher -r report
------------------------------------------------------------------------------------------------------------------
Verbosity control
The default output from sys_basher is simple pass/fail status. The -v switch adds detailed test by test status results including the temperature after each test. The information in the verbose mode is also available in the report files so for healthy systems it is recommended that you don't use the -v switch. For unstable systems the verbose mode can be very useful in determining the source of the unreliability so for systems that crash it is recommended that the -v switch be used and that the output be redirected to a log file,
sys_basher -v >& log
------------------------------------------------------------------------------------------------------------------
Running sys_basher
Usage: sys_basher [OPTIONS]
options:
-d,--disk Run disk tests
-du,--dutycyle Dutycycle n Duty cycle in percent, the default is 100
Inserts Sleeps between tests to reduce the overall CPU duty cycle
-f,--fast Skip the memory tests, just run the disk, fp and memory bandwidth tests.
-fp,--fp Run floating point tests
-h,--help Print this help message
-ho #,--hours # Run for at least # hours.
-i,--int Run integer tests
-l #,--loops # Number of iterations.
-mb,--mbandwidth Run memory bandwidth
-m,--mem [abprwv] Run memory tests
No argument Run all memory tests
a Address = Data tests
b Bank tests
p Fixed pattern tests
r Random data tests
w Walking Ones/Zeros data tests
v Bit reversed address tests
-mi,--minutes # Run for at least # minutes.
-p n0..nx,--path n0..nx Directory path(s) for the disk tests, upto 32 paths maybe specified. The default path is ./
-r name,--report name Report file name, generate name.rpt and name_xx.csv. Default is sys_basher.rpt and sys_basher_xx.csv
-s,--swap Force use of swap space. This option is incredibly slow.
-t,--totalmem # Allocate total ram - (n * 1M) for testing. If -totalmem is not called then the free space is used.
-th #,--threads # Maximum number of threads. Spawn 1-n threads, the default is the number of CPUs.
-ts #,--tstart # Starting thread count, after the initial calibration pass loop from tstart to threads, the default is 1
-v,--verbose Verbose, print detailed results, default is PASS/FAIL only.
-ve,--version Version
The default is to run all tests unless at least one individual test group is selected.
Report and log files:
The default report_name is sys_basher.
The the default name can be overridden with the -r switch.
report_name.log Running log. Syncs are executed after each test so that this file can be preserved up to the point of a crash.
report_name.rpt Summary report file.
report_name_#_threads.csv Comma separated report files for each thread count. These files can be read into a spreadsheet.
------------------------------------------------------------------------------------------------------------------
Examples,
Run benchmarks and fast tests only,
sys_basher -fast >& log &
Run two iterations, use totalmem - 256M, do disk tests on 2 partitions,
sys_basher -loops 2 -path /fcx/projects /home/bjrosen -totalmem 256 >& log.$1 &
Run for 8 hours, use totalmem - 256M, do disk tests on 4 partitions, set the maximum thread count to 4 and loop on the maximum threads
sys_basher -hours 8 -th 4 -tm -path /fcw/projects /fcx/projects /fcx/projects /home/bjrosen -totalmem 256 >& log.$1 &
Force swapping,
sys_basher -totalmem 0 >& log &
------------------------------------------------------------------------------------------------------------------
Revision History
1.0.1 First version
1.0.2 Added disk tests
1.0.3 Added No sync mode for disk tests in addition to the sync mode that was introduced into 1.0.2
Added -hours, -minutes and -path switches
Added floating point tests
Improved the output formatting
1.0.4 Added check to see that malloc succeeded. Fix FP Sum of Products tests.
There are some issues with the Disk Tests which will be addressed in the next rev.
If the disk tests fail DON'T PANIC, it's probably my code.
1.0.5 Fixed disk tests and improved FP tests.
1.0.6 Added duty cycle control.
1.0.7 Added CPU Temperature monitoring, Cygwin support
1.0.8 Added integer arithmetic tests. Fixed Cygwin bug.
1.0.9 Added -memonly
1.1.0 Added report files, added 16 bit integer tests, added verbose mode switch. Made the number of supported cores scalable
Cygwin version now does disk I/O and uses POSIX threads
1.1.1 Cleaned up the stdio output. Switches can be preceeded by either - or --.
Added transcript file, sys_basher.log
1.1.2 Added support for libsensors3
1.1.5 Added -ts switch which loops on the maximum number of threads. Improved memory tests. All integer and FP tests now
run for a minimum of .5 seconds. The default number of threads is set to the number of CPUs.
1.1.6 A little cleanup in the report file, no test or feature changes.
1.1.7 Added walking zero/one and random memory tests.
1.1.8 Update -help
1.1.9 Lint fixes. Random number generator fixes
1.2.0 Spec file changes
1.2.1 Improved random number generator in memory tests
1.2.2 Added bit reverse address test. Added voltage and fan speed reporting.
1.2.3 Added finer grain control over the memory tests. Added support > 8G in the bit reverse address tests.
|