Minecraft performance tweaks

Started by Dave, Juni 30, 2011, 12:55:30 PM

« vorheriges - nächstes »

Dave

Nachdem wir nen dicken dicken server haben, viel ram, aber immer noch alles lagt wie man so hört, hier mal einiges zu performance.

was mich primär interessiert: wenn doomroxxors redstone musik schaltung aktiviert wird, lagt es dann immer noch wie hölle?

desweiteren habe ich folgende interessante dinge gefunden:
http://www.reddit.com/r/mcservers/comments/ez2tf/improve_minecraft_server_performance/
die foren diskussion dazu: http://forums.bukkit.org/threads/how-to-improve-mincraft-server-performance.662/

der tip mit java 1.7 ist auch interessant (focus liegt auf den client) http://www.reece-eu.net/phpBB3/viewtopic.php?f=10&t=1324 - auch die advanced command line parameters habe ich schon (unerklärt) auf reddit gesehen
der java 1.7 tip taucht hier und da noch an anderer stelle auf

wenn man so liest (auch die kommentare) scheint disk performance das a und o zu sein. ramdisk könnte wunder wirken.

Dave

also mal zusammenfassen bisher:


  • java 1.7 nutzen
  • 64bit java
  • mehr ram (2gb)
  • welt in eine ramdisk legen und stündlich backup machen
  • "komische" java parameter ausprobieren
  • testen am besten mit fabi's riesen redstone schaltung
  • auf der console sollte kein "server to slow" fehler auftauchen
  • herrausfinden wie mehrere cores die performance verändern

µQ

Wie groß wäre die ramdisk dann?
Die Kuh macht Muh!

TheJester

#3
Also die Redstone Schaltung hat zumindest mit den 500mb nicht wirklich viel ausgemacht wenn ich das richtig sehe. Also jedenfalls kein reproduzierbarer Test

Das Java ist 64bit, mit -d64 kann man "64bit data model" anschalten
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)

2gb ram hat dazu geführt dass sofort einiges derbe gelagged hat, mit 1gb ram weniger.

Xen teilt übrigens die Kerne selbst zu, wenn alle vcpus auf 1 stehen. Ggf kann man das einfach mal hochsetzen.

Bei der Disk Performance habe ich im Schnelltest ca. 110mb/Sekunde. Ich finde das könnte selbst für dieses Java Geraffel reichen. Mit ner Ramdisk haben wir dann noch einen Dienst worauf wir beim Serverrestart aufpassen müssen, das würde ich wenns eben geht verhindern.

Ist Java 1.7 überhaupt 100% Kompatibel zu java6?

Ggf. erstmal ohne den -server Parameter versuchen.

Achso, die Maschine hat übrigens dauerhaft mit und ohne lag ne Load von um die 0.05 und einen Ramverbrauch von <50%. Aber da minecraft jetzt schon seit Start eine CPU Zeit von 1h hat (Pitboss 2h20min) könnte das mit den vcpus wirklich was bringen. Wenn es denn damit umgehen kann.

TheJester

Noch ne Idee:

Das can't keep up in der Konsole ist arg selten, und hängt anscheinend auch nicht mit der Zahl der Spieler zusammen (bei dem einen Mal heute waren nur Moonie und Raeuberbach auf dem Server).

Kann das sein dass der Pitboss vielleicht doch irgendwas seltsames macht? Der macht nämlich nicht viel CPU last und hat dafür doch ne Menge CPU Minuten verbraucht seit Start. Gibts da irgendwo nen Login-Log mit Zeiten?

jomu78

Hallo zusammen,

also minecraft unwissender aber Java (ein wenig wissend) mal ein paar Kommentare von mir:

-- Java 7 ist noch nicht released, soll aber kompatibel sein. Einer der größten Unterschiede wird wohl sein, dass Java 7 keinen PermGenSpace mehr hat - ein besonderer Speicher. D.h. Java 7 hat das Speichermodell umgesetllt.
-- Die Server Option würde ich nicht weg lassen - die ist genau für server basierte Prozesse gedacht. Start langsamer, bessere Garbage Collection, etc.
- das ist Oracle 1.6.0_24, oder? Sollte dringend auf 1.6.0_26 aktualisiert werden - CPU Patch zum Schließen von einigen Sicherheitslücken
- Man könnte noch mal eine andere Implementierung der JVM testen (jRockit ist meiner Meinung nach jetzt auch freigegeben)
- die Parameter müsste ich mir mal ansehen.

Stehe zur weiteren Java Beratung gerne zur Verfügung.

Gruß
Jörn


TheJester

Hi Jörn,

danke für die Hinweise.. ich habe grade mal eben ein dist-upgrade in sqeeze gemacht, da kamm auch _26 als Update.

Nach Serverlog hatten wir das Lag übrigens heute exakt dreimal direkt beieinander, nämlich um 12:51.
Gestern gabs die Logeinträge einmal um 17:53.
Also jeweils 1x am Tag nach Serverlog. Ich war heute und gestern da nicht drauf, kann also nichts dazu sagen, aber kann das sein dass wir Gespenster oder Clientlag jagen?

TheJester

Quote from: µQ on Juni 30, 2011, 01:45:57 PM
Wie groß wäre die ramdisk dann?

Dank tmpfs immer so groß wie die welt :)

Dave

jester, ich wiederspreche dir ja ungern, aber ich tue es hier mal.

wo fange ich an? ah ja, ramdisk. /tmp ist sowieso tmpfs - und tmpfs ist die bessere ramdisk effektiv. zwar is sie swapbar, aber dafür wird nur soviel ram verwendet, wie auch daten drin liegen. im gegensatz zu ramdiskfs ist tmpfs "tweaked to oblivion" - eine übersicht gibt es hier - also ist diese ramdisk nur ein parameter in /etc/fstab - kein dienst, nichts neues. 1GB max und gut.

zum anderen ist die annahme 110mb/s sei schnell falsch. die ramdisk dürfte von meinem system ausgehend geschätzt so 2gb/s machen. es geht aber garnicht um den durchsatz als um die mittlere zugrifszeit, die bei ramdisk quasi null ist, und im durchsatz nicht messbar ist. platte = hoch, ramdisk = null. das ist der grund wieso ein os von ssd so schnell bootet - primär zugriffszeit, nicht durchsatz

ich hab hier diverse tests mit ramdisks gemacht, und das bringt so unglaublich viel, das man es sehen muss

mit deinem segen würde ich mich mal dranmachen dies alles umzusetzen. allerdings würde es einen neustart von timelord.de benötigen wegen des /tmp mount targets.

so, jetzt zu java. beim überfliegen der links habe ich durchgehen mehr ram = mehr performance aussagen gefunden. die probleme könnten also vom alten update 24 hergerührt haben. und wenn der tenor der minecraft community ist, dass java7 besser/schneller läuft als java6, wieso nicht?

ich könnte mir auch gut vorstellen, dass die beiden pitbosse sich negativ auswirken - solltest du bei gelegenheit mehr vcpus zuteilen, dürfte das allerdings erledigt sein. ein "segen" der pitbosse ist, dass sie nicht multithreaded sind.

laut björn hat seine redstone schaltung später doch für lag gesorgt. könnte also zum testen geeignet sein. ebenso wie die fetischbox

TheJester

Quote from: Dave on Juni 30, 2011, 03:06:44 PM
jester, ich wiederspreche dir ja ungern, aber ich tue es hier mal.
wo fange ich an? ah ja, ramdisk. /tmp ist sowieso tmpfs - und tmpfs ist die bessere ramdisk effektiv. zwar is sie swapbar, aber dafür wird nur soviel ram verwendet, wie auch daten drin liegen. im gegensatz zu ramdiskfs ist tmpfs "tweaked to oblivion" - eine übersicht gibt es hier - also ist diese ramdisk nur ein parameter in /etc/fstab - kein dienst, nichts neues. 1GB max und gut.
Ja, das mit dem Dienst war natürlich verkehrt. ich meinte das im Sinne von "Ramdisk Inhalt persistent machen". Also ein initscript dafür (->"Dienst")

Mir gehts primär darum dass das auch gleich auf der Platte liegt, und man beim Timelord neustarten nicht zu dem Save im Pitboss klicken auch noch Minecraft manuell sichern muss. Das andere sehe ich auch so, wenn es etwas bringt sollten wir es testen. Bei den Pitbossen bin ich mir nicht mehr so sicher, 2:20h cpuzeit innerhalb eines Tages sind zwar schon ne Ansage, aber ob das wirklich Spitzen gibt müsste man mal sehen wenn jemand dann gerade connected.

Dave

ich denke, da es keine lebenswichtigen firmendaten sind, reicht es, einfach einmal pro stunde das world3/ verzeichnis in world3.persistent/ zu kopieren. selbiges noch in mc_stop rein, und gut ist. kein wirklicher aufwand bei evtl. hohem gewinn.

zusätzlich haben wir nach wie vor das tägliche backup. wenn wir in nem crash fall 1 stunde verlieren, bringt das niemanden um. wobei der timelord eh nicht crashed ^^

TheJester

Hm, zum Java7 nochmal, irgendwie ging bei mir nach dem Minecraft Update auf dem Notebook nicht mehr, und nach ein wenig nachforschen hab ich gesehen dass Arch testing Java7 an Board hat.


[sven@troy minecraft] pacman -Q |grep jdk
jdk 7b147-1
[sven@troy minecraft] java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Server VM (build 21.0-b17, mixed mode)


Jedenfalls startet das minecraft damit nichtmal weil java die libjawt.so nicht laden kann. Warum das so ist werde ich wohl später sehen, die lib ist vorhanden und lesbar im Java-Verzeichnis, und ldconfig -p findet sie auch.

Dave

Trotzdem könnte es server seitig helfen.

Haben wir den konkret noch lags? Oder ist das nur einbildung? Wenn ja, wo genau und wie kann man es testen?

x3t0

also, alle mit denen ich gesprochen habe, ausser thalli, haben keine lags festgestellt

TheJester

Eben waren 9 Leute da, auch keine Lags, allerdings kann ich nicht sagen welche Schaltungen/Mobfallen an sind.