Trochę mi to grozi.
Korzystam z dużego importu apertury, co powoduje spowolnienie mojego systemu do pełnego przeszukiwania, co w zasadzie czyni go bezużytecznym do czegokolwiek, nawet do przeglądania sieci. Ponieważ wydaje się to trochę nienaturalne, spędziłem trochę czasu na rozglądaniu się.
Uruchamianie ps -Al
pokazuje, że widocznie domyślnie Dock
, Finder
i SystemUIServer
wszystkie wydają się pracować z priorytetem znacznie obniżyć aplikacji następnie przestrzeni użytkownika. Podczas gdy aplikacje użytkownika mają zwykle priorytet 33, Dock, Finder itp. Mają priorytet 53.
Efektem końcowym jest ŻADNE zadanie intensywnie wykorzystujące procesor całkowicie blokujące interfejs użytkownika i uniemożliwiające korzystanie z systemu do momentu jego zakończenia.
W każdym razie użycie renice -20 -p <prid>
ich powoduje podniesienie ich do tego samego priorytetu, co w pozostałej części interfejsu użytkownika, i powoduje, że nie trzeba czekać 1-3 sekund (!), Aby interfejs zareagował na coś tak prostego, jak kliknięcie myszą.
Thad powiedział: mam dwa pytania:
Czy jest jakiś powód, dla którego nie powinienem zmieniać priorytetu wątku wyszukiwarki w ten sposób?
Czy jest jakiś sposób, aby zmiana priorytetu była trwała, np. Aby pozostała w ten sposób po ponownym uruchomieniu?
źródło
Odpowiedzi:
Nie jestem pewien, czy ktokolwiek poza własnymi programistami Apple byłby w stanie odpowiedzieć na to pytanie, wewnętrzne tajemnice Findera są ich domeną. Jeśli uważasz, że występują pewne zauważalne problemy z opóźnieniem w interfejsie użytkownika, możesz przesłać do Apple raport o błędzie.
Sądząc po dźwiękach rzeczy (procesy celowo zajmują wszystkie zasoby), jest to pewien wyjątkowy przypadek zarządzania pamięcią. Nie widziałem jeszcze, aby system działał najlepiej bez około 10-20% wolnych zasobów, jako pomoc w buforowaniu.
Po prostu ciekawi, jakie są te procesy używasz?
źródło
„Korzystam z dużego importu z aperturą, co powoduje spowolnienie mojego systemu do pełnego przeszukiwania”
Aperture to (prawdopodobnie) program, który chcesz
renice
, a nie inne. Wspomniane procesy są dostosowane w stosunku do przeciętnych aplikacji użytkownika, dzięki czemu aplikacje użytkownika mają wyższy priorytet i pozostają responsywne, ponieważ są one najczęściej używane przez użytkowników.Twój przypadek jest rzadszy, gdy aplikacja wykonuje długoterminowe, intensywne zadanie, a użytkownik chce zrobić coś innego w tym samym czasie. Domyślnie priorytetem są aplikacje użytkownika, dzięki czemu te intensywne zadania otrzymują więcej zasobów i kończą się wcześniej.
Na każdego użytkownika, który skarży się, że inne aplikacje nie reagują wystarczająco szybko, inny użytkownik skarży się, że aktywna aplikacja nie działa wystarczająco szybko.
Jeśli wykonujesz długie i wymagające dużo zasobów zadanie i wiesz, że chcesz, aby miał niższy priorytet, abyś mógł korzystać z innych procesów podczas wykonywania zadania - i nie przeszkadza ci to, jeśli intensywne zadanie trwa dłużej - powinieneś obniżyć priorytet proces prowadzący intensywne zadanie.
Jeśli chodzi o twoje drugie pytanie, istnieje kilka możliwych rozwiązań, aby uczynić je
renice
bardziej automatycznymi. Na przykład, możesz utworzyć aplet skryptu, który uruchamia Aperture z niższym priorytetem i użyć go do uruchomienia Aperture. Lub możesz uruchomić Aperture za pomocą skryptu powłoki przechowywanego w pliku * .command (jednak to otworzy Terminal i uruchomi polecenie w oknie terminala, co może nie być tym, czego chcesz). Każdy z nich jest trochę zaangażowany. Jeśli chcesz przykłady, mogę zobaczyć o ich dostarczeniu później.źródło
renice
rzeczy, ale faktyczny problem jest priorytetem wyszukiwarki.renice
działa na procesach, a nie na wątkach.Postawiłem podobne pytanie - dawno temu, na ServerFault - choć nie tak bardzo koncentrowałem się na Finderze (chociaż uważam, że Finder jest również niedopuszczalnie wolny). Jak trwale „przywrócić” proces na Mac OS X (lub iOS itp.)? Nie zebrano tam wielu informacji - co do dobrego sposobu na zrobienie tego… lub dlaczego tak jest…
Nadal często o tym myślę, a tak naprawdę istnieje kilka sposobów na zastanowienie się nad „podstawami”, jeśli się odważysz. Jak wcześniej wspomniano, możesz robić różne skorupki powłoki, ale dobrym miejscem na takie błędy są różne
/etc/rc*
procedury rozruchowe ... które już tam są ... ustawianie dla ciebie różnych arbitralnych (zdefiniowanych przez Apple) parametrów systemowych. edytuj je lub sprawdź, jak dodać własne procedury do procesu rozruchu.jeśli naprawdę chcesz sprawić, by głowa eksplodowała ...
sudo sysctl list
i to jest klucz do puszki Pandory, alias/etc/sysctl.conf
źródło