Jaki jest pożytek z priorytetu „w czasie rzeczywistym” dla procesu?
12
Z mojego doświadczenia wynika, że ustawienie dowolnego procesu w czasie rzeczywistym spowoduje zwolnienie tempa pracy komputera. Do czego służy to ustawienie, jeśli sprawia, że komputer nie nadaje się do użytku?
Jeśli masz procesor wielordzeniowy lub system wieloprocesorowy, możesz ustawić powinowactwo tylko dla jednego rdzenia. W ten sposób reszta systemu pozostanie responsywna i będziesz mógł cieszyć się resztą korzyści płynących z procesu w czasie rzeczywistym. To oczywiście działa dobrze tylko w przypadku procesów, które do działania wymagają tylko jednego rdzenia.
AndrejaKo,
Odpowiedzi:
7
Dokładnie to, co opisujesz, kosztem spowolnienia reszty komputera do przeszukiwania, uruchamia proces w czasie rzeczywistym, nadając mu wyższy priorytet niż wszystko inne. Jest to konieczne tylko w przypadku aplikacji krytycznych czasowo, większość ludzi nie widzi ich w życiu codziennym ...
Niektóre bardzo popularne programy, takie jak serwery dźwięku (PulseAudio i JACK jako dwa przykłady Linuksa), używają wątków priorytetowych w czasie rzeczywistym.
user1686,
@grawity: JACK nie jest serwerem, ale tylko zestawem programistycznym. Oba są wieloplatformowe. Dobrze, że rzeczy audio wymagają priorytetu w czasie rzeczywistym, ale mówiłem z punktu widzenia systemu Windows 7, w którym te procesy, które określasz, nie mają priorytetu w czasie rzeczywistym. Windows ma jednak coś, co nazywa się Multimedia Class Scheduler dla tego rodzaju procesów ...
Tamara Wijsman
Czym jackdzatem jest serwer dźwięku? (Z tego, co rozumiem do tej pory, zarówno PA, jak i JACK działają w ten sam sposób, ponieważ zapewniają zarówno serwer dźwięku, jak i bibliotekę / zestaw, aby uzyskać do niego dostęp ...)
user1686
To nie sprawia, że zestaw nagle staje się serwerem. Mówimy tutaj o procesach, a nie wątkach ...
Tamara Wijsman,
1
Innymi przykładami aplikacji w czasie rzeczywistym są aplikacje medyczne i robotyka sterowana bezpośrednio. Rzeczy, w których 10 µs jest różnicą między prawidłową pracą a awarią (gdzie awaria może obejmować robota zjeżdżającego z klifu lub pacjenta narażonego na zbyt duże promieniowanie).
ligos
2
Może się to wydawać niepotrzebne, ale po uruchomieniu procesu można przekazać parametry, które ustawiają proces na różnych poziomach priorytetu. Menedżer zadań pokazuje to jako ustawienie opcjonalne, ponieważ jest to opcja, która może być ustawiona dla procesu przez oprogramowanie, które zainicjowało jego wykonanie. Większość programów działa na poziomie „normalnym”, ale czasami może się zdarzyć, że kilka programów działa domyślnie na niższym poziomie. Nigdy nie widziałem oprogramowania, które zaczyna się w stanie powyżej normy.
Warto również wspomnieć, że zdarza się, że proces może działać z najwyższym ustawieniem priorytetu i nie wydaje się, aby wpływał on znacząco na wydajność systemu. Na przykład, jeśli proces zostanie uruchomiony i zostanie przypisany do pracy tylko na 1, powiedzmy, 8 rdzeniach procesora, ustawienie priorytetu procesów na „w czasie rzeczywistym” oznaczałoby, że zużyłby on jeden procesor, pozostawiając 7 do wykorzystania przez System operacyjny i inne oprogramowanie. W takim przypadku wykonanie w czasie rzeczywistym może prawie nie mieć wpływu na system, ale może spowodować rozsądny spadek wydajności procesu o wysokim priorytecie.
Prawie nigdy nie zalecałbym ręcznego ustawiania procesu do uruchamiania w „czasie rzeczywistym” z poziomu System Managera. Jest tak, ponieważ zmieniasz ustawienia wykonywania dla procesu, który mógł zostać zaprojektowany do działania w jednym określonym stanie wykonania. Zmiana priorytetu wykonania może w niektórych przypadkach spowodować awarię aplikacji, a jeśli jest to operacja zapisu danych, może to spowodować uszkodzenie danych!
Są jednak przypadki, w których użycie maksymalnego priorytetu wykonania dla procesu może być właściwe, ale nawet wtedy takie ustawienia priorytetu powinny być ustawione przez aplikację sterującą, a nie przez użytkownika końcowego poprzez okno dialogowe zarządzania systemem.
Ja osobiście polecam NIGDY nie zmieniać priorytetu zadań, chyba że naprawdę nie obchodzi cię, czy się zawiesi, a zadanie ZUPEŁNIE nie jest krytyczne. Jeśli dokumentacja oprogramowania wyraźnie stwierdza, że można podnieść proces, aby działał z większą prędkością, aby przyspieszyć bardzo duże obciążenie pracą procesora, byłoby to również dopuszczalne, jednak byłbym nieco sceptyczny, gdyby mechanizm z w ramach aplikacji nie jest przewidziane.
Jako osobistą anegdotę istnieje tylko jeden proces, który czasami zmieniam ręcznie - aplikacje do kompresji oprogramowania. Nie miałem do rozpakowania ogromny plik w długim czasie, ale stwierdziliśmy, że jeśli jestem w pośpiechu ( hm jest niecierpliwy) mogę podkręcić priorytet procesu i uzyskać umiarkowaną gulę w wydajności. Ponieważ aplikacje te uruchamiają zadanie robocze, a następnie zamykają się po ich zakończeniu, nie muszę się martwić rozbrajaniem ustawień procesora, ponieważ po zakończeniu wyodrębniania danych aplikacja przestanie działać. To jedyny raz, kiedy osobiście uznałem za użyteczne kontrolowanie szybkości procesora poprzez zarządzanie systemem.
Jako programista nie mogę sobie wyobrazić sytuacji, w której podanie większej ilości zasobów spowodowałoby awarię programu
TheLQ
Jako programista tak, ale ustawienie procesu do uruchomienia na określonym poziomie może powodować problemy, zwłaszcza jeśli oprogramowanie zostało napisane (być może nawet słabo) do pracy równoległej z innymi procesami. Moje sugestie pochodzą zarówno z doświadczenia, jak i ze zrozumienia, że nie wszyscy użytkownicy są programistami. Ustalanie priorytetów uruchomionych procesów, których nie opracowałeś, z pewnością może wywołać nieoczekiwane zachowanie. Nie chcę nikogo straszyć, nie chcę też zachęcać innych użytkowników do bałagania się ustawieniami procesu, jeśli istnieje szansa, że ich zmiany mogą być szkodliwe.
RLH,
0
Priorytet czasu rzeczywistego używam do przyspieszania gier na moim laptopie innym niż gamingowy. Kiedy jestem w grze, nie dbam o proces w tle i czerpię znacznie więcej przyjemności z przydzielania w ten sposób mojej mocy obliczeniowej.
Odpowiedzi:
Dokładnie to, co opisujesz, kosztem spowolnienia reszty komputera do przeszukiwania, uruchamia proces w czasie rzeczywistym, nadając mu wyższy priorytet niż wszystko inne. Jest to konieczne tylko w przypadku aplikacji krytycznych czasowo, większość ludzi nie widzi ich w życiu codziennym ...
źródło
jackd
zatem jest serwer dźwięku? (Z tego, co rozumiem do tej pory, zarówno PA, jak i JACK działają w ten sam sposób, ponieważ zapewniają zarówno serwer dźwięku, jak i bibliotekę / zestaw, aby uzyskać do niego dostęp ...)Może się to wydawać niepotrzebne, ale po uruchomieniu procesu można przekazać parametry, które ustawiają proces na różnych poziomach priorytetu. Menedżer zadań pokazuje to jako ustawienie opcjonalne, ponieważ jest to opcja, która może być ustawiona dla procesu przez oprogramowanie, które zainicjowało jego wykonanie. Większość programów działa na poziomie „normalnym”, ale czasami może się zdarzyć, że kilka programów działa domyślnie na niższym poziomie. Nigdy nie widziałem oprogramowania, które zaczyna się w stanie powyżej normy.
Warto również wspomnieć, że zdarza się, że proces może działać z najwyższym ustawieniem priorytetu i nie wydaje się, aby wpływał on znacząco na wydajność systemu. Na przykład, jeśli proces zostanie uruchomiony i zostanie przypisany do pracy tylko na 1, powiedzmy, 8 rdzeniach procesora, ustawienie priorytetu procesów na „w czasie rzeczywistym” oznaczałoby, że zużyłby on jeden procesor, pozostawiając 7 do wykorzystania przez System operacyjny i inne oprogramowanie. W takim przypadku wykonanie w czasie rzeczywistym może prawie nie mieć wpływu na system, ale może spowodować rozsądny spadek wydajności procesu o wysokim priorytecie.
Prawie nigdy nie zalecałbym ręcznego ustawiania procesu do uruchamiania w „czasie rzeczywistym” z poziomu System Managera. Jest tak, ponieważ zmieniasz ustawienia wykonywania dla procesu, który mógł zostać zaprojektowany do działania w jednym określonym stanie wykonania. Zmiana priorytetu wykonania może w niektórych przypadkach spowodować awarię aplikacji, a jeśli jest to operacja zapisu danych, może to spowodować uszkodzenie danych!
Są jednak przypadki, w których użycie maksymalnego priorytetu wykonania dla procesu może być właściwe, ale nawet wtedy takie ustawienia priorytetu powinny być ustawione przez aplikację sterującą, a nie przez użytkownika końcowego poprzez okno dialogowe zarządzania systemem.
Ja osobiście polecam NIGDY nie zmieniać priorytetu zadań, chyba że naprawdę nie obchodzi cię, czy się zawiesi, a zadanie ZUPEŁNIE nie jest krytyczne. Jeśli dokumentacja oprogramowania wyraźnie stwierdza, że można podnieść proces, aby działał z większą prędkością, aby przyspieszyć bardzo duże obciążenie pracą procesora, byłoby to również dopuszczalne, jednak byłbym nieco sceptyczny, gdyby mechanizm z w ramach aplikacji nie jest przewidziane.
Jako osobistą anegdotę istnieje tylko jeden proces, który czasami zmieniam ręcznie - aplikacje do kompresji oprogramowania. Nie miałem do rozpakowania ogromny plik w długim czasie, ale stwierdziliśmy, że jeśli jestem w pośpiechu ( hm jest niecierpliwy) mogę podkręcić priorytet procesu i uzyskać umiarkowaną gulę w wydajności. Ponieważ aplikacje te uruchamiają zadanie robocze, a następnie zamykają się po ich zakończeniu, nie muszę się martwić rozbrajaniem ustawień procesora, ponieważ po zakończeniu wyodrębniania danych aplikacja przestanie działać. To jedyny raz, kiedy osobiście uznałem za użyteczne kontrolowanie szybkości procesora poprzez zarządzanie systemem.
źródło
Priorytet czasu rzeczywistego używam do przyspieszania gier na moim laptopie innym niż gamingowy. Kiedy jestem w grze, nie dbam o proces w tle i czerpię znacznie więcej przyjemności z przydzielania w ten sposób mojej mocy obliczeniowej.
źródło