PECint has evolved since its original definition in 1992 ("CPU92") to include CPU95, CPU2000, CPU2006, and most recently SPECCPU_2017. The 2006 version is most used as a reference for comparison of real-life workloads. SPECint benchmarks both the CPU and memory subsystem as well as the compiler. Application specific benchmarking is the obvious best method to predict the performance of the system-it literally is a benchmark of the actual application. The challenge with application specific benchmark is its implementation time. The choice of (hardware) architecture is done before the software teams engage making an application specific benchmark an unrealistic luxury. Consider an intermediate solution of benchmarking "proof point" application as we've explained in Chapter 10, Interoperability and Test, as a performance reference if it's possible to capture key performance elements as a part of this benchmark. Memory and I/O dimensioning Even before the application is implemented, we can estimate the required memory through- put by analyzing the packet flow through the system as we've shown in the performance chapter of the system. The theoretical performance number needs to be matched to the achievable memory throughput of the target devices used to make sure that the memory interface does not become a system bottleneck. STREAM is a synthetic low-level benchmark designed to measure sustainable memory bandwidth (in MB/s) for four kernels (Copy, Scale, Add, and Triad) with freely available source code. STREAM benchmarks the memory subsystem of a system. LMbench is a series of synthetic low-level benchmarks designed to measure bandwidths for eight application use-cases (file read/write, socket IO, and memory IO) where the memory read and write benchmarks are the most reported ones. LMbench includes latency measurements. LMBench benchmarks the memory subsystem (internal caches and external DDR) of a system. Chapter 4 Hardware architecture choices Hardware offload Some processor vendors offer support for hardware offloa