Rootserver: Performaceproblem durch falsche Cache-Größe?

  • Ich habe heute den RS4000 Plus ein wenig getestet. Er ist im Großen und Ganzen so schnell, wie man es von den 12 Kernen erwarten würde, die "normalen" CPU-Tests bestreitet er durchwegs flott; ein Detail sticht jedoch heraus welches ich mir im Folgenden näher angeschaut habe.


    Dazu habe ich den RS4000 Plus gegen einen ähnlichen Server eines anderen Anbieters antreten lassen.

    Die jeweils verbauten CPUs:


    Intel Xeon E5-2673 v3 (Anbieter X)

    https://www.cpubenchmark.net/c…on+E5-2673+v3+%40+2.40GHz

    http://www.cpu-world.com/CPUs/…-Xeon%20E5-2673%20v3.html


    Intel Xeon E5-2680 v4 (netcup)

    https://www.cpubenchmark.net/c…on+E5-2680+v4+%40+2.40GHz

    http://www.cpu-world.com/CPUs/…-Xeon%20E5-2680%20v4.html


    Während der Tests läuft bis auf das Grundsystem nichts.


    In den meisten Tests ist der netcup-Server leicht vor der Konkurrenz, wie man es auch von den CPUs her erwarten würde.

    Der L2-Cache scheint allerdings langsam zu sein:


    $ stress-ng -C 4 --cache-level 2 -t 10 --metrics-brief

    (Starte vier Cache-Stressoren am L2-Cache für 10 Sekunden und zeige das Ergebnis)


    Anbieter X:

    ~17000


    netcup:

    ~480


    Zum Vergleich mein mittelprächtiger Laptop mit einem Intel Core i5-2540M, im Hintergrund laufen zwei Browser und ein Musikplayer:

    ~14000


    Beim Test der Caches L1 und L3 ist netcup wieder schneller.


    Also warum diese Auffälligkeiten beim Cache?

    "lscpu" zeigt etwas Interessantes:


    Anbieter X:

    $ lscpu

    (...)

    L1d cache:             32K

    L1i cache:             32K

    L2 cache:              256K

    L3 cache:              30720K

    (...)

    also genau so, wie es auch auf der physikalischen CPU vorhanden ist.


    netcup:

    $ lscpu

    (...)

    L1d Cache:               32K

    L1i Cache:               32K

    L2 Cache:                4096K (hat in Wirklichkeit nur 256K L2-Cache)

    L3 Cache:                16384K (hat in Wirklichkeit aber 35M/35840K L3-Cache)

    (...)


    wenn ich auf meinem Laptop eine VM starte (Virtualbox-KVM), werden auf diese auch die korrekten Cache-Werte durchgereicht und "lscpu" zeigt dieselben Größen wie auf dem Host.



    Jetzt ist meine Vermutung, dass die Performanceprobleme beim Cache von dessen Größe herrühren, die nicht der physikalischen Größe entspricht. Auch mein RS1000 zeigt diese Größen.

    Stellt sich die Frage, warum sind die Caches so komisch eingestellt? Ich kann mir diese Zahlen nicht erklären...

  • Hallo,


    hast du zu diesem Thema neue Informationen? Was passiert wenn du die Anordnung von Kernen und CPUs im SCP änderst, vielleicht hat dies noch eine Auswirkung?

    Ich kann dies leider aktuell nicht in ruhe Testen in meiner Umgebung.

  • Es gibt Neuigkeiten!


    Support:

    Quote

    Diese "komischen" Cache-Größen sind Standard bei den meisten eingesetzten QEMU/KVM-Versionen. Grund hierfür sind wohl Probleme bei der Kompatibilität bzgl. der Hostplattform. Allerdings wurde in älteren QEMU Versionen (bzw. werden immer noch), die richtigen Cache-Werte durch gereicht. Selbes gilt für die aktuellsten Major-Releases, dort wurde dies jetzt erst wieder eingeführt, da man anscheinend die Probleme lösen konnte.


    Da dies allerdings nur die Standardwerte betrifft, gibt es dennoch die Möglichkeit die richtigen Cache-Größen durch zureichen. Für Ihren vServer [xxx] habe ich diese Änderung vorgenommen. Diese wird nach dem Herunterfahren und starten über das Servercontrollpanel dann auch aktiv.


    Die reale Performance sollte dies aber nicht beeinflussen, da wird wohl lediglich der Benchmark Aufgrund des zu großen L2 Cache-Werts etwas verwirrt sein.


    Somit wäre das auch geklärt :)

    Also war es aufgrund der leidigen Kompatibilität so eingestellt. Meine Rootserver laufen jetzt mit "richtigen" Cache-Werten ohne Probleme, und der L2-Benchmark von oben meldet 16500 Punkte.


    Einen Performancevergleich mit CPU-Aufbau habe ich nicht gemacht, allerdings glauben manche Programme bei 12 Sockeln zu 1 Kern, dass man jetzt 12 L3-Caches hätte, also im Falle des E5-2680v4 ganze 420MB!

    Also unter Linux wenn man nicht gerade Programme mit Core-basierten Lizenzen hat, lieber so einstellen dass es der echten CPU nahe kommt - 1 Sockel zu 12 Kernen.


    Man muss bei dieser Sache aber beachten dass es sich um einen rein synthetischen Benchmark handelt, der in Real-World-Szenarien wie der Support sagte wahrscheinlich keine Auswirkungen hat. Ich konnte jedenfalls keine feststellen.

    Dennoch habe ich gleich nachgefragt ob man das vielleicht in Zukunft bei allen Rootservern gleich "richtig" einstellen könnte, wenn schon, denn schon und so :)