Archive for the ‘Akka’ Category

h1

Akka.NET

April 10, 2014

I recently started to look at https://github.com/akkadotnet/akka.net and saw on Twitter a request for performance numbers on fast multi core maschines.<br>
Akka.NET is a port of the popular Akka framework on the JVM/Scala to .NET. It is following the idea of Erlang.

So I ran the tests on two of my workstations and servers.

    2*Intel Xeon CPU E5-2630v2 @ 2.6 Ghz
    
    Worker threads: 1023
    OSVersion: Microsoft Windows NT 6.2.9200.0
    ProcessorCount: 24
    ClockSpeed: 2601 MHZ
    Actor Count: 48
    
    Throughput Setting, Messages/sec
    1, 2356000 messages/s
    5, 8982000 messages/s
    10, 15251000 messages/s
    15, 20394000 messages/s
    20, 24057000 messages/s
    30, 29585000 messages/s
    40, 29615000 messages/s
    50, 31914000 messages/s
    60, 32467000 messages/s
    70, 33936000 messages/s
    80, 36407000 messages/s
    90, 35169000 messages/s
    100, 37174000 messages/s
    200, 39164000 messages/s
    300, 39318000 messages/s
    400, 39318000 messages/s
    500, 46728000 messages/s
    600, 39682000 messages/s
    700, 38961000 messages/s
    800, 49099000 messages/s
    900, 41841000 messages/s
    Done..
    

    1*Core I7 -3930k
    C:\Users\Dell\Documents\GitHub\akka.net\Examples\PingPong\bin\Release>PingPong.e
    xe
    Worker threads: 1023
    OSVersion: Microsoft Windows NT 6.1.7601 Service Pack 1
    ProcessorCount: 12
    ClockSpeed: 3201 MHZ
    Actor Count: 24
    
    Throughput Setting, Messages/sec
    1, 3371000 messages/s
    5, 18461000 messages/s
    10, 24469000 messages/s
    15, 26666000 messages/s
    20, 27985000 messages/s
    30, 36764000 messages/s
    40, 38314000 messages/s
    50, 39215000 messages/s
    60, 40705000 messages/s
    70, 36585000 messages/s
    80, 41899000 messages/s
    90, 41782000 messages/s
    100, 43041000 messages/s
    200, 43731000 messages/s
    300, 44910000 messages/s
    400, 38461000 messages/s
    500, 43795000 messages/s
    600, 38363000 messages/s
    700, 45385000 messages/s
    800, 46224000 messages/s
    900, 45871000 messages/s
    Done..

These numbers are quite impressive. I ran the test also on an older version first (zip on githup instead of a repo checkout) and the throughput had doubled between the old version.<br>
I have usually been a fan of staying as close to possible to the threading primitives of .NET/Windows to gain maximum control about performance. This leads to a combination of increased responsibility and increase number of implementation possibilities. Such numbers help me to get trust into using a library instead of trying to optimize everything on my own.<br>