Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    [c++] limitare la cpu di un processo

    Ciao a tutti!
    in c++ sto creando un interfaccia grafica per un programma che esiste solo via linea di comando. questo programma esiste sia per linux, windows e osx, quindi vorrei creare un interfaccia compatibile per questi tre sistemi operativi.
    quindi il mio programma lancerà un'altro programma e, fino a qua, non ci sono problemi. vorrei aggiungere una funzione: uno slider che permette di limitare l'uso della cpu del processo che lancio (il programma a linea di comando).
    Ho cercato su google, ma ho solo trovato come limitare le risorse del programma corrente con l'uso del comando sleep, invece vorrei limitare l'uso di un processo lanciato dal programma corrente.
    Mi vanno bene soluzioni in c++ (scelta che preferisco) ma anche in bash, batch ecc...
    O in alternativa qualsiasi cosa.
    grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi solo impostare una bassa priorità per il processo (con Win). Non altro ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    bassa priorità vuol dire che lui cerca sempre di andare al 100% o quello che gli serve, però se c'è un processo che ha bisogno del 50% il processo con bassa priorità gliela cede? giusto?
    e come si fa? e si può fare anche per gli altri s.o?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Sbaglio le premesse! L'obbiettivo è usare sempre il 100%. Poi si organizzano i processi secondo priorità in modo che i processi più importanti abbiano naturalmente più cpu. Una cpu non utilizzata sono soldi sprecati al momento dell'acquisto. Idealmente dovrebbe essere sempre al 100%.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Quote Originariamente inviata da iacoposk8 Visualizza il messaggio
    bassa priorità vuol dire che lui cerca sempre di andare al 100% o quello che gli serve, però se c'è un processo che ha bisogno del 50% il processo con bassa priorità gliela cede? giusto?
    Concettualmente sì*, il modo in cui questo esattamente avviene dipende dall'algoritmo di scheduling impiegato (oltre al fatto che su Windows esistono classi di priorità "magiche" - ad esempio, idle, che schedula il processo quando veramente non ha nient'altro da fare). In alternativa, avendo a disposizione più core puoi impostare l'affinity del processo su uno solo di questi, ovvero imponi al sistema operativo di farlo girare solo su alcuni dei core a disposizione, lasciando sicuramente gli altri core liberi per altro.
    Tutto questo è disponibile anche su altri sistemi operativi (per gli OS di famiglia Unix normalmente si parla di "nice value" per l'anti-boost di priorità).

    ---

    * Anche se il concetto che un processo "ha bisogno del 50% di CPU" non ha molto senso. Di base semplicemente un processo può andare in wait (in attesa di qualcosa - IO su disco, socket di rete, eventi dalla GUI, timer, ...) o ritornare eseguibile quando il kernel si accorge che l'attesa è terminata. La percentuale del tempo di CPU effettivamente impiegato (mediata su un qualche periodo) dipende dalla durata delle wait e da quello che combinano le altre applicazioni.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    ok, questa soluzione allora è molto meglio di quello che avevo pensato io. perchè questo programma può arrivare in casi di basse prestazioni a saturare la cpu, in questo modo, mi pare di capire che la cpu sarà comunque saturata, ma l'utente non si accorgerà di un rallentamento delle sue solite attività, siccome il mio programma userà solo la cpu inutilizzata in pratica. e tecnicamente come posso fare questo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.