Strona główna › Forums › Oprogramowanie › Ambient Threads i priorytety
Czy jest możliwość ustawienia tak aby priorytet wątków Ambienta nie schodził poniżej -1 ?
Ps. Dlaczego ? – ano dlatego, że nie ma najmniejszego sensu aby kolejne wątki pojawiały się z coraz niższym priorytetem, wręcz przeszkadza to, już od 1.45 wersji MorphOSa.
W sumie nawet tego nie zauważyłem… Gdy spojrzę w Task Managera widzę sześć wątków Ambienta, z czego pięć ma priorytet 0, a jeden -1. W jakich sytuacjach objawia się to zmniejszanie priorytetów?
Sytuacja wygląda tak: blender sobie renderuje (domyślnie ma -1) w tym czasie przeglądam sobie zawartość dysku i jest ok do momentu kiedy przełączę na wyświetlanie all files. Po wyświetleniu all files (jeszcze zrywnym) ów wątek zmienia priorytet na -2 i zamuła – można zapomnieć o multitaskingu ;] Ambienta, właściwie do zwolnienia zajętości procesora przez blendera (po tym priorytet Ambienta wraca samoistnie do normy) . Teoretycznie mogę zmienić priorytet blendera czy ambienta, jednak w przypadku ambienta musiałbym to robić co chwilę … a w przypadku każdej nowej aplikacji intesywnie wykorzystującej procesor kombinować z dostrajaniem jej …
To jest zrobione specjalnie – chodzi o to, żeby skanowanie plików przez Ambienta nie zamuliło z kolei całego systemu, bo to może trochę potrwać. Dlatego przy skanowaniu katalogu wątek Ambienta zmienia na chwilę priorytet na -2. Można się zastanawiać co jest najlepszym rozwiązaniem tego problemu. Moim osobistym zdaniem proces renderujący Blendera powinien mieć domyślnie znacznie mniejszy priorytet, na przykład -50 (dla przykładu klient dnetc ma -120).
Rozumiem, że specjalnie, jednak nadal uważam, że -2 to znaczna przesada gdyż po prostu nie sprawdza się to w praktyce a "jedynie" przeszkadza i wprowadza niepotrzebny zamęt (nie tylko przy blenderze) . Z drugiej strony inne częsci systemu mają ustawione priorytety odpowiednio wysoko aby do sytuacji o której piszesz nie doszło. Skanowanie i wyświetlanie thumbnails ma być szybkie i niezależnie od uruchamianych aplikacji. Ustawienie wątku renderującego blendera na niski priorytet uniemożliwia edycje (podgląd konkretnie) materiałów w czasie renderowania. Wydaje mi się, że Ambient i aplikacje silnie obciążające procesor powinny ścierać się na tym samym poziomie priorytetu a dopiero aplikacje wymagajace czasu rzeczywistego (odtwarzanie muzyki lub filmu) powinny być na poziomie 0. Aktualny bajer Ambienta to utrudnia. Pomyślmy jak zrobić jakiś brzydki workaround który bedzie pilnował priorytetów Ambienta
na poziomie -1.
Najprościej chyba sobie skompilować prywatną wersję Ambienta. W końcu jest na GPL.
Cóż skasowałem trochę empetrójek zainstalowałem SDK – zobaczymy hehe … a tak serio to wątpię czy intuicja i strzępki wiedzy wystarczą mi do tego zadania … Które archiwum ze źródłami Ambienta jest właściwe ? muszę skorzystać z CVS serwer-klient czy wystarczy pobrać tarball ?
Ps. Tylko nie wiem który czy z głównej strony http://morphosambient.cvs.sourceforge.net/morphosambient/ czy z podkatalogu ?
Tak w ogóle to chyba jednak wystarczy zmieniać priorytet wątku renderującego blendera na -2 i trochę (ale tylko trochę) bez sensu jest ten mój wywód bo i tak podgląd materiału podczas renderingu nie odświeża się niezależnie od priorytetu. Z drugiej strony super , że jak komuś coś nie pasuje w Ambiencie to sobie może zmienić.
W zasadzie masz rację z tym, że na chwilę obecną chyba nie można ustawić na stałe (ja nie znalazłem takiej opcji) domyślnego priorytetu dla procesu renderującego Blendera. Zmienianie go TaskManagerem za każdym razem gdy jest to potrzebne specjalnie wygodne nie jest. Także tutaj nasuwa się sugestia dla autora portu Blendera.
Z drugiej strony zaciekawiła mnie możliwość samodzielnej kompilacji Ambienta i sprawdzenia w praktyce swojej teorii. Przyszedł mi też do głowy pomysł na rozszerzenie TaskManagera o taki "profiler" który by ustawiał priorytety "niewygodnych procesów" według z góry ustalonych kryteriów przez użytkownika w momencie pojawiania się takowych na liście procesów (lub oddzielny programik do tego).
Zdaje się chyba nie tak prosto brakuje w SDK proto/cgxdither.h. Z "Legacy" kompiluje się i działa, ale dla 1.45 to jednak nie to samo.
Copyright 2014 - Wszelkie prawa zastrzeżone MorphOS.pl