Limit CPU Usage

poruka: 8
|
čitano: 2.861
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Limit CPU Usage

Ne znam dal' sam pogodio naslov teme... no uglavnom, 

 

Program napisan u Javi ili C++, obavlja složenu i dugotrajnu matematičku operaciju, problem je to što prilikom pokretanja iste zauzeće procesora je 100%....

 

dal' postoji ikakav način kojim bi mogao ograničiti da aplikacija koristi samo npr. 50% procesorske snage ???

 

za sada radim na win32 platformi, kada ce bit gotova planiram je staviti na linux (ako to ima ikakve veze)

 

 

unaprijed hvala {#}

 

EDIT: C++

Poruka je uređivana zadnji put ned 24.4.2011 2:23 (enloz).
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Limit CPU Usage
Jesi probao taj proces odvojit u zaseban thread i smanjit mu prioritet?
15 godina
neaktivan
offline
Limit CPU Usage

Ovo sa namjestanjem prioriteta threadu je jako dobra ideja, alternativno mozes dodati nekakvu sleep funkciju unutar glavne petlje, u Win API-ju to izgleda nekako ovako:

 

#include <windows.h>

int main()
{
    while (1)
    {
          Sleep(10);
    }
    return 0;
}

 

Probaj ukloniti ovaj Sleep() iz petlje pa vidi kako se mijenja zauzece procesorskog vremena, inace, funkcija kao argument prima broj u milisekundama.

 

Linux sigurno ima nesto slicno, ali mi se nije dalo traziti. Probaj istraziti malo pthreads, on je navodno i portabilan...

 

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
 
1 0 hvala 0
17 godina
protjeran
offline
Limit CPU Usage

Pretpostavljam da koristiš više jezgreni procesor. U današnje vrijeme su svi uglavnom takvi. I windowse. Za linux ne znam kako to podesiti. U win task manageru klikneš desnom tipkom miša i odabereš set Set Priority ili još bolje Set Affinity.

Programko http://programko.bloger.hr
 
0 0 hvala 0
17 godina
neaktivan
offline
Limit CPU Usage

Za Javu koristiš Thread te koristiš metodu sleep(int ms). Korištenjem sleep metode stavljaš thread u stanje mirovanja te u to vrijeme CPU radi s drugim zadacima, a samim time "rasterećuje procesor" za taj proces.

 

Detaljno pročitaj o tome na: http://www.codeproject.com/KB/threads/cpulimiter.aspx

 

edit: ovdje ti radi i na win i na linuxu (Java ftw :) )

www.linuxzasve.com | www.tehnofobija.com
Poruka je uređivana zadnji put pon 25.4.2011 1:07 (Sokac).
Moj PC  
0 0 hvala 0
14 godina
protjeran
offline
Re: Limit CPU Usage
Programko kaže...

Pretpostavljam da koristiš više jezgreni procesor. U današnje vrijeme su svi uglavnom takvi. I windowse. Za linux ne znam kako to podesiti. U win task manageru klikneš desnom tipkom miša i odabereš set Set Priority ili još bolje Set Affinity.

On piše program i ne želi da taj program zauzme 100% procesorske snage (ako sam dobro shvatio).

Your opinion about me doesn't define who I am.
16 godina
neaktivan
offline
Re: Limit CPU Usage
Programko kaže...

Pretpostavljam da koristiš više jezgreni procesor. U današnje vrijeme su svi uglavnom takvi. I windowse. Za linux ne znam kako to podesiti. U win task manageru klikneš desnom tipkom miša i odabereš set Set Priority ili još bolje Set Affinity.

Pa je li logičnije da ubaci kod koji će određivati sam svoj priority.

 

Samo upiši u Google c++ set priority i klikni na prvo što ti izbaci i problem rješen!

17 godina
protjeran
offline
Limit CPU Usage

Točno, al pronaći pravu kombinaciju koja će raditi odgovarajuće na različitim kombinacijama hardvera, u različitim uvjetima je prva zajeb.

Programko http://programko.bloger.hr
Poruka je uređivana zadnji put uto 26.4.2011 17:29 (Programko).
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice