Performance Co-Pilot (PCP) is a framework and set of services for supporting system-level performance monitoring and performance management. It provides a unifying abstraction for all of the interesting performance data in a system, and allows client applications to easily retrieve and process any subset of that data using a single API. A client-server architecture allows multiple clients to monitor the same host, and a single client to monitor multiple hosts. Archive logging and replay are integrated so that a client application can use the same API to process real-time data from a host or historical data from an archive.
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.
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.
fio is an I/O tool meant to be used both for benchmark and stress/hardware verification. It has support for 19 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, OpenBSD, OS X, OpenSolaris, AIX, HP-UX, Android, and Windows.
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.
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.
pmbw is a set of assembler routines to measure the parallel memory (cache and RAM) bandwidth of modern multi-core machines. Memory bandwidth is one of the key performance factors of any computer system. Today, measuring the memory performance often gives a more realistic view of the overall speed of a machine than pure arithmetic or floating-point benchmarks. pmbw contains a set of very basic functions which are all hand-coded in assembler to avoid any compiler optimizations. These basic functions are modeled after the basic inner loops found in any data processing, sequential scanning and pure random access. Any application will have a memory access pattern which is somewhere between these two extremes. The current version of pmbw supports benchmarking 16-, 32-, 64-, 128-, or 256-bit memory transfers on x86_32-bit, x86_64-bit, and ARMv6 systems.
Zoom is a low-overhead graphical and command line profiler for Linux. Profiles are system-wide, precise down to the instruction level, and capture complete backtraces of C/C++/ObjC/Fortran/Assembly code. This lets you see exactly where time was spent, what code was running (user or kernel), and how that code was called. Drill down into a specific symbol, and Zoom shows source and assembly annotated with general and processor-specific tuning advice. It saves profiles as a single, self-contained session file that can be emailed or attached to bug reports. This lets you share what you find with colleagues or archive it for later review. Zoom also supports remote network profiling and scripting, making it ideal for embedded or server systems and automated workflows.