Jak uruchomić program z określonym priorytetem CPU dla określonego rdzenia?

Jak uruchomić program z określonym priorytetem CPU dla określonego rdzenia?

Autor: Robert Żuber

Opublikowano: 11/16/2008, 12:00 AM

Liczba odsłon: 41226

W dobie procesorów wielordzeniowych, istnieje możliwość takiego podziału zadań, jakie ma do wykonania mózg komputera, aby za każdy z rozpoczętych procesów odpowiadał zdefiniowany przez użytkownika rdzeń. Nie zagłębiając się zbytnio w architekturę technologiczną, w uruchomionym systemie oba jądra elastycznie współpracują, wymieniając się obowiązkami. Możliwe jest również ręczne zdefiniowanie, z którego CPU uruchomiona przez użytkownika aplikacja będzie korzystać. W Windows Vista służy do tego komenda start z odpowiednim parametrem, uruchamiana z Wiersza polecenia.

Otwórzmy więc wspomniane narzędzie poprzez Start, Wszystkie programy, Akcesoria. Do ustalenia numeru rdzenia, na którym pracować będzie wybrany program, posłuży przełącznik /affinity numer_rdzenia. Przykładowa komenda wyglądać więc może w ten sposób: start /affinity 1 mspaint.exe. Uruchomi ona program Paint pracujący na CPU 0. Przełącznik /affinity 2 natomiast, spowoduje, że aplikacja uruchomi się na drugim rdzeniu, o oznaczeniu CPU 1. Dla większej ilości jąder, sytuacja jest nieco bardziej skomplikowana, ponieważ wartość koligacji jest zapisywana w systemie szesnastkowym. Dla procesorów czterordzeniowych wygląda to następująco:

  • 1 - CPU0
  • 2 - CPU1
  • 3 - CPU0 and CPU1
  • 4 - CPU2
  • 5 - CPU2 and CPU0
  • 6 - CPU2 and CPU1
  • 7 - CPU2, CPU1, and CPU0
  • 8 - CPU3
  • 9 - CPU3 and CPU0
Dla sprawdzenia, czy polecenie rzeczywiście przynosi oczekiwany skutek wprowadźmy poprzednio przywołaną, przykładową komendę. Następnie nie zamykając okna edytora grafiki, wciśnijmy kombinację Alt + Ctrl + Del, z listy wybierzmy Uruchom Menadżer zadań, a następnie przenieśmy się na kartę Procesy. Na liście odnajdźmy mspaint.exe i z menu kontekstowego wybierzmy Ustaw koligację. Jak zapewne zauważymy, zaznaczony został jedynie CPU 0.

Kolejną przydatną funkcjonalnością w zarządzaniu uruchamianymi procesami jest ustalanie priorytetu dla wykonywanych zadań. Procesy z wysokim priorytetem są wyżej w hierarchii, aniżeli te z normalnym, czy niskim, dzięki czemu procesor wie, że moc obliczeniową należy skupić właśnie na nich. Przydzielanie "ważności" programom odbywać się może w oknie Menadżera zadań, ale znacznie wygodniejsze jest zastosowanie specjalnego przełącznika dla opisywanego już wcześniej start. Konstrukcja jest podobna jak poprzednio: start /priorytet ścieżka/proces.exe. Dostępne priorytety są następujące:

  • /LOW - niski
  • /BELOWNORMAL- poniżej normalnego
  • /NORMAL - normalny
  • /ABOVENORMAL - powyżej normalnego
  • /HIGH - wysoki
  • /REALTIME - czasu rzeczywistego

Wyobraźmy sobie więc, że chcemy uruchomić Notatnik z wysokim priorytetem. Użyjemy więc w tym celu polecenia start /high notepad.exe

Przywołane polecenia możemy połączyć i używać również razem, uruchamiając je przy pomocy skrótu czy pliku wsadowego. Tworząc skrót wystarczy jako element docelowy podać na przykład: c:\windows\system32\cmd.exe /C start /affinity 1 /abovenormal calc.exe, natomiast w pliku .bat ograniczyć możemy się do start /affinity 1 /abovenormal calc.exe. Oba sposoby uruchomią systemowy kalkulator, na pierwszym rdzeniu, z priorytetem poniżej normalnego.

Powyższe działania mają sens przy wywoływaniu wymagających programów, które potrzebują do swojego działania dużej mocy obliczeniowej, lub wręcz odwrotnie, gdy chcemy maksymalnie ograniczyć zużywanie zasobów, dla mniej istotnych aplikacji działających w tle. Odpowiednio skonstruowana komenda start jest więc znakomitym rozwiązaniem dla użytkowników, którzy pragną odpowiednio rozplanować tryb działania swojego oprogramowania, tak aby, praca z systemem była stabilna i przyjemna.