Process Explorer może pokazywać efektywny priorytet IO danego wątku, ale go nie zmieniać. Ponieważ obsługa priorytetów IO jest stosunkowo nową funkcją, większość programów nie ustawia własnych priorytetów IO. Wygląda na to, że domyślnie priorytet We / Wy pochodzi z priorytetu wątku (a nie priorytetu procesu), którego Process Explorer nie może zmodyfikować.
Czy są jakieś inne narzędzia, które mogą pomóc mi zmienić priorytet IO danego wątku / wszystkich wątków danego procesu?
Odpowiedzi:
Gotowe narzędzie
Zewnętrznym narzędziem do ustalania priorytetów procesu we / wy, zarówno poprzez ręczne działanie użytkownika, jak i automatyzację i trwałość, byłby Process Lasso . Może ustawić prawie dowolne ustawienie procesu i robić to uporczywie lub zgodnie z regułami (np. Gdy tak się stanie, zmień priorytet I / O).
Odpowiedź programowa
Odpowiedzią jest proste wywołanie API do NT Native API, NTSetInformationProcess . Jest zdefiniowany jako klasa „IoPriority” w DDK 2008. W NT6 obsługiwane są tylko dwa poziomy: bardzo niski (w tle) i normalny . Technicznie zdefiniowano 5 poziomów - Krytyczny, Wysoki, Normalny, Niski i Bardzo niski. Poziom krytyczny jest zarezerwowany dla operacji stronicowania. Brak danych o pozostałych.
Jednak właściwym sposobem korzystania z priorytetu we / wy jest jedynie uruchomienie „trybu tła” poprzez wywołanie funkcji Windows API SetProcessPriorityClass , dostarczając PROCESSS_MODE_BACKGROUND_BEGIN. Spowoduje to, że będzie korzystał z bardzo niskiego priorytetu we / wy (w tle) wraz z klasą priorytetu procesora IDLE. Po zakończeniu przywróć za pośrednictwem PROCESS_MODE_BACKGROUND_END.
SetThreadPriority API pozwoli również ten sam tryb tła dla poszczególnych wątków. Tutaj dostarczysz THREAD_MODE_BACKGROUND_BEGIN / END.
źródło
Opracowałem to po tym, jak nikt się tym nie przejmował: https://sourceforge.net/projects/iopriority/ (open source)
Ten program jest w stanie ustawić priorytet operacji we / wy, a wszystkie wątki są przez to natychmiast zmieniane. Bardzo łatwo jest go zmodyfikować, aby działał z wątkami zamiast procesami.
źródło
ProcessHacker to narzędzie GUI, które może zmienić priorytet IO dowolnego procesu.
źródło
Jestem częściowo zwolennikiem darmowej aplikacji o nazwie PRIO, która jest (między innymi) oszczędnością priorytetów procesu o bardzo małym (mniej niż 1 MB) rozmiarze. Po instalacji działa cicho w tle, dopóki go nie potrzebujesz, a jego interfejs wbudowuje się bezpośrednio w Menedżera zadań Windows, rozszerzając jego funkcjonalność i sprawiając, że dodane funkcje zawsze były częścią Menedżera zadań. Gdy klikniesz prawym przyciskiem myszy proces w Menedżerze zadań z zamiarem zmiany jego priorytetu, niektóre z dodatkowych funkcji PRIO stają się widoczne, ponieważ możesz zmienić nie tylko priorytet procesora, ale także jego priorytet we / wy (ergo swoje pytanie) , i możesz ZACHOWAĆ nowe ustawienia, jeśli chcesz. To ostatnie sprawia, że za każdym razem, gdy ten proces (tj. Ten program) jest uruchamiany, zarówno procesor, jak i priorytety procesu we / wy ustawione i zapisane przez ciebie wchodzą w życie.
Aplikacja ma inne funkcje, które rozszerzają także funkcjonalność różnych kart w Menedżerze zadań Windows. Istnieją wersje dla systemów 32- i 64-bitowych, a aplikacja jest bezpłatna do użytku osobistego.
źródło