Rootserver Frage für Gameserver

palle

New Member
Hallo,
ich spiele mit dem Gedanken mir einen Root Server zu mieten.
Ich wollte daher fragen wie viel Leistung der Root benötigt, wenn folgendes darauf laufen soll:

1x Clanpage
1x Cuppage
1x Public Server CS GO 22 Slot
4x War Server a 12 Slot CS GO 128 Tick
1x Go TV
1x TS3 bzw. TS5 (ca. 60 - 180 user)

LG palle
 
Last edited:

d4f

Kaffee? Wo?
Generell sollte man keine "Echtzeit"-Anwendungen wie Gameserver und Lastaufgaben wie Webseiten auf der gleichen Maschine betreiben.
Leistungsmässig heute etwas weniger relevant ausser wir reden über Applikationen wie Wordpress welche pro Aufruf sich mal gerne 250+MB Ram und mehrere Sekunden CPU-Zeit bedienen.

In aller Regel macht es aber viel weniger Aufwand für 2 Seiten einen Webhoster zu verwenden (ich kann Uberspace empfehlen wenn es wirklich flexibel sein soll) als die ganzen Stacks selber zu verwalten. Als langjähriger Sysadmin wäre es mir zumindest schlicht zuviel Arbeit...

Was die Gameserver dann angeht, die Slotanzahl allein ist schon beachtlich und lässt sich nur schlecht bis gar nicht mit Billig-VPS von Massen-Anbieter bedienen. Relevant sind hier hauptsächlich die Operationen/Prozessor da SRCDS (Source Server) meines letztens Wissenstandes (will heissen 2015/17) fast alles auf dem Mainthread berechnet und damit faktisch singlecore ist. (Mods haben zzgl generell eigene Threads)

Ob für deinen Bedarf ein hochwertigerer VPS (zB PHP-Friends "L") reicht oder es doch volldedizierte und damit teurere Hardware sein soll, kann ich dir nicht aus dem Stegreif sagen. Würde aber mal behaupten dass ein VPS reicht.
 

playeffect.de

New Member
Du solltest auf jeden Fall zu einem dedizierten Server greifen. So ist sichergestellt dass dir die Ressourcen zu 100% zur Verfügung stehen und deine Gameserver nicht durch andere Kunden auf dem Host z. B. bei einem vServer beeinflusst werden.

Bei CSGO solltest du zu einem Server mit einem CPU, der viel Single Core Power bietet greifen. Das ist vor allem wichtig wenn deine CSGO Server auf Tick 128 laufen sollen. RAM sind sicherlich 16-32GB ausreichend. Optional sollte der Server über eine SSD verfügen, was bei CSGO aber nicht so wichtig ist.
 

nexus

Well-Known Member
Du solltest auf jeden Fall zu einem dedizierten Server greifen. So ist sichergestellt dass dir die Ressourcen zu 100% zur Verfügung stehen und deine Gameserver nicht durch andere Kunden auf dem Host z. B. bei einem vServer beeinflusst werden.
Diese Aussage ist zu pauschal und deswegen so auch nicht ganz korrekt.
Höherwertige vServer von guten Anbietern (wie z.B. von d4f empfohlen) stellen die spezifizierten Ressourcen ebenfalls zu 100% zur Verfügung und man hat den Vorteil, daß bei Bedarf nach oben skaliert werden kann. Wenn ein Dedi nicht ausreicht, muß man einen kompletten Umzug auf eine größere Maschine machen.
 

playeffect.de

New Member
Wir haben in der Vergangenheit auch viel mit vServern getestet. Gerade CSGO Gameserver mit Tickrate 128 sollten aus Performance Gründen nicht auf vServern betrieben werden. Selbst auf dedizierter Hardware mit nicht ausreichend Single Core Power ist das ein Problem. Seit dem letzten Engine Update von CSGO brauchen die CSGO Server extrem viel CPU Power. CSGO ist nicht Multi-Core fähig weshalb die Single Core Power ausschlaggebend ist. Steht nicht ausreichend Single Core Power zur Verfügung kommt es auch schon bei wenigen Spielern zu Laggs. Hier sollte man sich in entsprechende Benchmarks einlesen und die richtige CPU für das hosten von CSGO Servern auswählen. Neuere Spiele sind nicht so empfindlich und können viel besser auf vServern betrieben werden. Bei CSGO kann ich es ausdrücklich nicht empfehlen und nur davon abraten. Wenn man CSGO Server für Liga Spiele wie ESL betreibt, sollte man sich den Rat zu Herzen nehmen. Davon gehe ich aus bei 4x War Server und GOTV. Wenn man allerdings nur ein bisschen Spaß beim Spielen haben möchte, kann man CSGO Server natürlich auch auf vServern hosten. Allerdings muss man dann auch Laggs in Kauf nehmen und kann den Server nicht auf Tick 128 laufen lassen.
 

DeaD_EyE

Blog Benutzer
Ist nicht Multi-Core fähig? Woher weißt du das?
Dann erkläre mir mal, wieso der srcds_linux bei mir 16 Threads startet.

Beweis:
Code:
In [1]: import psutil

In [2]: procs = [p for p in psutil.process_iter() if "srcds_linux" in p.name()]

In [3]: procs
Out[3]: [psutil.Process(pid=31240, name='srcds_linux', started='19:42:43')]

In [4]: srcds = procs[0]

In [5]: srcds.threads()
Out[5]:
[pthread(id=31240, user_time=4.85, system_time=2.94),
 pthread(id=31241, user_time=0.0, system_time=0.0),
 pthread(id=31265, user_time=0.0, system_time=0.0),
 pthread(id=31266, user_time=0.0, system_time=0.0),
 pthread(id=31282, user_time=0.01, system_time=0.02),
 pthread(id=31290, user_time=0.0, system_time=0.0),
 pthread(id=31291, user_time=0.35, system_time=0.14),
 pthread(id=31293, user_time=0.0, system_time=0.0),
 pthread(id=31297, user_time=0.0, system_time=0.0),
 pthread(id=31298, user_time=0.0, system_time=0.0),
 pthread(id=31299, user_time=0.0, system_time=0.0),
 pthread(id=31301, user_time=0.0, system_time=0.0),
 pthread(id=31302, user_time=0.06, system_time=0.0),
 pthread(id=31303, user_time=0.0, system_time=0.0),
 pthread(id=31305, user_time=0.0, system_time=0.03),
 pthread(id=31307, user_time=0.0, system_time=0.0)]

In [6]: len(srcds.threads())
Out[6]: 16
 

playeffect.de

New Member
Es startet mit mehreren Threads, richtig. Es wird aber effektiv nur ein Thread ausgelastet. Einfach mal mit realen Spielern testen. Mit Bots funktioniert es sicherlich auch. Gerne mal 20 Bots mit Tick 128 testen dann wirst du auch sehen dass es zu starken Laggs kommt und es nicht spielbar ist.
 

DeaD_EyE

Blog Benutzer
Tick 128 würde ich eh nicht verwenden, da die Engine gar nicht dafür geschaffen ist.
Von Problemen wurde immer wieder berichtet.

Den Test wirst du wohl selber machen müssen (am besten unter Realbedingungen).
Bots sollte man auf gar keinen Fall zum Testen eines Servers verwenden.
Selbst wenn die Threads deswegen ausgelastet würden, entspricht es nicht dem Regelbetrieb eines Gameservers.
 

d4f

Kaffee? Wo?
Ich muss zugeben dass ich seit paar Jahren aus dem Gaming-Hosting raus bin und mein Interesse daran sich grösstenteils auf die Optimierung der Virtualisierungsinfrastruktur beschränkt hat. Allerdings würde es mich sehr überraschen wenn Valve, welche sich in den rund 12 Jahren wo ich mich mit Srcds beschäftigte nicht viel um Netcode kümmerten, plötzliche revoluntionär wurde und endlich den Netzwerkcode inklusive Hitbox-Detection neu geschrieben hätte. Eine entsprechende Changelog hätte vermutlich doch noch mitgekriegt. Hier stimme ich also @DeaD_EyE komplett zu, mit etwas Erklärung:

Grundregel der hlds (GoldSRC) Engine war immer dass man nie über 1000fps gehen darf, und bei der srcds (Source) Engine Varianten dass man nie über Tickrate 100 gehen soll. Bei allen darüber liegenden Werten ist selbst auf mehr als ausreichend dimensionierten Systemen durch die Interdependenzen und notwendige Simulationen von dem pösen pösen Choke aus zu gehen - also dass der Client Updates zu spät erhält, gar nicht erhält oder zu spät verarbeiten kann.

Resultat ist dass die empfindlich abgestimmten Spielzustände zwischen Server und Client asynchron werden und damit zwei Probleme gleichzeitig eintreten
- der Server muss full-frames an die Clients zur Resynchronisierung senden da die üblichen Delta-Frames nicht wieder zusammenführbar sind. Ein full-frame kann aufgrund der Grösse die Übertragungskapazität eines belasteten Servers kurzfristig noch weiter überlasten und auch bei vielen Clients die Bandbreite sättigen was zu noch mehr "choking" und schlimmstenfalls weiteren full frames führt.
- die zwischenzeitlich mehrere Frames umfassenden predictions des Clients entsprechen gar nicht mehr denen des Servers und müssen zurückgerollt werden - dies entspricht den Lagsprüngen des Clients. Die einhergehenden hitbox-Divergenzen kann man sich ja ausmalen.

Als Anmerkung: bei Tick100 reden wir in einer perfekten Welt von einer (Server) Frame-Berechnung per 10ms. Bei Tickrate128 von 1 Berechnung pro 7.8ms, also einem Unterschied von 2.2ms. Ein üblicher Heimanschluss (ausser FTTH) hat generell noch immer 20-30ms _mindestens_ zu bestangebundenen Rechenzentren. Die kleinsten Verbindungsstörungen (Anmerkung: UDP!) oder clientseitigem Choke führen also für den Netzwerkcode zu mehr Fehltritten als die Differenz zwischen t100 und t128.

Die Engine war (und vermutlich ist) nie darauf ausgelegt gewesen in entsprechenden Raten betrieben zu werden und es funktioniert nur in sehr engen Rahmenbedingungen verlässlich. Es gab einen guten Grund warum Valve beim Srcds-Update Orangebox die Tickrate runterkorrigierte; zumal unter TF2 war es sonst schlicht möglich die Engine stabil zu betreiben. Der L4D Zweig der Source-Engine war wegen den exorbianten AI-Berechnungen und massiven Frame-Updates sogar auf um die 30 Frames begrenzt worden da sonst eine stabile Verbindung praktisch unmöglich wurde.


Ist nicht Multi-Core fähig? Woher weißt du das?
Dann erkläre mir mal, wieso der srcds_linux bei mir 16 Threads startet.
Srcds ist seit Orangebox multithreaded aber mit Ausnahme gewisser AI-Berechnungen verwenden fast alle Spiele nur die Mainthread-Logik CPU-lastig während andere Threads sich um asynchrone Operationen (Logging, ...) kümmern "dürfen".
Ausnahmen sind Mods, Erweiterungen, ... welche generell eigene Threads mitbringen um den mainthread zu entlasten und oft selber sehr hohen CPU-Verbrauch haben. Faktisch braucht man also Multicore Systeme um die Softrealtime Anforderungen des Mainthreads zu garantieren aber eine hohe Last wird man auf nur einem Core haben. Bei 1-2 Gameserver pro CPU-Die kann man also tatsächlich von Turboboost profitieren.

Gerade CSGO Gameserver mit Tickrate 128 sollten aus Performance Gründen nicht auf vServern betrieben werden.
Gameserver haben eine Soft-Realtime Anforderung. Diese ist in virtualisierten Umgebungen keineswegs unmöglich zu erreichen, man muss aber davon ausgehen dass der Hoster ein entsprechend optimierstes System mit dedizierten Ressourcen und niedriger Belastung vorweisen kann - preislicht, aber nicht technisch-verfügbar, liegt man also fast im gleichen Bereich.

Neuere Spiele sind nicht so empfindlich und können viel besser auf vServern betrieben werden.
Huh? Der Netode kann bei modernen Ansätzen zwar deutlich besser und schneller eine World-recovery durchführen und erlaubt generell auch tickausfälle (respektive läuft sogar mit dynamischen Tickraten - in einigen Fällen sogar mit unterschiedlichen Tickraten für unterschiedliche Spielbereiche) aber das bedeutet nicht dass das _gleiche_ Hostsystem nicht die gleichen Probleme inherent bei allen Spielen verursacht. Sie sind nur besser kaschiert..


Steht nicht ausreichend Single Core Power zur Verfügung kommt es auch schon bei wenigen Spielern zu Laggs. Hier sollte man sich in entsprechende Benchmarks einlesen und die richtige CPU für das hosten von CSGO Servern auswählen.
Wir reden hier über ein Spiel das vor 8 Jahren rauskam, auf einer Engine von vor 16 Jahren läuft deren letztes grosse Update vor 12 Jahren kam.
Ich kann mir schwerlich vorstellen dass es nicht mit aktuellen Server-Prozessoren auf Basis-Takt möglich ist die Engine innerhalb ihrer spezifierten Parameter chokefrei zu betreiben statt (übertrieben) 5Ghz 9800K oder übertaktete Ryzen7 drauf zu schmeissen.

Achtung: Dies betrifft nicht die neuere Source2 Engine (2015) welche erst in Zukunft ihre angepassten Netcode-Fähigkeiten zeigen muss und akuell noch keine Multiplayer-Egoshooter betreibt.
 
Top