Comandi Java per CPU

di il
9 risposte

Comandi Java per CPU

Ciao a tutti,

vorrei sapere se esistono dei comandi che limitano l'utilizzo della CPU,
tipo i comandi del limite di utilizzo di memoria: java -Xmx128m ecc

Grazie

9 Risposte

  • Re: Comandi Java per CPU

    manuel__89 ha scritto:


    vorrei sapere se esistono dei comandi che limitano l'utilizzo della CPU,
    tipo i comandi del limite di utilizzo di memoria: java -Xmx128m ecc
    Non mi pare ... perlomeno su JVM Oracle secondo le Java HotSpot VM Options.

    Comunque precisa BENE cosa intendi per "limitano l'utilizzo della CPU". In termini di quali/quanti "core" utilizzare?
    E soprattutto precisa PERCHÉ ti serve (è per scopi "didattici"? o per evitare reali problemi con altre applicazioni? o per simulare una esecuzione con risorse di elaborazione più limitate?)

    Tieni presente che perlomeno su Windows la possibilità di specificare quali processori/core un processo può utilizzare è già intrinseca e gestita di serie nel sistema. Tanto per darti una idea: se hai Win Vista/7 (e presumo pure superiori) apri il Task Manager di Windows, scegli uno dei processi elencati, click tasto destro, e poi scegli la voce "Imposta affinità...".
    Lì puoi impostare quella che nella documentazione tecnica MSDN di Microsoft si chiama "processor affinity mask". E ci sono anche le API di Windows per impostare questo programmaticamente.

    Forse è questo che intendi?
  • Re: Comandi Java per CPU

    A me serviva un comando per scopo didattico, o un api java
  • Re: Comandi Java per CPU

    Ah, stavo guardando un po' questa cosa ..... beh, è facile su Windows: c'è una opzione apposita del comando start della shell!!
    Da una console es.:

    start /affinity 4 java ........altro

    In questo esempio la JVM può usare solo il 3° core (4 in binario: 00000100)
  • Re: Comandi Java per CPU

    Ok, ma se io limito l'utilizzo del core aumenta la percentuale di utilizzo degli altri.
    Io lancio l'applicazione su un quad core, la percentuale di cpu è 98%, significa che
    utilizza quasi 25% di cpu a single core, io vorrei diminuire la percentuale del 98%!
    Se riduco l'utilizzo di un core, a tre core, la percentuale rimane la stessa 98%, ma
    aumenta l'utilizzo del singolo core a 33%
  • Re: Comandi Java per CPU

    manuel__89 ha scritto:


    Ok, ma se io limito l'utilizzo del core aumenta la percentuale di utilizzo degli altri.
    Io lancio l'applicazione su un quad core, la percentuale di cpu è 98%, significa che
    utilizza quasi 25% di cpu a single core, io vorrei diminuire la percentuale del 98%!
    Se riduco l'utilizzo di un core, a tre core, la percentuale rimane la stessa 98%, ma
    aumenta l'utilizzo del singolo core a 33%
    Se hai un quad-core e lanci la applicazione (Java o non Java che sia) con l'affinità per solo 1 core .... la applicazione userà solo quel core e basta. Potrebbe arrivare ad usarlo al 100% ma vuol dire che in totale su tutto il sistema userà solo al massimo il 25% della capacità computazionale dell'intero processore.

    Se NON è questo che vuoi, precisa allora COSA vuoi. Ma non saprei dire ora se puoi andare oltre a questo ....


    P.S. e aggiungo: ovviamente il core non è "esclusivo" solo per quel processo!
  • Re: Comandi Java per CPU

    Se la tua applicazione usa il 98% di CPU, i motvi sono:

    1) a lei SERVE il 98% di CPU
    2) a lei NON SERVE il 98% CPU ma qualcuno ha fatto pasticci e sta' utilizzando il 98% di CPU per non fare nulla di intelligente.

    Ci sono sistemi alternativi, comunque, per ridurre la % di CPU che un processo puo' usare, ed e' quello di ridurre la priorita' del processo: cosi' anche se VORREBBE usare il 98%, in realta' non le verra' mai assegnato perche' ha priorita' troppo bassa.

    Ci sono un paio di software che fanno il controllo dell'uso della CPU e riducono automaticamente la priorita' dei processi:

    Process Tamer
    Process Lasso
  • Re: Comandi Java per CPU

    Ho visto i due software, ma nel mio caso dovrei utilizzare solo comandi java da linea di comando, non posso utilizzare tool esterni
    per questo motivo, avevo fatto l' esempio di : java -Xmx128m ... perchè è un comando, io cerco qualcosa del genere, ma per la CPU.
    Ho cercato su google, ma non trovo nulla adatto al mio caso.
    Potrebbe andare bene anche una API, ma non ho molta esperienza e non so neanche dove cercare.
  • Re: Comandi Java per CPU

    Onestamente .... allora non ho ben capito COSA vuoi fare e PERCHÉ ...

    Comunque:
  • Re: Comandi Java per CPU

    La pagina che mi hai passato, l'ho visitata, ma non trovo nessuna soluzione.
    Per concludere non esiste nessun comando java che possa limitare l' utilizzo della CPU.

    Navigando nei vari forum, ho preso un suggerimento, cioè quello di introdurre il ritardo, utilizzando i thread e lo sleep. Limita la
    percentuale di utilizzo della CPU, ma... in realtà cosa succede, che se imposto lo sleep a 1 ms, la percentuale di CPU sale a 28%,
    se imposto lo sleep a 1000ms oppure a 20 secondi rimane sempre fissa a 25 % ... diminuisce, ma non è possibile che a 20 secondi
    consumi come a 1 secondo.
Devi accedere o registrarti per scrivere nel forum
9 risposte