Wdróż pamięć podręczną

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łaj storaged, 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