Zatem jak to zostało przyrzeczone APM w wersji 3.6 został zaaplikowany do nowej wersji NeteXt'73 0.7.90. Tutaj skupiłem się - jak zawsze zresztą na podniesieniu wydajności i responsywności w czasie pracy "z prądem = AC oraz obniżeniu temperatur, zużycia energii na baterii. Konkretnie dokonuje:
1. Zmieniam ilości zdarzeń wykonywanych na danym rdzeniu procesora, które mogą być przypisane do elementów roboczych danego wq Workqueue [Concurrency Managed Workqueue - cmwq]. Na przykład aby zapewnić maksymalne wykorzystanie zasobów na AC daje możliwości obciążenia każdego rdzenia aż 512 takimi zdarzeniami na 1 wq [standardowo są to 256 takie zdarzenia]. Podczas, gdy w czasie pracy na baterii znacznie ograniczam tu zasoby i daje możliwość jednoczesnego obciążenia jedynie 16 takimi zdarzeniami.
2. Dokonuje zmian w ustawieniach swappiness - tu w przypadku pracy na baterii zmieniłem wartość z 10 na 1. Skutkuje to dokonywaniem "zrzutu" stron pamieć - zarówno pamięci podręcznej [cache pages], jak i też tzw. anonymous pages znacznie rzadziej. Ustawienie tego parametru na 1 skutkuje zapisem do pliku wymiany jedynie w sytuacji gdyby jej przepełnienie groziło kernel panic. Oczywiście na AC pozostawiam wartość 60 ... dlaczego ? Ano dlatego, że obniżenie w/w wartości ... obniża realną wydajność, jednak pozwala na znacznie rzadsze odwołanie do dysków, a zatem znacznie dłuższe utrzymywanie ich w stanie uśpienia. Zatem im niższa taka wartość w przypadku pracy na baterii, tym bardziej odczuwalną poprawę w zużyciu energii można odnotować - przy założeniu dokonywania innych zmian w vm. Nie ma tu jednak "róży bez kolców" - taka wartość skutkuje obniżeniem wydajności wszelkich operacji I/O = nie ma gdzie "kejczować" nowych procesów. Jednak w przypadku pracy na baterii jest to do "wybaczenia". Tu priorytetem jest zapewnienie złotego środka wydajność <> responsywność <> energooszczędność ... ze wskazaniem na to ostatnie.
Zapraszam do testów nowego APM ;)
Pozdrawiam