fio is an I/O tool meant to be used both for benchmark and stress/hardware verification. It has support for 13 different types of I/O engines (sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio, and more), I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs, and much more. It can work on block devices as well as files. fio accepts job descriptions in a simple-to-understand text format. Several example job files are included. fio displays all sorts of I/O performance information, including complete IO latencies and percentiles. Fio is in wide use in many places, for both benchmarking, QA, and verification purposes. It supports Linux, FreeBSD, NetBSD, OS X, OpenSolaris, AIX, HP-UX, and Windows.
Siege is a regression test and benchmark utility. It can stress test a single URL with a user defined number of simulated users, or it can read many URLs into memory and stress them simultaneously. The program reports the total number of hits recorded, bytes transferred, response time, concurrency, and return status. Siege supports HTTP/1.0 and 1.1 protocols, GET and POST directives, cookies, transaction logging, and basic authentication. Its features are configurable on a per user basis.
Bandwidth is primarily a memory bandwidth benchmark, but it can also measure network bandwidth. It measures the maximum memory bandwidth of each part of the memory system, including main memory, L1, L2, and L3 caches, framebuffer memory, and register-to-register. For many tests, it performs both sequential memory accesses as well as random memory accesses to provide a more real-world performance estimate. The tests support Linux (Intel), Windows/Cygwin, and Mac OS X. Its core routines are in assembly for x86 and x86-64 architectures with both SSE4 and AVX support. Bandwidth also includes automatic graphing of the results, stored to a BMP image file. The network bandwidth tests support Linux, Mac OS X, and Windows/Cygwin.
Bonnie++ is based on the Bonnie hard drive benchmark by Tim Bray. The most notable features that have been added are support for >2G of storage and testing operations involving thousands of files in a directory. This program is used by ReiserFS developers, but can be useful for anyone who wants to know how fast their hard drive or file system is. It now includes ZCAV in the package. This program tests the performance of different zones on the hard drive. ZCAV has been released separately before but will now only be released as part of the Bonnie++ suite.
pv (Pipe Viewer) is a terminal-based tool for monitoring the progress of data through a pipeline. It can be inserted into any normal pipeline between two processes to give a visual indication of how quickly data is passing through, how long it has taken, how near to completion it is, and an estimate of how long it will be until completion.
SmokePing is a network latency monitor. It measures network latency to a configurable set of destinations on the network, and displays its findings in easy-to-read Web pages. SmokePing has support for distributed monitoring as well as for dealing with dynamic IP addresses. SmokePing uses RRDtool as its logging and graphing back-end, making the system very efficient. The presentation of the data on the Web is done through a CGI with some AJAX capabilities for interactive graph exploration.
Tsung is a distributed load testing tool. It is protocol-independent and can currently be used to stress HTTP, WebDAV, PostgreSQL, MySQL, LDAP, AMQP, and XMPP/Jabber servers. It simulates user behavior using an XML description file, reports many measurements in real time (statistics can be customized with transactions, and graphics generated using gnuplot). For HTTP, it supports 1.0 and 1.1, has a proxy mode to record sessions, supports GET, POST, PUT, and DELETE methods, cookies, and basic/digest authentication. It also has support for SSL, WebSocket, and BOSH.
FunkLoad is a functional and load Web tester whose main use cases are functional testing of Web projects (and thus regression testing as well), performance testing, load testing (such as volume testing or longevity testing), and stress testing. It can also be used to write Web agents to script any Web repetitive task.