niedziela, 14 lutego 2016

I/O Schedulers #Poradnik

Pierwsze ogniwo do poprawnego działania systemu I/O Schedulers . Kolejny MEGA poradnik na temat podkręcania Androida . Dostosuj system do swoich potrzeb wydajnościowych .




Wszystko o I/O Schedulers ! 
Więc tak I/O oznacza wejścia i wyjścia [Input/output] Natomiast samo Scheduler oznacza  planowanie/zarządzanie danymi wchodzącymi i wychodzącymi . I/O jest znana z planowania zadań w systemach operacyjnych i nie tyczy to się tylko androida ale i windows, linux i innych systemów operacyjnych . Chodzi głównie o wpuszczanie danych do urządzenia, i  czy dane mają być zapisane w pamięci RAM czy ROM.  I/O Schedulers ma za zadanie zminimalizować czas szukania danych w pamięci ROM . Na dać akcję szerokości pasma dysku każdemu biegnącemu procesowi. Nadawać odpowiedni priorytet procesom.  I/O Schedulers pomoże nam zaoszczędzić baterie i przyśpieszyć działanie systemu . Oczywiście ze aby poprawnie dostosować  I/O Schedulers trzeba dokładniej poznać działanie tego sterownika,  czego na pewno nie nauczycie się w jeden dzień . Jednak zawsze warto znaleźć ten nasz kompromis  pomiędzy wydajnością a oszczędnością baterii .

Jak zmienić  I/O Schedulers ? 

Zmiana tego ustawienia oczywiście wiąże się z dostępem do plików systemowych czyli ROOT jest nie zbędny . 

 I/O Schedulers możemy zmienić za pomocą  aplikacji takich jak :
-Kernel Adiutor ( zmiana i dostrojenie I/O Scheduler)
-Trickster MOD

-No-frills CPU Control
To są darmowe aplikacje gdzie zmienimy I/O za darmo .
Zmiany tego ustawienia możemy dokonać również w Ustawieniach systemu dotyczy to tylko niestandardowych Romów . 

Istnieją również dedykowane aplikacje od twórców Kernel'i  np.Stweaks, Synapse itp oczywiście musimy posiadać odpowiedni kernel do poprawnego działania tych aplikacji . 


Dostępne  I/O Schedulers  . 
  1. CFQ
  2. Deadline
  3. VR
  4. Noop
  5. Anticipatory
  6. BFQ
  7. FIOPS
  8. SIO (Simple)
  9. Row
  10. ZEN
  11. Sioplus
  12. FIFO
  13. Tripndroid
  14. Test
Na co zwrócić uwagę przy wyborze I/O Schedulers ?

Istnieje więcej wyborów jeśli chodzi o I/O ale to sa najważniejsi ale warto też wiedzieć czym się kierować przy wyborze I/O Schedulers .

Prędkość-Im większa prędkość tym lepiej jednak odbije nam się to na żywotności baterii .
Żywotność baterii- Im bardziej pójdziemy w oszczędzanie energii tym bardziej stracimy na płynności działania systemu .
Stabilność- Oczywiście że im stabilniejszy system tym lepiej i dobrze tez wybrać odpowiedzialnego I/O Schedulers .
Wielozadaniowość - Warto pomyśleć czy wykonujemy wiele zadań na raz i wybrać odpowiedni I/O odziałowuje to na stabilność systemu .
Płynność działania - Wiele osób myśli że płynność a szybkość to to samo ale to nie prawda szybkość jest odpowiedzialna za szybkie otwarcie pliku a płynność za płynne przewijanie stron w górę i w duł .

Opisy I/O

Anticipatory
  Planuje algorytm dla wejścia i wyjścia . Stara się być jak najbardziej efektywny przy "przewidywaniu" synchronizacji operacji odczytu . Jest to bardzo rzadko spotykany zarządca i spotykany w starych modelach androia .

Zalety:
-Żąda dostępu odczytu danych ,nigdy nie wykonuje zadać poza kolejnością , dobre odczyty danych z dysków flash jak i twardych dysków

Wady:
-Wnioski z procesu operacji nie są zawsze dostępne
-Wydajność obniżone zapisu na wysokiej wydajności dysków twardych
-Nie jest dostępny na większości kernelach .

CFQ 
Dosyć popularny I/O ze względu na pilnowanie kolejki harmonogramu i synchronizacji kolejki .  Utrzymuje kolejkę I/O skaluje proces  i próbuje dystrybuować dostępnych przepustowości I/O równo między wszystkich żądań I/O.

Zalety:
-Jest dobrze wyważony jeśli chodzi o wydajność I/O
-Doskonale sobie radzi z wieloma procesami na raz .
-Uznany za stabilny harmonogram I/O.
-Wielozadaniowość .

Wady:
-Jest dość duża grupa ludzi którzy zgłaszają za długie skanowanie .Może wynikać to z dobrego rozłożenia priorytetów na wszystkie operacje I/O.
-Pod stałym obciążeniem może wystąpić destabilizacja . Gdyż I/O próbuje jak najlepiej utworzyć harmonogram wykonywanych zadań .


Deadline
Ten harmonogram tak sortuje operacje by zawsze być gotowym odpalić operacje na żądanie . Nie blokując przy tym ani wejścia ani wyjścia innego procesu . Harmonogram dobrze spisuje się na aplikacjach objętych wyższym priorytetem zapisu danych jednak jest przez to nie stabilny  .

Zalety:
-Dobrze spisuje się przy współpracy z pamięcią wewnętrzną jak i zewnętrzną .
-Bardzo dobry jak nie najlepszy harmonogram do testów .
-Dobrze szereguje procesy w czasie rzeczywistym .
-Przeciąga redukcje jakiegokolwiek danego wejścia i wyjścia .

Wady :
-Nie jest polecany do użytku codziennego przez niestabilność .
- Procesy mogą być spowolnione lub zabijane


Row
Row jest jednym z podstawowych harmonogramów . Nakłada on duży nacisk na komendy użytkownika przez co jest dosyć dobrze nastawiony w naszą stronę . Dobrze redaguje w pamięci . Jedak nie operuje z byt dużą ilością danych jednocześnie .

Zalety:
-Dobra optymalizacja interfejsu android i płynność działania .
-Krótki czas uruchamiania aplikacji

Wady:
-Potrafi zawodzić w procesach wielowątkowych .
-Tym samym nie osiąga on dobrych wyników w testach .


SIO (Simple/Proste)
Jak sama nazwa wskazuje to bardzo prosty harmonogram który ma za zadanie zachować minimalne obciążenie dla  osiągnięcia niskiej latencji do obsługi żądań I/O. Harmonogram jest po miedzy  noop a deadline .

Zalety:
-Prosty i stabilny .
-Zawsze gotowy na komendy w czasie rzeczywistym .
-Dobrze optymalizuje żywotność baterii

Wady:
-W przeciwieństwie do innych zarządców wolno zapisuje dane w pamięci .
-Sekwencyjny odczyt danych nie jest tak dobry jak u innych harmonogramów I/O .


NOOP
Bardzo prosty harmonogram, wstawia wszystkie żądania do kolejki . Działa na zasadzie "Jedno wejście jedno wyjście"Nie porządkuje zapisanych danych w przeciwieństwie do innych I/O .

Zalety:
-Bardzo małe zużycie CPU .
-Bardzo dobry jeśli korzystamy tylko z pamięci wewnętrznej, bo nie ma żadnych błędów wyszukiwania .
-Energooszczędny .
-Dobre wyniki w testach .
-Dosyć stabilny .

Wady:
-Zwiększenie cykli oznacza spadek wydajności .
- Jest dość agresywny .
-Nie należy  do faworytów wielozadaniowości (szczególnie dotyczy to ciężkich procesów .)

VR
W odróżnieniu  od innych I/O  jest bardzo dokładny i poukładany . Wszystkie żądania synchroniczne i asynchroniczne wpisuje do kolejki nie ważne jak daleko są one poukładane .

Zalety:
-Bardzo dobry w planowaniu i porządkowaniu .

Wady:
-Bardzo nie stabilny .
-Trzeba chodzić z power bankiem .


BFQ
Ten I/O gwarantuje że pamięć będzie zawsze gotowa do aktywnego procesu aż do jego wygaśnięcia .
Potrafi zmienić priorytet procesu w czasie rzeczywistym nawet gdy jego funkcja jest nadal aktywna .

Zalety
-Bardzo szybka transmisja danych USB .
-Najlepszy harmonogram do odtwarzania nagrań wideo HD i streaming video (ze względu na mniejsze wahanie niż CFQ Scheduler i inne)
-Uznaje się ze jest bardzo dobry w obrabianiu żądania.
-Zapewnia przepustowość 30% więcej niż CFQ
-Jest stale aktualizowany
-Dobry do pracy wielozadaniowej, dużo czulszy niż CFQ .


ZEN
Ten I/O został oparty na harmonogramie VR  czyli nie układa żądań do kolejki tylko ładuje jak leci . Jednak nie do końca gdyż traktuje operacje synchroniczne nad asynchronicznymi . Jest troche mieszanką VR i FIFO.

Zalety:
-Dość wydajny I/O.
-Dosyć stabilny o wiele bardziej niż VR .

Wady
-Na większości Kerneli jest niedostępny .
-Jest dosyć agresywny przez co urządzenie nie działa płynnie .
-Ciężkie zadania zbytnio spowalniają urządzenie.



FIFO (First in First Out):
Praktycznie opis zawiera w nazwie czyli "Pierwszy wychodzi pierwszy". Jest bardzo prostym I/O przez co realizuje bardzo proste metody wprowadzania .

Zalety:
-Serwuje żądania I/O z najmniejszą liczbą cykli procesora.
-Jest odpowiedni dla pamięć wewnętrzną, bo nie ma żadnych błędów wyszukiwania.
-Dobre dane wydajności w systemach db.

Wady:
-Zwiększenie liczby procesów oznacza spadek wydajności .
-Nie jest dobry do wielozadaniowych akcji .



Tripndroid
Nowy gracz na arenie I/O. Działa na wspólnych zasadach z Noop ,  deadline , VR . Chciał mieć jak najmniejsze obciążenie procesora .

Zalety:
-Dobrze sobie radzi w wielozadaniowości , wydajny i do użytku codziennego .
-Dobrze zaokrąglone i skuteczny harmonogram szeregujący I/O
-Bardzo czuły I/O  (w porównaniu do FIOPS)

Wady:
-Dosyć rzadko spotykany .
-Nie na każdych urządzeniach są takie same wyniki .


Benefits:
I/O raczej nie dostępny w Kernelach jest wykorzystywany przez Developerów Kerneli .

Zalety:
-Takie same jak NOOP

Wady:
-Takie same jak NOOP


Rekomendowani I/O

Do codziennego urzytku:
  •  SIO (My personal favourite)
  •  ZEN (Second choice)
  •  Tripndroid (Third choice)
  •  ROW (Forth choice)
  •  NOOP
  •  CFQ
  •  Deadline


Energoszczędni:
  •  NOOP (First choice)
  •  FIOPS (Second choice)
  •  SIO (Third choice)
  •  ROW (Forth choice)
  •  FIFO

Do Grania:
  •  ZEN (First choice)
  •  Tripndroid (Second choice)
  •  ROW (Third choice)
  •  SIO
  •  Deadline
  •  CFQ


Dobra wydajnosc (Benchmark):
  •  FIOPS (First choice) 
  •  Deadline (Second choice)
  •  Tripndroid (Third Choice)
  •  NOOP
  •  SIO



Dobrze radzą sobie z ciężkimi procesami:
  •  BFQ (First choice)
  •  CFQ (Second choice)
  •  Deadline (Third choice)


Porównania I/O




Na zakończenie tego poradnika powiem że naprawdę ciężko jest tak dokładnie pisać o I/O naprawdę korzystałem z wielu źródeł informacji, i własnych doświadczeń jednak naprawdę warto wybrać właściwy Harmonogram I/O . Dobrze dopasowane komponenty wydajności mogą wyciągnąć z urządzenia ostatnie poty , jak i zaoszczędzić baterie na bardzo wydajnych urządzeniach .

Kilka informacji zaczerpnąłem z blogu androidmodguide.blogspot.com

0 komentarze :

Prześlij komentarz

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.