W Androidzie 8 dodano obsługę storaged
, natywnego demona Androida,
zbiera i publikuje dane o miejscu na dane na urządzeniach z Androidem.
- W przypadku dziennych statystyk dysków
storaged
jest okresowo analizowany/sys/block/mmcblk0/stat
(urządzenia pamięci eMMC) lub/sys/block/sda/stat
(urządzenia inne niż eMMC). - W przypadku czasu trwania eMMC funkcja
storaged
analizuje parametr/d/mmc0/mmc0:001/ext_csd
(jeśli dostępna). - W przypadku obwiniania operacji wejścia-wyjścia aplikacji
storaged
okresowo przegląda/proc/uid_io/stats
i utrzymuje przeanalizowane dane, w tym dane ze wszystkich aplikacji (nie tylko tych uruchomionych).dumpsys
puszka wywołajstoraged
, aby zapisać wykorzystanie wejścia-wyjścia aplikacji w raporcie o błędzie.
Dane Diskstat (w tym wstrzymane statystyki dysku) oraz informacje eMMC są rejestrowane w Dziennik zdarzeń Androida, w którym usługa kontroli platformy zbiera dzienniki.
Operacje storaged
są wykonywane automatycznie i w całości obsługiwane przez Androida
więc nie musisz nic robić wdrożeniowe. Ta strona
opisuje strukturę storaged
(w tym nowe interfejsy) i sposób jej użycia
uzyskać stan wejścia-wyjścia z jądra systemu operacyjnego.
projektowanie z pamięcią masową
Aby zapewnić elastyczność księgowości i uprawnień, interfejs storaged
został wdrożony jako jądro
zwracający informacje dla poszczególnych interfejsów wejścia-wyjścia (zamiast użycia standardowego
proc/PID/io
). Nieprzetworzone dane wejścia-wyjścia dla każdego żądania wejścia-wyjścia w dalszym ciągu
są przechowywane i aktualizowane w jądrze task_struct
, a jądro zachowuje
pozwala śledzić wyjścia procesu, aby nie przegapić wykorzystania wejścia-wyjścia
ostatnie storaged
zdarzenie ankiety.
Moduł odczytuje nieprzetworzone dane i przetwarza je tylko wtedy, gdy powiadamia je platforma
przełącznika UID na pierwszym planie lub w tle albo gdy demon storaged
zażądał
raport. Następnie moduł eksportuje z jądra węzła pliku
komunikację z platformą i demonem storaged
.
storaged
wprowadza interfejs /proc/uid_io/stats
, który zwraca
listę statystyk wejścia-wyjścia dla każdego identyfikatora UID w systemie. Format to:
<uid>: <foreground read bytes> <foreground write bytes> <foreground read chars> <foreground write chars> <background read bytes> <background write bytes> <background read chars> <background write chars>
- Bajty odczytu/zapisu to zdarzenia wejścia-wyjścia z urządzenia pamięci masowej.
- znaki odczytu/zapisu (również w bajtach) to dane żądane przez odczyt/zapis; funkcji syscall.
Pobieranie stanu wejścia-wyjścia z jądra
Aby skopiować wykorzystanie operacji wejścia-wyjścia z jądra systemu, użyj polecenia storaged
z
opcję -u
.
Polecenie: storaged -u
Format wyjściowy polecenia: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes
bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
Uwaga: te dane wyjściowe są podobne do danych wyjściowych polecenia
proc/uid_io/stats
Dzieje się tak, ponieważ storaged
przetwarza dane z:
/proc/uid_io/stats
i generuje własne dane.
Przykładowe dane wyjściowe:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000