lmbench is a powerful and extensible suite of micro-benchmarks that measures a variety of important aspects of system performance. It has a powerful timing harness that manages most of the 'housekeeping' chores associated with benchmarking, making it easy to create new benchmarks that analyze systems or components of specific interest to the user. In many ways lmbench is a Swiss army knife for performance analysis. It includes an extensive suite of micro-benchmarks that give powerful insights into system performance. For those aspects of system or application performance not covered by the suite, it is generally a simple task to create new benchmarks using the timing harness. lmbench is written in ANSI-C and uses POSIX interfaces, so it is portable across a wide variety of systems and architectures. It also includes powerful new tools that measure performance under scalable loads to analyze SMP and clustered system performance.
1080C. STAELIN lmbench does not include benchmarks that measure all possible operations or combinations of operations, but it is extensible. This allows the user to create benchmarks that measure performance of particular subsystems, combinations of operations, or application components. For example, one of the lmbench developers was developing an image processing application where the bottleneck was a convolution operation between the input image and a fixed-size mask, so he developed a few different convolution implementations and measured their performance on different combinations of hardware and compilers and discovered that there was no single optimal implementation for all platforms.lmbench analyzes parallel and distributed system performance by measuring system performance under scalable load. This means that the user can specify the number of processes that will be executing the benchmarked feature in parallel during the measurements. It is possible to utilize this framework to develop benchmarks to measure distributed application performance, but it is primarily intended to measure the performance of multiple processes using the same system resource at the same time.In general the benchmarks report either the latency or bandwidth of an operation or data pathway. The exceptions are generally those benchmarks that report on a specific aspect of the hardware, such as the processor clock rate, which is reported in megahertz and nanoseconds.lmbench consists of three major components: a timing harness, the individual benchmarks built on top of the timing harness, and the various scripts and glue that build and run the benchmarks and process the results. The timing harness is the heart of the system. It manages the actual benchmarking process: starting the benchmarked activity, repeating the benchmarked activity as long as necessary to ensure accurate results, and finally managing the statistical analysis to report representative results. Great care is taken in the design and implementation of this timing harness to ensure that as many sources of experimental and measurement error are r...