Anwendung (Gameserver) verwendet nur eine CPU - Systemeinstellungsfehler oder nicht?

  • Servus!

    Ich betreibe nun schon seit etwas längerer Zeit einen KVM-Server mit folgenden Spezifikationen:

    • Festplatte: 960 GB SAS
    • Arbeitsspeicher DDR 4 ECC: 32 GB
    • Prozessorkerne: 10 dediziert
    • Prozessor: Intel® Xeon® Gold 6140 / 6230

    Auf diesem Server betreibe ich einen Gameserver (FiveM, Multiplayer-Modifikation für Grand Theft Auto V) der recht erfolgreich ist.
    Durch den Andrang von Spielern kamen immer mehr Leistungsprobleme an das Tageslicht.
    Nach einer von mir umfangreichen Überprüfung der Serverressourcen (Also die Skripte die darauf laufen) und Fahrzeuge sowie Mapaddons die über den Server gestreamt werden bin ich überraschenderweise darauf aufmerksam geworden mittels des `top`-Befehls in einer SSH-Sitzung, das die CPU mich limitiert, weil annscheinend nur ein Kern in Verwendung ist. Ein Ausschnitt dazu:

    pasted-from-clipboard.png


    Man sieht, das die CPU auf einem Kern eindeutig überlastet ist, das besagt auch die Statistik im Servercontrolpanel:

    pasted-from-clipboard.png


    Das komische daran ist oder ich verstehe vielleicht die Syntax des Befehls nicht, das `vmstat` nichts auffälliges zeigt (wahrscheinlich auch weil dieses alle Kern miteinbezieht?):

    pasted-from-clipboard.png


    Selbiges gilt für `iostat`, wo die Idle bei 95% liegt (gleiches gilt für vmstat-Befehl?):

    pasted-from-clipboard.png


    Ich bin mir nun echt nicht sicher was da abgeht, ob ich eine Systemeinstellung falsch konfiguriert habe oder ob die Anwendung selbst tatsächlich nur einen CPU-Kern verwenden kann.
    Ich habe auch nicht soviel Ahnung mit der Analyse von Software oder ähnliches in Linux, also wenn jemand weitere Ideen hat das ganze zu prüfen und dem Grund auf die Spur zu gehen bzw. mir zu helfen, bin ich mehr als glücklich.

    Ich bedanke mich schon mal für jede Antwort.

  • Ich glaube das Problem an der Software sowieso schon gefunden zu haben: mit einer Technologie von FiveM die mehr Spieler als 32 ermöglicht, steigt die CPU-Last eines Kerns auf über 100% während die anderen soweit ich weiß niedrig bleiben.
    Ohne diese Technologie liegt die Auslastung bei ~55% laut `top`.

  • Es handelt sich um OneSync. Ein Entwickler hat mir auf Discord folgendes geschrieben:

    Quote

    only some tasks are parallelizable, a game is a linear simulation so one core will always be more loaded

    and linux network stack sucks for async i/o

    1s is of course heavier as the server does actual game logic, so it shouldn't 'be the same'

    Das heißt, das sich die Aussage von Ihnen und dem Entwickler widersprechen. Ich hatte mir auch gedacht, das OneSync besser optimiert ist und die Leistung optimaler nutzen kann.

    Die Linux-Serversoftware von FiveM ist nicht so optimiert wie die von Windows, aber es würde mich doch stark wundern das es derart eingeschränkt ist, das die Lastenverteilung nicht funktioniert und alles auf einem Kern stattfindet.

  • Und wie ist es in der Realität? Da wird doch offenbar im Wesentlichen nur ein Kern genutzt...

    Es ist doch bei GameServern üblich, dass die nicht sehr Multicore freundlich sind, sondern eher auf ClockSpeed gehen - was natürlich bei den Xeon Gold 6140 eher suboptimal ist.


    Die GameEngines leiden unter den gleichen Problemen - teilweise gehören die Server ja zu der Engine mit dazu, DirectX hat es auch nicht so mit Parallelisierung.

    Die Netcup VMs sind für solche Spieleserver einfach ungeeignet. Evtl. bist du hier mit einem dedizierten Server besser bedient.

    Brauchbare gibt es schon ab 40€.

  • Die GameEngines leiden unter den gleichen Problemen - teilweise gehören die Server ja zu der Engine mit dazu, DirectX hat es auch nicht so mit Parallelisierung.

    Die Netcup VMs sind für solche Spieleserver einfach ungeeignet. Evtl. bist du hier mit einem dedizierten Server besser bedient.

    Brauchbare gibt es schon ab 40€.

    Aktuell überlege ich darüber, auf einen besseren Server umzusteigen. Danke für die Empfehlung, ich schaue mich um!