Jump to content

Minecraft und die CPU


Empfohlene Beiträge

Hi ihr lieben!

Ich habe da eine brennende Frage und ich hoffe das kann mir einer Verständlich beantworten. (So das Ichs auch versehe :3 )

Auf Wievielen CPU Kernen läuft Minecraft bzw. kann laufen?

Manche sagen es geht nur auf einen, andere wiedersprechen mir dann und Meinen das Minecraft Multi Core unterstützt ...

LG Stern

Link zu diesem Kommentar
Auf anderen Seiten teilen

1.

Genau 1.

Das liegt daran das die Renderengine sowie sämtliche Berechnungen der Umwelt in einem einzigen Thread ablaufen.

Ja, Minecraft hat mehrere Threads, für Login zB., ABER zum Spielen verwendet es einen einzigen Thread.

Mojang ist gerade dabei - so wie ich das verstanden habe - die Welten multithreaded zu machen, nützlich bei Multiverse, aber das Vanilla Minecraft läuft deswegen auch "nur" auf einem Thread.

BTW: Dein Profilbild ist echt putzig :D

bearbeitet von boomer41
Link zu diesem Kommentar
Auf anderen Seiten teilen

Es hängt extrem vom Betriebssystem ab, ob sich das überhaupt lohnt; Windows zum Beispiel ist notorisch dafür, immer noch kein richtiges Multicore Handling draufzuhaben, und das seit jetzt gut 20 Jahren. Linux kann es hingegen vorzüglich. Dann musst du noch eines wissen: Java läuft Standardmäßig nur auf einem Kern, aber du kannst es mit einem Flag zwingen, mehrere Kerne zu nutzen.

Selbst wenn du das tust, ist nicht wirklich eine Geschwindigkeitsverbesserung festzustellen, außerdem hab ich gelesen, dass die VM dann instabil wird... Liegt also ganz an dir, ob du das willst.

PS: die Flag heißtXX:ParallelGCThreads=7

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

sry Corona, aber da muß ich boomer41 zustimmen, es gibt keinen Startup-Flag.

Selbst wenn es einen geben würde, würde das nix ändern, da wie schon gesagt wurde die komplette Renderingengine in einem Thread abläuft und du kannst einen Thread nicht auf mehreren Kernen laufen lassen, da ein Thread im Grunde ganz einfach gesagt eine einzige Abfolge von Ereignissen ist und diese kannst du nicht einfach aufteilen.

Man könnte theoretisch den Core wechseln, wenn der aktuelle zu sehr ausgelastet ist, aber selbst das wird normal nicht gemacht, da der Thread pausiert und alle States des Threads zum anderen Core übertragen werden müssen, was den kompletten Thread und somit das Programm "hängen" lässt.

Um Minecraft wirklich Multithreaded zu machen müsste z.B. auch der Tick aufgeteilt werden, so das man sagt, in einem werden z.B. Fluids abgearbeitet und in einem anderem Redstone (das ist jetzt nur ein Beispiel um die Sache zu verdeutlichen). Aber leider ist das ganze Thema nicht ganz so einfach, wie es klingt, vorallem, wenn ein Programm von Anfang nicht dafür ausgelegt ist. ;)

-Yuki

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für die schnellen Antworten :)

Also ist das nur Augenauswischerei wenn Server Hoster ihre Server mit 4,8,12 CPU Kernen anbieten?

Und wie ist das bei den großen Server? Ich habe da gehört da werden die Welten auf verschieden Kernen aufgeteilt ... Klingt nicht ganz plausibel in diesem Fall... Ist da gemeint das die Welten auf mehreren Servern aufgeteilt werden?

LG Stern

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ist das nur Augenauswischerei wenn Server Hoster ihre Server mit 4,8,12 CPU Kernen anbieten?

Jein.

Wenn du einen Vanilla Server hast ja.

ABER

Wenn du jetzt rechenintensive Plugins hast (DIE IN EINEM EIGENEN THREAD ARBEITEN), dann nicht. Dann lohnt es sich schon. Aber solche Plugins gibt es (fast) nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

es gibt auch noch eine Möglichkeit.

Wenn man mehrere Server auf einer Machine laufen hat, welche per BungeeCord verbunden sind, so kann man ja mehrere Welten in einem System haben, welche auf unterschiedlichen Cores laufen können, da hierbei ja mehrere Minecrafts aktiv sind und jedes für sich kann ja durchaus einen anderen Core verwenden.

-Yuki

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Ich habe da gehört da werden die Welten auf verschieden Kernen aufgeteilt

Mehr oder weniger. Java-Threads laufen unabhängig von den CPU-Threads. Nicht umsonst läuft mein Client mit 30-40 Threads ( frag lieber net ). Die Threads werden dann nach Prioritätsliste, Rechenzeitsicherung etc. an die CPU-Threads "weitergeleitet" und dort dann bearbeitet. Das ganze passiert ebend auch parallel ( Multitasking / Multithreading ). Das Problem bei Minecraft-Clients ist, dass LWJGL als Schnittstelle zu OpenGL nutzen, und diese Schnittstelle bzw. auch OpenGL nur Singlethreading zulassen. Das heißt alle Grafiken laufen über den einen "LWJGL"-Thread. Zudem werden hier dll-Daten verwendet die ebenfalls mit OpenGL zusammenhängen ( Beispielthaft: jinput -> Keyboard/Mouse ).

( Ich für meinen Teil hoffe auf eine Schnittstelle zur Vulkan-API - unterstützt Multithreading )

Der Fakt bei den Server ist, dass Mojang probiert die Tasks möglichst synchron zu halten, um geringe Einbußen zu haben, da ein System, welches auf asynchronen Berechnungen basiert extrem anfällig ist und ( für Mojang ) unnötige Arbeit ist, da die komplette Engine neu geschrieben werden müsste. Wenn man jetzt die Welten betrachtet, laufen diese auf mehrere Tasks aufgeteilt. Jedoch gibt es einige Methoden die inkompatibel mit mehreren Zugriffen sind.

(Btw. Auslagern auf andere Threads entlastet nicht gerade den Arbeitsspeicher. Da kommt noch ein bisschen Verwaltung dazu + die Threads. )

Mfg,

Spartaner

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B