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, Xilinx Virtex4FX and Altera Stratix2GX 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) , and a Reliable Connect Transport Layer core that can handle 511 simulantaneous transactions and 1024 Queue Pairs. For more information see,
http://www.polybus.com/ib_link_layer_website.

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,
sys_basher.tar.gz
sys_basher.zip

Sys_basher is a multithreaded 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 should have no trouble running on systems with > 4G of RAM. 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 Core 4, 5, 6, Fedora 7, 8,  Scientific Linux 4.4, 5.0,  Ubuntu Feisty Fawn 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 thread limit is 2 which will keep both cores of a dual core system busy, the -threads switch 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 - 200 MBytes, or smaller, the memory tests will run without swapping. If the reserved space is set lower then this, paging will occur. Paging slows the memory tests to a crawl but has the useful side effect of causing large amounts of disk traffic.

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 -totalmem 200

If swapping is desired then set the reserve space to 0,

sys_basher -totalmem 0

------------------------------------------------------------------------------------------------------------------
Building sys_basher.

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 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
------------------------------------------------------------------------------------------------------------------
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

sys_basher [options]

 options:
  -diskonly    Run disk tests only
  -dutycycle n Duty cycle in percent, the default is 100. Inserts Sleeps between tests to reduce the overall CPU duty cycle
  -fast        Skip the memory tests, just run the disk, fp and memory bandwidth tests.
  -fponly      Run floating point tests only
  -h           Print this help message
  -hours n     Run for at least n hours.
  -intonly     Run integer tests only
  -loops n     Number of iterations.
  -mbandwidth  Run memory bandwidth only
  -memonly     Run memory tests only
  -minutes n   Run for at least n minutes.
  -path n0..nx Directory path(s) for the disk tests, upto 32 paths maybe specified. The default path is ./
  -r name      Report file name, generate name.rpt and name.csv. Default is not report
  -swap        Force use of swap space. This option is incredibly slow.
  -threads n   Maximum number of threads. Spawn 1-n threads, the default is 2.
  -totalmem n  Allocate total ram - (n * 1M) for testing. If -totalmem is not called then the free space is used.
  -v           Verbose, print detailed results, default is PASS/FAIL only.

------------------------------------------------------------------------------------------------------------------
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,

sys_basher -hours 8 -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