2009-10-27 18 views
10

Jak zmaksymalizować wykorzystanie procesora dla mojej aplikacji? Próbowałem ustawić go na "Real-time" w Menedżerze zadań, ale nie było zauważalnej poprawy - utknął na poziomie 50%.Maksymalizuj użycie procesora

Pracuję w systemie Windows XP z Visual C++ 2005.

+1

Oprócz Eclipse odpowiadać: priorytet proces/wątek nie wpływa na obciążenie procesora, to tylko wpływa na sposób dostępne CPU jest rozdzielona między wątków waitign być wykonywany. Jeśli istnieje pojedynczy wątek w stanie bezczynności, ti otrzyma wszystkie cykle jednego rdzenia. – peterchen

Odpowiedz

27

Ja zakładając, że działa na komputerze z dwurdzeniowym. Spróbuj uruchomić inny wątek.

Jeśli w aplikacji jest tylko jeden wątek wykonania, można go uruchomić tylko na jednym rdzeniu procesora na raz. Rozwiązaniem tego jest podzielenie pracy na pół i uzyskanie jednego rdzenia procesora, aby uruchomić jedną połowę, a drugiego rdzenia, aby uruchomić drugą połowę. Oczywiście możesz to uogólnić do pracy z 4 rdzeniami lub więcej ....

Ustawienie priorytetu dla aplikacji przenosi ją tylko do kolejki, dla której proces ma pierwszą szansę na użycie procesora. Jeśli na procesor czeka proces w czasie rzeczywistym, zawsze otrzyma go przed wysokim priorytetem i tak dalej na liście priorytetów. Nawet jeśli twoja aplikacja ma niski priorytet, nadal może maksymalnie wydłużyć rdzeń procesora, jeśli ma wystarczająco dużo pracy do wykonania, a żaden proces o wyższym priorytecie nie chce korzystać z tego rdzenia.

Wprowadzenie do wielowątkowości, sprawdź następujące pytania:

+0

Dzięki! Człowieku, czuję się jak taki głupiec - dalej do OpenMP! – Jacob

9

Prawdopodobnie masz dwurdzeniowy procesor i Twój program jest prawdopodobnie jedno- gwintowane.

0

W czasie rzeczywistym niekoniecznie zje się cykle procesora. Spróbuj ułożyć wątek lub dwa lub trzy, które wykonują ciasne pętle, które się liczą, w najprostszy sposób. Jeśli chcesz (ab) korzystać z pamięci, możesz także przydzielić i zwolnić kilka dowolnych obiektów w twoich pętlach.

5

Pierwszeństwo mają mało lub nic wspólnego z tym, jak wiele CPU wykorzystuje swój proces. To dlatego, że jeśli coś jest dostępny do uruchomienia, system operacyjny będzie zaplanować go uruchomić, nawet jeśli jest on niski priorytet. Priorytet pojawia się tylko wtedy, gdy do wyboru są dwa lub więcej uruchomionych wątków. (Uwaga: To jest skrajnym uproszczeniem.)

pożerające liczby programów takich jak Prime95 bieg na możliwie najniższy priorytet i tarło wielu wątków do wykorzystania wszystkich jak wiele procesorów, jak masz.