Perf
is a program that contains several micro-benchmarks related to RAMCloud. It includes all of the server code but runs as a stand-alone program, not in a cluster configuration. This page contains the output of that program at various points in time, so it provides a history of RAMCloud micro-benchmark performance.
Note: for consistency, please take all measurements on rc20 and be sure to compile with DEBUG=no
.
July 18, 2011
atomicIntCmpX 6.26ns AtomicInt::compareExchange atomicIntInc 6.05ns AtomicInt::inc atomicIntLoad 0.57ns AtomicInt::load atomicIntStore 0.58ns AtomicInt::store atomicIntXchg 6.06ns AtomicInt::exchange bMutexNoBlock 14.66ns Boost mutex lock/unlock (no blocking) cppAtomicExchg 5.93ns Exchange method on a C++ atomic_int cppAtomicLoad 13.66ns Read a C++ atomic_int dispatchPoll 7.62ns Dispatch::poll (no timers or pollers) getThreadId 2.27ns Retrieve thread id via ThreadId::get lfence 2.84ns Lfence instruction lockInDispThrd 7.05ns Acquire/release Dispatch::Lock (in dispatch thread) lockNonDispThrd 252.79ns Acquire/release Dispatch::Lock (non-dispatch thread) sfence 1.50ns Sfence instruction spinLock 16.46ns Acquire/release SpinLock
Misc
Some 2.3GHz Xeon, 2011-08-23
atomicIntCmpX 10.63ns AtomicInt::compareExchange atomicIntInc 8.71ns AtomicInt::inc atomicIntLoad 0.44ns AtomicInt::load atomicIntStore 0.43ns AtomicInt::store atomicIntXchg 7.83ns AtomicInt::exchange bMutexNoBlock 42.26ns Boost mutex lock/unlock (no blocking) cppAtomicExchg 7.97ns Exchange method on a C++ atomic_int cppAtomicLoad 7.69ns Read a C++ atomic_int cyclesToSeconds 10.42ns Convert a rdtsc result to (double) seconds cyclesToNanos 14.49ns Convert a rdtsc result to (uint64_t) nanoseconds dispatchPoll 20.41ns Dispatch::poll (no timers or pollers) functionCall 3.05ns Call a function that has not been inlined getThreadId 3.04ns Retrieve thread id via ThreadId::get lfence 4.79ns Lfence instruction lockInDispThrd 6.10ns Acquire/release Dispatch::Lock (in dispatch thread) lockNonDispThrd 283.43ns Acquire/release Dispatch::Lock (non-dispatch thread) sfence 3.60ns Sfence instruction spinLock 25.17ns Acquire/release SpinLock throwInt 3.32us Throw an int throwIntNL 4.54us Throw an int in a function call throwException 3.43us Throw an Exception throwExceptionNL 4.69us Throw an Exception in a function call throwSwitch 6.45us Throw an Exception using ClientException::throwException