LMBENCH(8)
β¨ LMBENCH β¨
okay so bestie, this is lmbench(8) β the system benchmarks page π
and honestly? it's giving main character energy for anyone who wants to know what their computer is actually doing.
πΈ NAME πΈ
lmbench β system benchmarks. that's it, that's the vibe π
π DESCRIPTION π
lmbench is a whole series of micro benchmarks, and their entire job is to measure basic operating system and hardware system metrics. no cap. the benchmarks fall into three general classes: bandwidth, latency, and ``other''. yes, "other" is literally in quotes in the original, it's iconic π¦
most of the lmbench benchmarks use a standard timing harness described in timing(3), and they share a few standard options: parallelism, warmup, and repetitions. let's break it down:
- parallelism β the number of benchmark processes to run in parallel. this is primarily useful when you're measuring the performance of SMP or distributed computers, and you can use it to evaluate the system's performance scalability π
- warmup β the minimum number of microseconds the benchmark should execute the benchmarked capability before it begins measuring performance. again, this is primarily useful for SMP or distributed systems, and it's intended to give the process scheduler time to "settle" and migrate processes to other processors. by measuring performance over various warmup periods, users may evaulate the scheduler's responsiveness β¨
- repetitions β the number of measurements that the benchmark should take. this lets
lmbenchprovide greater or lesser statistical strength to the results it reports. the default number of repetitions is 11 π«
π BANDWIDTH MEASUREMENTS π
data movement is fundamental to the performance on most computer systems. fr fr. the bandwidth measurements are intended to show how the system can move data. you can compare the results of the bandwidth metrics, but care must be taken to understand what it is that is being compared, bestie β don't just yolo the numbers π«Ά
the bandwidth benchmarks can be reduced to two main components: operating system overhead and memory speeds. they report their results as megabytes moved per second, but please note that the data moved is not necessarily the same as the memory bandwidth used to move the data. consult the individual man pages for more info π
each bandwidth benchmark, with a brief overview of its intent:
bw_file_rdβ reading and summing of a file via theread(2)interface.bw_mem_cpβ memory copy.bw_mem_rdβ memory reading and summing.bw_mem_wrβ memory writing.bw_mmap_rdβ reading and summing of a file via the memory mappingmmap(2)interface.bw_pipeβ reading of data via a pipe.bw_tcpβ reading of data via a TCP/IP socket.bw_unixβ reading data from a UNIX socket.
π¦ LATENCY MEASUREMENTS π¦
control messages are also fundamental to the performance on most computer systems. the latency measurements are intended to show how fast a system can be told to do some operation. the results of the latency metrics can be compared to each other for the most part β in particular, the pipe, rpc, tcp, and udp transactions are all identical benchmarks carried out over different system abstractions π
latency numbers here should mostly be in microseconds per operation. remember that bestie, it matters π
lat_connectβ the time it takes to establish a TCP/IP connection.lat_ctxβ context switching; the number and size of processes is varied.lat_fcntlβfcntlfile locking.lat_fifoβ ``hot potato'' transaction through a UNIX FIFO.lat_fsβ creating and deleting small files.lat_pagefaultβ the time it takes to fault in a page from a file.lat_mem_rdβ memory read latency (accurate to the ~2-5 nanosecond range, reported in nanoseconds).lat_mmapβ time to set up a memory mapping.lat_opsβ basic processor operations, such as integer XOR, ADD, SUB, MUL, DIV, and MOD, and float ADD, MUL, DIV, and double ADD, MUL, DIV.lat_pipeβ ``hot potato'' transaction through a Unix pipe.lat_procβ process creation times (various sorts).lat_rpcβ ``hot potato'' transaction through Sun RPC over UDP or TCP.lat_selectβselectlatencylat_sigβ signal installation and catch latencies. also protection fault signal latency.lat_syscallβ non trivial entry into the system.lat_tcpβ ``hot potato'' transaction through TCP.lat_udpβ ``hot potato'' transaction through UDP.lat_unixβ ``hot potato'' transaction through UNIX sockets.lat_unix_connectβ the time it takes to establish a UNIX socket connection.
π OTHER MEASUREMENTS π
mhzβ processor cycle timetlbβ TLB size and TLB miss latencylineβ cache line size (in bytes)cacheβ cache statistics, such as line size, cache sizes, memory parallelism.streamβ John McCalpin's stream benchmarkpar_memβ memory subsystem parallelism. how many requests can the memory subsystem service in parallel, which may depend on the location of the data in the memory hierarchy.par_opsβ basic processor operation parallelism.
π SEE ALSO π
bargraph(1), graph(1), lmbench(3), results(3), timing(3), bw_file_rd(8), bw_mem_cp(8), bw_mem_wr(8), bw_mmap_rd(8), bw_pipe(8), bw_tcp(8), bw_unix(8), lat_connect(8), lat_ctx(8), lat_fcntl(8), lat_fifo(8), lat_fs(8), lat_http(8), lat_mem_rd(8), lat_mmap(8), lat_ops(8), lat_pagefault(8), lat_pipe(8), lat_proc(8), lat_rpc(8), lat_select(8), lat_sig(8), lat_syscall(8), lat_tcp(8), lat_udp(8), lmdd(8), par_ops(8), par_mem(8), mhz(8), tlb(8), line(8), cache(8), stream(8)
π ACKNOWLEDGEMENT π
funding for the development of these tools was provided by Sun Microsystems Computer Corporation π«Ά
a large number of people have contributed to the testing and development of lmbench. every single one of them, legends β¨
π COPYING π
the benchmarking code is distributed under the GPL with additional restrictions, see the COPYING file. read it bestie, it's important π
π AUTHOR π
Carl Staelin and Larry McVoy
comments, suggestions, and bug reports are always welcome. like actually, they want them, slide into their mentions π
and that's the whole page, periodt π this LMBENCH(8) page came from the LMBENCH manual, and the fine print at the bottom reads (c)1994-2000 Larry McVoy and Carl... $Date$ β so yeah, copyright 1994-2000 by Larry McVoy and Carl, and there's a $Date$ placeholder where the date lives. iconic behavior, we love a version-control keyword ππ
π¦ where this page comes from
- debian bookworm: lmbench 3.0-a9+debian.1-6
- debian trixie: lmbench 3.0-a9+debian.1-9
- ubuntu jammy: lmbench 3.0-a9+debian.1-6
- ubuntu noble: lmbench 3.0-a9+debian.1-6build3
- ubuntu questing: lmbench 3.0-a9+debian.1-9
- ubuntu resolute: lmbench 3.0-a9+debian.1-10
- ubuntu stonking: lmbench 3.0-a9+debian.1-10
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms