Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

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
  • No labels