2012-05-07 32 views
15

¿Hay alguna manera de limitar tanto el número de núcleos que utiliza Java?Uso de recursos de limitación de Java

Y en la misma línea, ¿es posible limitar la cantidad de ese núcleo que se utiliza?

+0

No desde el lado java, el sistema operativo asigna hilos a los núcleos. Un software muy caro de VMWare es la única solución con la que estoy familiarizado :) – Affe

+1

http://stackoverflow.com/questions/8882885/is-it-possible-to-force-an-existing-java-application-to -use-no-más-than-x-cores – rolve

+1

posible duplicado de [Limitar el uso de la CPU y la memoria de la aplicación java] (http://stackoverflow.com/questions/4952528/limiting-java-applications-memory-and-cpu- uso) – Abizern

Respuesta

5

Puede usar taskset en Linux. También puede disminuir la prioridad de un proceso, pero a menos que la CPU (S) esté ocupada, un proceso obtendrá la cantidad de CPU que pueda usar.

Tengo una biblioteca para dedicar hilo a un núcleo, llamada Java Thread Affinity, pero puede tener un propósito diferente al que tiene en mente. ¿Puedes aclarar por qué quieres hacer esto?

+0

Estoy creando una malla de procesamiento distribuido para un proyecto escolar, y uno de los requisitos era poder limitar el uso de recursos. – rynojvr

+0

Lo más simple es comenzar el proceso como de muy baja prioridad. p.ej. 'nice -n 20' Esto significa que solo usará la CPU" gratuita ". Esto no limitará la memoria (puede usar el tamaño máximo de almacenamiento dinámico) o la IO de disco o red (debe codificarlo si lo necesita) pero hará la mayor parte de lo que desee. –

3

No creo que haya opciones de JVM incorporadas para realizar este tipo de ajustes, sin embargo, puede limitar el uso de la CPU al establecer la prioridad y/o la afinidad de la CPU del proceso de JVM. Si está en Linux, eche un vistazo a CPULimit que es una herramienta increíble para hacer este tipo de limitaciones de recursos.

+0

desventaja principal de este lenguaje ubicuo y portátil; No puedo creer que esto no haya sido abordado por la corporación "java overlords", al menos. –

2

https://github.com/haosdent/jcgroup jcgroup es su mejor opción. Puede usar esta biblioteca para limitar los recursos compartidos de la CPU, la velocidad de E/S del disco, el ancho de banda de la red, etc.

Cuestiones relacionadas