Ich denke aus persönlicher Erfahurng, dass man mit vier Cores pro Channel quasi alle zu erwartenden Usermenge packen wird, die ein PServer zu Gesicht bekommt - womöglich auch noch mehr.
Ob ein Core abstürzt oder nicht ist viel mehr abhängig von Bugs im Code, die es leider immer wieder mal gibt.
Zu bedenken ist dann, welche und wie viele Maps - also auch wie viele Spieler - bei so einem Absturz direkt betroffen sind.
Die Lastverteilung würde ich generell nach erwartetem Spieleraufkommen vornehmen. Jedes Reich (Map1 + Map2) auf einen Core und alle übrigen Maps werden dannauf den vierten Core und die vorherigen drei verteilt
Für die Performance gibt es andere, wesentliche Faktoren.
Wie man sicher sieht, erzeugen die Cores nur eine sehr geringe Last auf einem vernünftigen System (200-400MB RAM und mittlere CPU-Auslastung von unter 10% auf einem Xeon Quad Core).
Viel entscheidender ist die Datenhaltung - die Optimierung von MySQL hat einen
entscheidenden Einfluss auf die Performance.
Besonders im Fokus sollten dabei liegen:
- Indizes zum schnellen Finden von Datensätzen (player/item/quest-Tabellen)
- schneller und/oder separater Speicher für log-Datenbank (wenn man viel Logging betreibt)
- Platzierung der syslog-Dateien (abhängig von der Core-Revision und den Logging-Einstellungen)
- evtl. Entfernung einiger unnötiger Logeinträge im Core (per Source Code oder Binary Diff) wie z.B. Switch-Vorgänge (v.a. bei Verwendung eines Switch-Bots!)
- fast vollständige Ausschöpfung des verfügbaren RAM durch MySQL (Google benutzen); ein Server mit mehr RAM bringt an sich noch keine großen Performance-Verbesserungen