These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Informationen und Bekanntmachungen

 
  • Topic is locked indefinitely.
 

Devblog-Diskussion: "Building a Balanced Universe"

First post
Author
CCP Phantom
C C P
C C P Alliance
#1 - 2013-12-03 18:11:42 UTC
Kommentare, Fragen und Vorschläge zu dem Devblog Building a Balanced Universe sind hier herzlich willkommen.

CCP PrismX beschreibt in dem Blog die Überarbeitung des Cluster-Loadbalancers, der dafür sorgen soll, dass die Last des Tranquility-Clusters möglichst gleichmäßig auf die vorhandenen CPU-Kerne verteilt wird und die Mechanik des Time Dilation (TiDi) nur in Ausnahmefällen (automatisch) einsetzt.

Ein Loadbalancer ist deswegen notwendig, da deutlich mehr Sternensysteme und anderweite Dienste existieren als CPU-Kerne im Tranquility-Cluster. Deswegen müssen mehrere Systeme jeweils auf einen CPU-Kern gelegt werden. Diese Belegung soll natürlich optimal sein, sodass alle CPU-Kerne möglichst gleichmäßig belastet sind. Da einige Systeme deutlich stärker belastet sind als andere Systeme (man denke nur an beliebte Systeme für Missionen und nahezu ausgestorbene Lowsec-Systeme), kann man nicht einfach die CPU-Kerne mit einer konstanten Menge an Systemen belegen. Zudem ändert sich die Belastung der einzelnen Systeme, sodass ingesamt ein Loadbalancer notwendig wird, der in jeder Downtime die Belegung der CPU-Kerne mit Systemen neu berechnet.

In der Vergangenheit wurden Systeme in einer Constellation möglichst auf denselben CPU-Kern (auch als Node bekannt) gelegt, aus Gründen die inzwischen widerlegt sind. Ebenso haben wir seit dem Sommer feststellen müssen, dass auch Systemen, deren Last gut vorhersehbar ist, oftmals TiDi eingesetzt wurde. Zudem verteilte der Loadbalancer auch weit entfernte Systeme auf denselben CPU-Kern, sodass TiDi oftmals unvorhergesehen und scheinbar mysteriös "aus dem Nichts" in Systemen niedriger Last einsetzte (weil andere, hochbelastete, aber weit entfernte Systeme auf demselben CPU-Kern liefen).

Der Loadbalancer wurde daher neu geschrieben (in Phython und nicht mehr SQL) und verbessert. Der Balancer basiert auf einer rekursiven Bisektion und erzeugt zusammenhängende Graphen. Es wird also nicht mehr weit entfernte Systeme geben, die auf demselben CPU-Kern laufen. Nullsec- und Empire-Gebiet werden hierbei in getrennten Abläufen ausbalanciert und hängen nicht miteinander zusammen.

Der neue Loadbalancer wird ab dem 4. Dezember 2013 eingesetzt. Der Originalblog enthält weitere Informationen und Diagramme.

CCP Phantom - Senior Community Developer

Tatjana Braun
Black Lotus Industrial
#2 - 2013-12-04 00:08:07 UTC
super!
hab hier mal ne frage: inwieweit ist es möglich hier automatisiert und kurtzfristig rechenkapazität zuzuschalten? beispielsweise bei einer 0.0 schlacht und in welchem umfang währe das bei 3000 bis 4000 beteiligten? kann man das nicht auch automatisieren?

http://eve-radio.com/ https://www.daisuki.net/ für slle animefans

l0rd carlos
the king asked me to guard the mountain
#3 - 2013-12-04 00:32:16 UTC
Tatjana Braun wrote:
super!
hab hier mal ne frage: inwieweit ist es möglich hier automatisiert und kurtzfristig rechenkapazität zuzuschalten? beispielsweise bei einer 0.0 schlacht und in welchem umfang währe das bei 3000 bis 4000 beteiligten? kann man das nicht auch automatisieren?


Du kannst vor der Downtime als CEO eine Node reinforcement beantragen. Das wird dann automatisch bearbeitet.

Live ohne downtime ein system auf ein anderen Node zu verschieben geht noch nicht so gut. Die arbeiten aber drann.

Youtube Channel about Micro and Small scale PvP with commentary: Fleet Commentary by l0rd carlos

Tatjana Braun
Black Lotus Industrial
#4 - 2013-12-04 08:36:02 UTC
Das mit der anfrage weis ich.
Mir gings um das Live verschieben.

http://eve-radio.com/ https://www.daisuki.net/ für slle animefans

eXeler0n
Shark Coalition
#5 - 2013-12-04 08:58:58 UTC
Das gibt bisher noch Probleme, da der Node ja noch Verknüpfungen zu Datenbankservern usw. hat.

Du müsstest dann allen anderen Servern mitteilen, wohin der Node verlegt wird und eine Lösung für die Übergangsphase finden. Auch weiß ich nicht, ob du diese neue Zuordnung nicht sogar für jeden Spieler und jedes Objekt machen müsstest. Das wäre dann eine riesen Aufwand.

Zumindest wird ein Live Switch nicht einfach zu regeln sein und eventuell mit dem aktuellen Aufbau des Serverclusters gar nicht machbar sein.

eXeler0n

============================

Quafe:  http://quafe.de

Blogpack:  http://eveblogs.de

Kira Hhallas
Very Drunken Eve Flying Instructors
Brotherhood Of Silent Space
#6 - 2013-12-04 09:35:00 UTC
Du kannst es dir wir bei einem ESXi VMWare Cluster Vorstellen.
Viele Vmware Clients überleben den wechseln von einem Host zu einem anderen nicht.
Und meist macht eine SQL DB Probleme.

Wenn man jetzt den ein Sonnensystem als Client Vmware sieht, und diese auf einen anderen Host schiebt, so kanns halt sein das alle die in dem System sind oder in die betroffen System sind einfach die Connection verliehren.

Wie jetzt dahinter die Logik aussieht, welche System verschoben werden wenn die Last in einem System zu hoch wird, kann ich nicht sagen.
Es würde einleuchten, dass System die wenig Last haben auf einen anderen Node schiebe. Weil sollten Leute rausfliegen nur wenige betroffen sind. Aber damit sollen sie die "Coder" ärgern :-P.

Kira Hhallas - Austrian EvE Community - ingame =Österreich= - StoryPage - https://oneshotstorys.wordpress.com/ -


Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare

Tatjana Braun
Black Lotus Industrial
#7 - 2013-12-04 11:01:47 UTC
Ist halt grade bei big Fights im 0.0 stöhrend, aber ich verstehe schon, das es nicht grade einfach ist ein sys sofort oder auch nur halbwegs zeitnahe von 200 leute auf 4000 hochzufahren. Allerdings werden auch die flotten eher größer als kleiner.
Diese problematik wird also in Zukunft mehr.

Ich denke mal, das es veiele von euch selber schon miterlebt haben.... solche Fights sind die reinste Zeitlupenstudie... ja, es ist besser als die Lags von früher. viel besser, aber noch ist es nicht gut.

Vielleicht läst sich mit dem wechsel von SQL auf Phython ja etwas verbessern. Ich kans nur hoffen und jeder FC wohl auch.

http://eve-radio.com/ https://www.daisuki.net/ für slle animefans

eXeler0n
Shark Coalition
#8 - 2013-12-04 11:06:30 UTC
Was die bisher geändert haben war nicht das Live Balancing, sondern die Festlegung, wohin welche Systeme kommen während der Downtime.
Systeme werden nur während der DT ihren Nodes zugewiesen (meistens).

eXeler0n

============================

Quafe:  http://quafe.de

Blogpack:  http://eveblogs.de

Kira Hhallas
Very Drunken Eve Flying Instructors
Brotherhood Of Silent Space
#9 - 2013-12-04 11:14:21 UTC
Auf welcher Basis geschieht dann die Festlegung. Sicher wenn man die Aktivitäten der letzten 24 Stunden heranzieht kann man eine grobe Verteilung machen. Aber gerade bei großen spontanen Fights wird halt dann eine Drama.

Kira Hhallas - Austrian EvE Community - ingame =Österreich= - StoryPage - https://oneshotstorys.wordpress.com/ -


Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare

CCP Phantom
C C P
C C P Alliance
#10 - 2013-12-04 16:27:41 UTC  |  Edited by: CCP Phantom
Tatjana Braun wrote:
Mir gings um das Live verschieben.

Das ist momentan leider nicht möglich. Es ist leider auch nicht möglich, zusätzliche CPU-Kerne hinzuzuschalten oder zu benutzen, das relevante Stichwort hier ist, leider schon seit vielen Jahren, Global Interpreter Lock.

Insgesamt möchte ich erneut betonen, dass die im Devblog vorgestellte Überarbeitung nur die statische Belegung der CPU-Kerne mit Diensten und Sternensystemen während der täglichen Downtime betrifft. Ein Verschiebung von Sternensystemen auf andere CPU-Kerne, die nur in Ausnahmefällen und manuell durchgeführt wird, bedeutet immer eine Beendung der gegenwärtigen Sitzung mit entsprechendem Disconnect des Clients.

CCP Phantom - Senior Community Developer

mikkelsun
Gladius Veritatis
Goonswarm Federation
#11 - 2013-12-04 18:31:00 UTC
Na aber jetzt mal eine andere Idee die mir gerade so durch den Kopf geistert....


Die Systeme die jetzt ne hohe Auslastung haben... (Jita und die anderen Hubs und allgemeine Ballungszentren sind den Admins ja eig. bekannt) könnten doch (wenn das funzt) seperat auf einer wesentlich stärkeren Resource laufen.....zwar meine i9ch das so das solche temporären Belastungen sich überhaupt nicht auf die restliche Spielwelt auswirken

Nur mal so als Beispiel damals bei Battlefield....man konnte diversen Servern die Prozessoren zuweisen (wenn man mehrere Server hatte)


Wäre sowas nicht auch realisierbar in EVE?Also hohe Belastung einer Region...gleich mehr Resis verteilen das es überhaupt nicht zu eigentlich "vorhersehbaren Schwulitäten" kommt?
Kira Hhallas
Very Drunken Eve Flying Instructors
Brotherhood Of Silent Space
#12 - 2013-12-04 18:45:00 UTC  |  Edited by: Kira Hhallas
Du verwechselt da was. Ein Sternen System ist keine Exe oder ein Dienst. Genau so hinkt mein vergleich mit den VMs....

Aber da nur CCP den Code kennt :-D und der sicher Wahnsinnig gut Dokumentiert ist :-D können wir auch nur Rätsel raten.

Kira Hhallas - Austrian EvE Community - ingame =Österreich= - StoryPage - https://oneshotstorys.wordpress.com/ -


Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare

eXeler0n
Shark Coalition
#13 - 2013-12-04 18:47:51 UTC
Jita läuft schon auf einem eigenen Node, soweit ich das weiß. Leider kann ein System nicht zwei Nodes zugewiesen werden .-)

eXeler0n

============================

Quafe:  http://quafe.de

Blogpack:  http://eveblogs.de

CCP Phantom
C C P
C C P Alliance
#14 - 2013-12-04 19:04:17 UTC
mikkelsun wrote:
Die Systeme die jetzt ne hohe Auslastung haben... (Jita und die anderen Hubs und allgemeine Ballungszentren sind den Admins ja eig. bekannt) könnten doch (wenn das funzt) seperat auf einer wesentlich stärkeren Resource laufen.....

Ja, das ist möglich und wird schon jetzt gemacht - das Beispiel mit Jita passt hier sehr gut. Weiterhin kann man eine Benachrichtigung bei zu erwartenden großen Flottenschlachten schon jetzt melden (Fleet Fight Notification), sodass entsprechende Vorkehrungen getroffen werden können.



mikkelsun wrote:
Also hohe Belastung einer Region...gleich mehr Resis verteilen das es überhaupt nicht zu eigentlich "vorhersehbaren Schwulitäten" kommt?
Der neue Loadbalancer soll eine möglichst gleichmäßige Belastung der CPU-Kerne sicherstellen. Leider ist das eine statische Verteilung, die jeweils nur während der Downtime ausgeführt wird. Eine dynamische Lastverteilung im laufenden Betrieb ist zwar wünschenswert, aber mit dem momentan vorhandenen System nicht möglich.

Ebenso ist es nicht möglich, die Belastung, die in einem Sternensystem auftritt, auf mehrere CPU-Kerne zu verteilen, die ganze Arbeit kann jeweils nur von einem Kern gleichzeitig bearbeitet werden - siehe vorher erwähntes Stichwort Global Interpreter Lock.

CCP Phantom - Senior Community Developer

Kira Hhallas
Very Drunken Eve Flying Instructors
Brotherhood Of Silent Space
#15 - 2013-12-05 07:54:37 UTC
Nach welchen Faktoren wird den in der DT die System auf die CPUs verteil ?
Wird da die Aktivität der letzten 48 Stunden hergenommen und an Hand dieser dann die Ressourcen vergeben ?

Der GIL hört sich interessant an.
Das heißt das der Limitierende Faktor, in Wirklichkeit nicht unbedingt die Hardware ist, sonst Python.

Gibt's hier schon einen Plan seitens CCP auf eine andere Programmiersprache umzusteigen ?
Oder andere Lösungswege, wie zum Beispiele eine Vitalisierung der Hardware, die dann mehrere CPU Kerne zu einem zusammen fasst. Vorausgesetzt das geht mit Python, und treibt die Programmierer nicht in den Wahnsinn.

Kira Hhallas - Austrian EvE Community - ingame =Österreich= - StoryPage - https://oneshotstorys.wordpress.com/ -


Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare

eXeler0n
Shark Coalition
#16 - 2013-12-05 09:44:00 UTC
Python kann das soweit ich weiß auch. Nur der Code von CCP nicht. Da es sich dabei um dem Kern von Eve handeln dürfte ist eine Änderung des Codes immer sehr kritisch, da ein Fehler dort keinen Bug sondern ein Versagen der Server verursacht.

Wie das Verteilt wird steht im DevBlog. Es werden die bekannten Belastungen der Vergangenheit herangenommen und daus ein Fingerprint der Last berechnet. Ich denke dieser Fingerprint wird laufend angepasst und beachtet über statistische Rechnungen auch kurzfristige Schwankungen.
Da die Statistik nur in geringem Maß wirklich plötzliche Ereignisse vorhersagen kann wird es immer wieder Probleme geben, aber nicht in dem Maß wie bisher.

eXeler0n

============================

Quafe:  http://quafe.de

Blogpack:  http://eveblogs.de

Nic Fenrir
Watschn Inc.
#17 - 2013-12-05 10:24:05 UTC
Wenn ich das richtig verstehe kann mit diesem System in der Downtime also nur eine theoretische Balance gestellt werden.
Bei 0.0 Kämpfen die nicht angemeldet werden oder besser werden können aufgrund spielertechnischer Fehler die ausarten wie in Asakai, wird der Node, wie jetzt auch, immer wieder ausfallen oder 5-10% Tidi sein... wie jetzt auch.
Es ändert sich nichts relevantes außer, dass wenn jetzt Tidi auftritt man weis, seine Nachbarsysteme sind direkt betroffen.
Ergo es ändert sich nur die Sprache aber nicht das grundlegende Problem das das System zu statisch ist bzw nicht Flexibel genug.
eXeler0n
Shark Coalition
#18 - 2013-12-05 10:46:39 UTC  |  Edited by: eXeler0n
Nein, die bisherigen Nodes werden besser ausgelastet. Bisher waren manche Nodes überlastet und manche eigentlich gar nicht belastet. Das sollte nun ausgewogener sein.

Für Large Figthts bringt das nichts, das ist richtig. Jedoch gab es bisher das Problem, dass in manchen Systemen TiDi eingesprungen ist, obwohl dort nichts los war. Das lag daran, dass ein anderes System auf dem Node hohe Last hatte. Dieses System konnte auch am anderen Ende des Universums sein. Gleichzeitig hatte die alte Mechanik nur sehr träge etwas an der Situation geändert.
Jetzt werden die Systeme besser auf die Nodes verteilt und das TiDi nicht mehr durch das halbe Universum gestreut.
Die Last ist einfach gleichmäßiger verteilt und gesamt sollte es weniger TiDi im Universum geben.

Fleetfights im 0.0 sind da ein anderes Problem. Erstens ist das System, in dem gekämpft wird, oft nicht alleine auf einem Node. Zweitens sind die Schlachten inzwischen so groß, dass ein Node das oft nicht ohne TiDi bewältigen kann.

Ohne die Grunsätze des Servercodes zu ändern wird sich das auch nicht ändern lassen. Um das Problem zu beheben gäbe es meines Erachtens nur zwei Möglichkeiten:
1. Bessere Serverhardware - teuer und begrenzt, da die aktuellen Server schon relativ stark sind
2. Servercode neu schreiben, damit mehrere Nodes ein System aufnehmen können - das ist sehr aufwändig und problematisch. Jedoch könnte dann eventuell auch eine dynamische Lastverteilung integriert werden

Edit: Normalerweise sollte immer TiDi einspringen. Wenn der Node crasht, dann ist das ein Bug, wie beim letzten Crash. TiDi sollte Crashs eigentlich verhindern.

eXeler0n

============================

Quafe:  http://quafe.de

Blogpack:  http://eveblogs.de

Kira Hhallas
Very Drunken Eve Flying Instructors
Brotherhood Of Silent Space
#19 - 2013-12-05 10:53:32 UTC
Und da sich neuer Code nicht von heute auf morgen schreibt und debugged, wird des noch dauern.

Ein hoch auf die Programmierer.
Ich bin schon beim Schiffversenken gescheitert mit C#

Kira Hhallas - Austrian EvE Community - ingame =Österreich= - StoryPage - https://oneshotstorys.wordpress.com/ -


Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare