Jak przyspieszyć Maka? Garść doświadczeń z optymalizacją macOS na MacBooku Pro

Jak przyspieszyć Maka? Garść doświadczeń z optymalizacją macOS na MacBooku Pro05.10.2016 16:18

Ponieważ moje ostatnie publikacje poświęcone problemom z systemem macOS (a wcześniej OS X) spotykają się z uroczym zarzutem, że to hejt i herezja, pomyślałem że dla odmiany popełnię coś bardziej konstruktywnego. Oczywiście, jeśli problemów z wydajnością Maka i prędkością działania nie widzicie, czytać dalej nie musicie, ale jeśli chcielibyście jednak żeby działał lepiej, to poniżej zbiór moich doświadczeń. Jest to wynik eksperymentów organoleptycznych, znaczy przestawiam i patrzę, czy działa lepiej. Wyczucie zwykle mam dość celne, ale oczywiście jest też możliwe, że część z tych sztuczek ma właściwości efektu placebo. Oceńcie sami, poniżej lista tego, z czym sam się zmagałem, żeby system chodził bardziej płynnie.

Interfejs użytkownika

Brak płynności w animacjach elementów interfejsu to jedna z tych rzeczy, które najbardziej mi przeszkadzają. Poprawić to można w Preferencje systemowe -> Dostępność -> Ekran. Są tam trzy opcje, przy czym największy efekt daje włączenie Zmniejsz przeźroczystość. Wygląd bardzo na tym nie traci (mi nawet podoba się bardziej), a przyspieszenie jest widoczne. Jest też opcja Zredukuj ruch, przez którą tracimy już część atrakcyjnych wizualnie wodotrysków, ale okienka aplikacji pojawiają się i przełączają znacznie szybciej. Pewną poprawę daje też włączenie opcji Zwiększ kontrast, ale jak dla mnie zbyt mocno zmienia ona wygląd interfejsu, żeby warto było z niej korzystać.

Alternatywą dla opcji Zredukuj ruch jest skorzystanie z programu OnyX do modyfikacji opcji systemu niedostępnych z poziomu standardowego interfejsu. W zakładce Parameters -> General jest opcja Show graphic effects when opening a window oraz w zakładce Parameters -> Dock jest opcja Show when opening applications. Zmieniają one sposób działania systemu w dużo mniejszy sposób niż Zredukuj ruch, a efekt przyspieszenia i większej płynności działania interfejsu jest spory.

[1/2]
[2/2]

System, aplikacje i maszyny wirtualne

Po pierwsze, moje obserwacje w korzystaniu z notebooka (i to nie tylko z Maków) są takie, że elementy interfejsu użytkownika zaczynają chodzić tym wolniej, im częściej hibernujemy komputer zapisując pamięć RAM na dysk twardy. Wyłączenie opcji hibernacji skraca czas, przez który komputer może pozostawać w stanie zwykłego uśpienia na baterii, ale jest to kompromis, który przynajmniej dla mnie jest akceptowalny. Jeśli potrzebuję przechować komputer na dłuższy czas bez żyłowania baterii wyłączam go, a nie hibernuję.

Stan parametrów hibernacji można sprawdzić wpisując w wierszu poleceń pmset -g custom. Wyłączenie hibernacji wykonuje się poleceniami pmset -a standby 0 oraz pmset -a autopoweroff 0. Jeśli macie wątpliwości, to polecam man pmset. Tym poleceniem można też wyłączyć korzystanie ze zintegrowanej, słabszej karty graficznej (jeśli posiadamy odpowiedniego notebooka) poleceniem pmset -g gpuswitch 1.

Jeśli korzystacie z maszyn wirtualnych lub narzędzi wykonujących spore operacje w tle, warto spróbować włączyć opcję server performance mode. Szczegóły jej działania nie są niestety dobrze udokumentowane, wiadomo tylko że zmienia między innymi parametry jądra systemu optymalizując je do pracy z wieloma aplikacjami działającymi równolegle lub w tle. W przypadku maszyn wirtualnych na VMware Fusion ja zauważyłem różnicę. Jeśli nie macie żadnych niestandardowych parametrów startu systemu, wystarczy wpisać sudo nvram boot-args="serverperfmode=1" i zrestartować system.

Warto spróbować też wyłączyć opcję App Nap dla wszystkich aplikacji w systemie poleceniem defaults write NSGlobalDomain NSAppSleepDisabled -bool YES.

Sieć, VPN i SMB

Działanie warstwy sieciowej, w szczególności połączeń VPN oraz protokołu SMB, to ewidentnie pięta achillesowa Maków. Póki co nie znalazłem dobrego rozwiązania, a jedynie półśrodki, które niestety stanowią też kompromis pomiędzy wydajnością oraz bezpieczeństwem. Prędkość transferu plików z serwerów SMB można poprawić dodając do pliku konfiguracyjnego Samby znajdującego się w lokalizacji /etc/nsmb.conf następujące parametry:

[default] signing_required=no read_async_cnt=16 write_async_cnt=16 dir_cache_async_cnt=20 dir_cache_max_cnt=8192

Wnikliwi mogą sprawdzić, co konkretnie wprowadzają te zmiany w dokumentacji man nsmb.conf. Trzeba tylko mieć świadomość, że wyłączenie podpisywania pakietów osłabia bezpieczeństwo i nasze połączenia do serwera SMB muszą być po bezpiecznej, najlepiej szyfrowanej trasie.

Świetny przewodnik po optymalizacji warstwy sieciowej znaleźć można na blogu Rolande's Ramblings. Niestety jest już mocno zdezaktualizowany i wiele domyślnych ustawień najnowszej wersji macOS Sierra jest już zgodna z tym, co kilka lat temu sugerował Scott. Jest to lektura dla zaawansowanych użytkowników, gorąco polecam nie tyle przekopiowanie jego zestawu ustawień, co przeczytanie ze zrozumieniem, za co odpowiadają poszczególne parametry i jakie byłyby najlepsze dla naszego środowiska. Potrzebny jest do tego długi weekend, ale warto, tym bardziej że ciężko tu o uniwersalną receptę dla każdego. Przykładowo, jeśli chcecie zoptymalizować połączenia do serwerów SMB lub AFP za pośrednictwem VPN, ustawienia net.inet.tcp.win_scale_factor oraz net.inet.tcp.slowstart_flightsize mogą zależeć od prędkości Waszego połączenia WAN.

Google Chrome

Optymalizacja przeglądarki to osobny i długi jak rzeka temat. Pod Makami oczywiście najlepiej chodzi Safari i żadna inna przeglądarka nie zapewnia choćby zbliżonej płynności przeglądania stron. Jeśli jednak nie możecie przeprosić się z Safari, polecam kanał kompilacji deweloperskich Google Chrome. Mimo okazjonalnych błędów, najnowsze wersje Chrome po tuningu chodzą już dość przyzwoicie. Po jakim tuningu, spytacie?

Polecam otworzyć stronę chrome://flags. Jest tam wiele opcji, z którymi można eksperymentować i wiele zależy od tego, jaki efekt chcemy uzyskać. Mnie osobiście nie interesuje wydajność przeglądarki w grach wykorzystujących 3D, natomiast oczekuję że przewijanie stron będzie działać szybko i płynnie, podobnie jak animacje w elementach interfejsu stron. Obecnie korzystam z włączonych nastepujących opcji:

#enable-fast-unload #enable-ignition #enable-gpu-rasterization -> włączone, nie wymuszone #enable-scroll-prediction #touch-events #v8-cache-options #v8-cache-strategies-for-cache-storage #passive-listener-default -> wymuś wszędzie #document-passive-event-listeners #passive-event-listeners-due-to-fling #enable-loading-ipc-optimization-for-small-resources #enable-font-cache-scaling

Ten zestaw parametrów powoduje, że Chrome 55.0.2873.4 dev (64-bit) działa całkiem znośnie. Największą zagadką jest dla mnie opcja #touch-events, bo przecież MacBook nie ma ekranu dotykowego, niemniej jej włączenie powoduje że przewijanie skomplikowanych stron jest jakby płynniejsze. Czemu? Nie wiem. Możliwe też, że tylko tak mi się wydaje, sprawdźcie sami. Są też inne opcje, niemniej w zależności od wersji Google Chrome (eksperymentuję z tymi parametrami juz od dłuższego czasu) przynoszą one różne i czasem odwrotne efekty:

#enable-experimental-canvas-features #enable-canvas-2d-dynamic-rendering-mode-switching #enable-javascript-harmony #enable-asm-webassembly #enable-webassembly

Czy to działa? A może macie swoje obserwacje?

Po pierwsze zaznaczam, że ten zbiór pomysłów, obserwacji i sugestii to ciągłe eksperymenty (tym bardziej, że zmieniają się wersje oprogramowania). Nie gwarantuję, że zauważycie kolosalną różnicę, choć ja po tych zmianach czuję, że system pracuje zauważalnie szybciej i płynniej. Musicie też pamiętać, że część z tych modyfikacji może wywołać nieprzewidywalne skutki i jeśli w wyniku eksperymentów zepsujecie system lub stracicie dane to nie mówcie, że nie uprzedzałem. Tego typu eksperymenty zawsze robi się na własne ryzyko, najlepiej z kopią zapasową pod ręką.

No i w końcu, bardzo interesuje mnie, czy może macie jakieś swoje pomysły na podniesienie wydajności systemu macOS. Jeśli tak, podzielcie się nimi w komentarzach! Ciągle szukam publikacji, dyskusji i komentarzy na ten temat i nie przestaję wpadać na nowe pomysły, więc temat z całą pewnością daleki jest od wyczerpania.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.