Przeczytałem, że ustawienie czegoś w czasie rzeczywistym jest dużym nie-nie, więc nie zamierzam tego robić. Ale mam aplikację, którą muszę upewnić się, że zawsze ma najwyższy priorytet w moim systemie, ponieważ ma ona kluczowe znaczenie dla pozostałych aplikacji, które uruchamiam. Czy istnieje jakieś niebezpieczeństwo przy ustawianiu priorytetu na wysoki, czyli o jeden poziom poniżej czasu rzeczywistego?
W jaki sposób mógłbym to zrobić, zmieniając cel skrótu? Jakie jest polecenie?
Odpowiedzi:
Czas rzeczywisty niekoniecznie oznacza „nie-nie”. Może po prostu zagłodzić inne procesy poza cykle procesora. Niektóre aplikacje nie mogą sobie z tym poradzić. To coś, z czym będziesz musiał eksperymentować.
Wysoka powinna być mniejszym problemem. Jednak nadal musisz monitorować system, aby sprawdzić, czy wszystkie aplikacje działają poprawnie.
Oto jak zmienić proces za pomocą wiersza polecenia, który można umieścić w skrócie:
http://support.microsoft.com/kb/191771
źródło
Powiedziałbym, że to zależy. Jeśli masz tylko jeden rdzeń / procesor na komputerze i jest to zadanie wymagające dużej mocy procesora, nie ustawiłbym go w czasie rzeczywistym. Wysoka może być w porządku, ale to wymaga eksperymentowania.
Jeśli masz wiele rdzeni, a proces jest jednowątkowy: śmiało, ustaw go tak, jak chcesz. Pozostałe rdzenie będą nadal wolne, nawet jeśli jeden rdzeń jest obciążony w 100% przez cały czas.
Jeśli masz wiele rdzeni, a proces jest wielowątkowy: zależy to od tego, czy wszystkie wątki będą obciążone w 100%. Niektóre programy mają wątek „menedżera”, który wysyła pracę do innych wątków, ale sam nie wykonuje dużego przetwarzania. Dzięki temu jeden rdzeń byłby prawie wolny, a tym samym pozwalałby na wysoki priorytet lub priorytet w czasie rzeczywistym.
Inne programy spróbują pobrać wszystkie rdzenie. W tym przypadku wysoki może być w porządku, ale wymaga eksperymentowania.
Nawet inne pobierają tylko określoną liczbę rdzeni i mogą nie używać wszystkich dostępnych rdzeni. W takim przypadku priorytet lub wysoki priorytet w czasie rzeczywistym powinny być w porządku.
Jeśli nie masz jednego rdzenia, śmiało eksperymentuj. Przez większość czasu ustawienie go na wysoki, a nawet w czasie rzeczywistym, nie zaszkodzi. Możesz ustawić powinowactwo procesu (liczbę rdzeni, których może użyć) również w menedżerze zadań. W ten sposób możesz lepiej zrównoważyć obciążenie procesora. Może także pomóc obniżyć temperaturę i zużycie energii itp.
źródło
To, czy to zadziała, zależy całkowicie od tego, co robi twoja aplikacja. Jeśli przechodzi przez długie, długie obliczenia, które nigdy nie muszą czekać na operacje we / wy, spodziewaj się, że uruchomienie tego z wysokim priorytetem może doprowadzić maszynę do upadku. Ale jeśli problemem jest opóźnienie, a aplikacja musi się bardzo szybko obudzić w odpowiedzi na zakończenie operacji we / wy lub podobne zdarzenie, wykonaj szybkie przetwarzanie, a następnie wróć do trybu uśpienia, wszystko będzie dobrze.
źródło
Ogólnie rzecz biorąc, każda aplikacja, która ustawia swój priorytet procesu głównego na coś innego niż normalny, negatywnie wpłynie na wszystko inne na twoim komputerze pod względem wydajności. Gdyby więc każda aplikacja przyjmowała takie samoocenione podejście, ostatecznie nic nie działałoby poprawnie.
Prawidłowy sposób używania wyższych priorytetów to indywidualne ZADANIA, a nie APLIKACJE. Te zadania powinny być uruchamiane tylko w razie potrzeby, a następnie zatrzymywać się lub zawieszać, gdy nie mają pracy. Jeśli podczas pisania aplikacji czujesz, że musisz zmienić priorytetowy poziom podstawowy, zastanów się, jak skrócić interwał, gdy jest to konieczne, tak krótko, jak to możliwe.
Warto nawet zainwestować w książkę lub kurs na temat równoczesnego i równoległego przetwarzania, zanim zbliżysz się do czegoś takiego jak priorytetowe wędrówki.
źródło