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 .
- CFQ
- Deadline
- VR
- Noop
- Anticipatory
- BFQ
- FIOPS
- SIO (Simple)
- Row
- ZEN
- Sioplus
- FIFO
- Tripndroid
- Test
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.