Domanda:
Qualche vantaggio nell'esecuzione di Minecraft in un ambiente a 64 bit?
alexyorke
2011-08-16 08:08:30 UTC
view on stackexchange narkive permalink

Mi chiedo se dovessi eseguire Minecraft su un server Ubuntu a 32 o 64 bit; ci sarebbe un vantaggio (miglioramenti della velocità) o qualcos'altro, o semplicemente lo stesso? Aspetti negativi?

Immagino di essere una di quelle persone che giocano a Minecraft usando la JVM a 32 bit su un sistema operativo a 64 bit, le prestazioni fanno schifo. Nel momento in cui sono passato all'utilizzo della JVM a 64 bit, le prestazioni sono migliorate in modo drammatico. Il gioco è diventato di nuovo giocabile. Non so perché, è così che stanno le cose. YMMV.
32 bit ha un limite di memoria di 4 GB, questo potrebbe essere rilevante per mondi enormi (anche @Jeff)
@Tobias: È interessante notare che la mia macchina ha solo 4 GB di memoria, quindi il limite di memoria non avrebbe dovuto influenzarmi AFAIK, ma questo accade ancora.
@Jeff Ho avuto la stessa esperienza con la JVM a 32 e 64 bit. Non so perché.
@Alexy13: Minecraft non è un gioco davvero pesante, quindi noteresti a malapena la differenza, se hai bisogno di migliorare le prestazioni, è meglio che tu abbia un computer migliore prima che eseguire l'aggiornamento specifico a 64 bit.
Sto usando amazon ec2, quindi 32 bit e 64 bit costano lo stesso. Quindi, potrei usare 64 bit, non farebbe molta differenza, potrei ottenere un aumento di velocità ... Hmm ...
@JeffMercado Il limite inizia a influire sulle prestazioni a circa 3 GB, anche prima se si dispone di una GPU di alta qualità. Inoltre, su un sistema operativo a 64 bit che esegue un processo a 32 bit è più lento rispetto all'esecuzione nativa di un sistema operativo a 32 bit perché è coinvolta l'emulazione.
@Arda Xi: Non esattamente * emulazione *, poiché le istruzioni a 32 bit sono implementate nell'hardware. Ma sono d'accordo, c'è un sovraccarico (di qualche tipo che non so come definire).
@DenilsonSá È l'emulazione. Le istruzioni a 32 bit sono implementate nell'hardware, ma solo per un sistema operativo a 32 bit. [WoW64] (http://en.wikipedia.org/wiki/WOW64) emula un sottosistema a 32 bit in modo che le applicazioni a 32 bit possano essere eseguite insieme alle applicazioni a 64 bit.
Wow64 è simile a Rosetta, sbaglio o
@Arda Xi, Alexy13: WoW64 sembra funzionare come il [modello di progettazione dell'adattatore] (http://en.wikipedia.org/wiki/Adapter_pattern). Non è un'emulazione per la stessa ragione [Wine is Not an Emulator] (http://wiki.winehq.org/Debunking_Wine_Myths). In tutti questi casi, il codice macchina viene eseguito direttamente sulla CPU; solo le API per le chiamate di sistema e alcune librerie che necessitano di qualche "traduzione". (questo è diverso da Intel Mac OS X che esegue applicazioni PowerPC: era vera emulazione (CPU)) - Vedi anche http://en.wikipedia.org/wiki/AMD64#Operating_modes
Sei risposte:
#1
+19
Denilson Sá Maia
2011-08-16 12:15:48 UTC
view on stackexchange narkive permalink

Minecraft è scritto in Java, quindi dovrebbe "adattarsi" sia a sistemi a 32 bit che a 64 bit (a seconda che tu abbia un runtime Java a 32 o 64 bit).

Sebbene Minecraft stesso non sia ottimizzato per 64 bit, trarrà vantaggio dalle ottimizzazioni JVM per processori a 64 bit. Fondamentalmente, questo significa più registri per uso generico disponibili ( 16 a 64 bit contro 8 a 32 bit, il che significa codice macchina migliore e meno accesso alla RAM, migliorando le prestazioni) e una memoria indirizzabile più grande. D'altra parte, poiché ora i puntatori occupano il doppio dello spazio, c'è un piccolo sovraccarico in più per l'utilizzo di 64 bit.

Ma dovresti anche pensare al sistema operativo, poiché ne trarrà vantaggio di miglioramenti a 64 bit. Se hai più di 2 GB o 3 GB di RAM, il tuo sistema operativo dovrebbe essere a 64 bit, altrimenti non accederà a tutta la RAM (o avrà un sovraccarico considerevole). E se hai un sistema operativo a 64 bit, dovresti anche utilizzare un Java Runtime a 64 bit per prestazioni migliori (come altri utenti hanno già commentato).

A proposito, a mio parere, dovresti vai sempre a 64 bit a meno che tu non abbia una buona ragione per evitarlo, come motivi di compatibilità (che non è questo caso).

Domanda correlata su StackOverflow: Java 64bit funziona meglio del Versione a 32 bit?


Aspetta un minuto! Ho parlato di codice scritto in Java, ma per quanto riguarda le librerie native? Ti piace il supporto OpenGL e OpenAL? Sono disponibili su entrambe le versioni a 32 bit e 64 bit e verrà caricata la versione corretta. E posso confermare che sul mio sistema Linux a 64 bit, carica la versione a 64 bit di quelle librerie Java native. (come esperimento, ho eliminato le versioni a 32 bit e Minecraft funziona ancora bene)

Cosa succede se ho solo 1,7 GB di RAM?
Acquista Moar RAM! Onestamente, però, la memoria è così economica in questi giorni che non vale la pena utilizzarne meno di 4 a meno che la tua scheda madre non sia in grado di gestirla.
O se hai acquistato un server da amazon ...
@Alexy13 Se i server Amazon supportano la modalità a 64 bit, è perché l'hardware sottostante è a 64 bit. Quindi, penso ancora che dovresti andare con il sistema operativo a 64 bit e Java a 64 bit. Come ho detto, non vedo alcun motivo per utilizzare versioni a 32 bit a meno che tu non abbia problemi di compatibilità.
@Denilson Risposta perfetta!
`Onestamente, però, la memoria è così a buon mercato in questi giorni` @Adanion, definisce" economico ". Per Donald Trump, un milione di dollari è economico.
#2
+4
Raven Dreamer
2011-08-16 08:27:25 UTC
view on stackexchange narkive permalink

Minecraft non è progettato come un'applicazione a 64 bit e quindi, sebbene utilizzabile su un sistema operativo a 64 bit, non vedrà alcun tipo di miglioramento dal punto di vista tecnico.

Tuttavia, se tu anche installa l'ambiente di runtime Java a 64 bit, potresti notare una leggera ottimizzazione delle prestazioni, ma un SO a 64 bit da solo non avrà molto effetto.

Scusa, ma non sono d'accordo. Poiché Minecraft è scritto in Java, eventuali miglioramenti provengono da Java Virtual Machine e non da Minecraft stesso.
@Denilson - Comunque sia, penso che un voto negativo sia falso, dato che l'OP non ha mai menzionato affatto JVM.
Il downvote era perché credo che questa risposta non sia tecnicamente corretta. Nessuna applicazione Java è progettata come 32 bit o 64 bit, poiché è compito di Java Runtime. Questo è diverso da un gioco scritto in C / C ++, che viene compilato su un'architettura "e quindi, sebbene utilizzabile su un sistema operativo a 64 bit, non vedrà alcun tipo di miglioramento ..." Gioco C ++, sarebbe stato un voto positivo, ma per un gioco Java, credo che non sia corretto.
@Denilson - Anche in questo caso, la JVM, 64 bit o meno, è qualcosa ** indipendente ** dal sistema operativo a 64 bit. (Certo, il primo è impossibile senza il secondo, ma senza dubbio ci sono persone che hanno sistemi operativi a 64 bit e utilizzano Java a 32 bit.) Ho modificato la mia risposta per chiarire questo punto.
Anche se continuo a credere che un sistema operativo a 64 bit potrebbe ancora avere vantaggi (perché il sistema operativo stesso utilizzerà anche ottimizzazioni a 64 bit), sarebbe pignolo e non troppo rilevante. Grazie per il chiarimento!
#3
+2
Warface
2011-08-16 09:07:29 UTC
view on stackexchange narkive permalink

Sto eseguendo il mio server su un server da 64 CentOs e non sembra aver migliorato nulla. Minecraft registra solo i movimenti X, Y, Z dei giocatori con oggetti e blocchi posizionati nel mondo. Quindi eseguirlo su un sistema operativo a 32 o 64 bit non cambierà nulla.

Per prestazioni migliori del gioco hai bisogno di molta RAM e HDD veloce forse un 10k RPM o 15 RPM sul server. In questo modo assicuri un caricamento più veloce e una maggiore efficienza.

Ho 8 GB di RAM su un sistema Quad core con 2 HDD da 10k RPM e non ho notato alcun ritardo con più di 20 giocatori online.

#4
+1
Dmitry Grigoryev
2017-05-28 17:18:53 UTC
view on stackexchange narkive permalink

Le app Java legate alla CPU funzioneranno quasi sempre più lentamente su JVM a 64 bit e Minecraft non fa eccezione. Per citare Oracle,

i vantaggi di essere in grado di gestire quantità maggiori di memoria derivano da una piccola perdita di prestazioni nelle VM a 64 bit rispetto all'esecuzione della stessa applicazione su una VM a 32 bit. Ciò è dovuto al fatto che ogni puntatore nativo nel sistema occupa 8 byte invece di 4.

Il fatto che la JVM a 64 bit disponga di più registri riduce la perdita di prestazioni, ma non la sovrasta. Secondo Oracle, le applicazioni Java su x86 perdono dallo 0 al 15% delle loro prestazioni originali quando vengono migrate a 64 bit.

Un altro punto da considerare è che la JVM a 64 bit è più affamata di memoria: a causa di quei puntatori a 64 bit, quindi dovrai dargli il 30% di RAM in più solo per abbinare lo spazio di archiviazione spazio che avevi su 32 bit. Un'altra citazione da Oracle FAQ:

Abbiamo regolato le impostazioni predefinite per le implementazioni a 64 bit in modo che siano più grandi del 30% per compensare la maggiore dimensione degli oggetti Java dovuta a puntatori nativi più grandi. Ricorda che gli oggetti Java contengono puntatori di classe e di blocco, quindi anche se crei oggetti Java che contengono solo numeri interi, ogni oggetto occupa memoria aggiuntiva.

Ovviamente, le cose cambiano quando dai a Minecraft molta RAM, dal momento che sarà in grado di eseguire GC meno frequentemente e mantenere più blocchi nella memoria.

Per riassumere, l'aggiornamento vale solo quando prevedi di dargli 4 GB o più.

Molto interessante!La citazione di Oracle prosegue dicendo: "La buona notizia è che con le piattaforme AMD64 ed EM64T in esecuzione in modalità a 64 bit, Java VM ottiene alcuni registri aggiuntivi che può utilizzare per generare sequenze di istruzioni native più efficienti. Questi registri aggiuntivi aumentano le prestazionial punto in cui spesso non si verifica alcuna perdita di prestazioni quando si confronta la velocità di esecuzione da 32 a 64 bit ", il che è fonte di confusione perché Oracle afferma che c'è effettivamente un degrado delle prestazioni.Sai se questi registri aggiuntivi mitigano gli impatti sulle prestazioni associati all'ampliamento dei registri?
@alexy13 Quei registri extra sono [non più grandi] (https://stackoverflow.com/questions/400477/on-a-64-bit-machine-is-the-size-of-an-int-in-java-32-bit-o-64-bit), ce ne sono solo di più.E la citazione sulla perdita di prestazioni sembra coerente con l'intervallo di perdita di prestazioni 0-15%: che 0 corrisponde a * spesso non c'è alcuna perdita di prestazioni *, il 15% è il caso peggiore.
#5
+1
CodeManX
2019-03-20 04:54:06 UTC
view on stackexchange narkive permalink

Utilizzando un Java Runtime Environment a 32 bit, potresti incorrere in errori che gli danno 2 GB di memoria o più:

  "% programfiles (x86)% \ Java \ jre1.8.0_201 \ bin \ java.exe" -Xms2G -Xmx2G -jar server.jar
 

Si è verificato un errore durante l'inizializzazione della VM
Impossibile riservare spazio sufficiente per l'heap di oggetti di 2097152 KB

E per 4 GB e oltre:

  java -d32 -Xms4G -Xmx4G -jar server.jar
 

Dimensione heap iniziale non valida: -Xms4G
La dimensione specificata supera la dimensione massima rappresentabile.
Errore: impossibile creare la Java Virtual Machine.
Errore: si è verificata un'eccezione irreversibile. Il programma verrà chiuso.

Funziona con Java a 64 bit:

 % programfiles% \ Java \ jre1.8.0_201 \ bin \ java.exe -Xms4G -Xmx4G -jar server.jar
 

[principale / INFO]: caricate 0 ricette
[principale / INFO]: caricati 0 avanzamenti
[Thread server / INFO]: avvio della versione 1.13.2 del server minecraft
...

Minecraft sembra anche avere il proprio JRE a 64 bit che puoi utilizzare:

  "% programfiles (x86)% \ Minecraft \ runtime \ jre-x64 \ bin \ java.exe" -Xms4G -Xmx4G -jar server.jar
 

Nota che i flag -d32 e -d64 non ti consentono di scegliere un JRE a 32 o 64 bit installato (almeno su Windows), ma piuttosto definisci il testimone di cui hai bisogno. Se java è un Java a 64 bit, -d32 fallirà perché l'eseguibile a 64 bit non supporta 32 bit.

#6
  0
WxD311
2013-11-05 07:46:09 UTC
view on stackexchange narkive permalink

Per me, ho una strana soluzione, ho un processore a 64 bit e un sistema operativo, ma il gioco non era riproducibile, quindi ho deciso di provare la versione x86 (32 bit). So che normalmente non migliora nulla, ma quando l'ho fatto avevo un frame rate decente di 60 fps QUANDO REGISTRANDO! Le prestazioni sono notevolmente migliorate con 32 bit per me. Tuttavia, se la tua macchina è a 64 bit, ti consiglio di utilizzare prima la versione a 64 bit, quindi quella a 32 bit. Dopodiché puoi decidere quale usare.

Il mio sistema infoATI Radeon X1200 GraphicsAMD Turion 64X2Dolby Sound RoomAtheros WirelessWindows 7 Professional x64 SP1 / Ubuntu 13.10 x64

È possibile che tu abbia installato Java 6 a 64 bit (x86_64) e Java 8 a 32 bit (x86)?Questo spiegherebbe cosa stai vedendo.Java 8 e le versioni più recenti hanno ottimizzazioni molto significative rispetto a Java 7 e Java 6. Minecraft sarebbe del tutto ingiocabile su Java 6 e molto privo di lag su Java 8. In alternativa, è possibile che nel kernel del tuo sistema manchi un driver OpenGL x86_64 (lo faccionon so molto della cronologia dei driver del kernel Linux)?Anche questo potrebbe spiegare quello che stai vedendo perché una scheda grafica è una necessità assoluta per Minecraft e Java a 64 bit necessita di driver a 64 bit.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...