2012-05-07 10 views
15

C'è un modo per limitare sia il numero di core utilizzati da java?Java limitando l'utilizzo delle risorse

E in questo stesso senso, è possibile limitare la quantità di tale nucleo utilizzato?

+0

Non dal lato java, il sistema operativo alloca i thread ai core. Alcuni software molto costosi di VMWare sono l'unica soluzione che conosco personalmente :) – Affe

+1

http://stackoverflow.com/questions/8882885/is-it-possibile-per-forzare-in-esistente-java-applicazioni-per -use-no-more-than-x-core – rolve

+1

possibile duplicato di [Limitazione della memoria dell'applicazione java e dell'uso della CPU] (http://stackoverflow.com/questions/4952528/limiting-java-applications-memory-and-cpu- utilizzo) – Abizern

risposta

5

È possibile utilizzare taskset su linux. È anche possibile ridurre la priorità di un processo, ma a meno che la CPU (S) non sia occupata, un processo otterrà tutta la CPU che può utilizzare.

Ho una libreria per dedicare thread ad un core, chiamato Java Thread Affinity, ma potrebbe avere uno scopo diverso da quello che hai in mente. Puoi chiarire perché vuoi farlo?

+0

Sto creando una mesh di elaborazione distribuita per un progetto scolastico, e uno dei requisiti era di essere in grado di limitare l'utilizzo delle risorse. – rynojvr

+0

La cosa più semplice da fare è avviare il processo con priorità molto bassa. per esempio. 'nice -n 20' Questo significa che utilizzerà solo la CPU" gratuita ". Ciò non limiterà la memoria (è possibile utilizzare la dimensione massima dell'heap) o il disco o l'I/O di rete (devi codificarlo se ne hai bisogno) ma farà la maggior parte di ciò che desideri. –

3

Non penso che ci siano opzioni JVM incorporate per fare questo tipo di modifiche, tuttavia è possibile limitare l'utilizzo della CPU impostando l'affinità della priorità e/o della CPU del processo JVM. Se siete su Linux date un'occhiata a CPULimit che è uno strumento fantastico per fare questo tipo di limitazioni delle risorse.

+0

Principali aspetti negativi di questo linguaggio onnipresente e portatile; Non posso credere che questo non sia stato affrontato dalla corporazione dei "java overlords", almeno. –

2

https://github.com/haosdent/jcgroup jcgroup è la scelta migliore. È possibile utilizzare questa libreria per limitare le condivisioni della CPU, la velocità di I/O del disco, la larghezza di banda della rete e così via.