Google 致力于为黑人社区推动种族平等。查看具体举措
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Implementazione di storage

Android O aggiunge il supporto per storaged , un demone nativo Android che raccoglie e pubblica le metriche di archiviazione sui dispositivi Android.

  • Per i diskstat giornalieri, storaged periodicamente analizza /sys/block/mmcblk0/stat (dispositivi di archiviazione eMMC) o /sys/block/sda/stat (dispositivi non eMMC).
  • Per la durata di eMMC, storaged analizza /d/mmc0/mmc0:001/ext_csd (se disponibile).
  • Per incolpare l'I / O delle applicazioni, storaged periodicamente attraversa /proc/uid_io/stats e mantiene i dati analizzati, che includono i dati di tutte le applicazioni (non solo le applicazioni in esecuzione). dumpsys può chiamare storaged per registrare l'utilizzo dell'I / O dell'applicazione in una segnalazione di bug.

Diskstat (inclusi diskstats bloccati) e le informazioni eMMC vengono registrate nel registro eventi di Android, dove un servizio di check-in della piattaforma raccoglie i log.

storaged operazioni storaged avvengono automaticamente e vengono gestite interamente dal framework Android, quindi non è necessario eseguire alcun lavoro di implementazione. Questa pagina descrive il design storaged (comprese le nuove interfacce) e come usarla per ottenere lo stato di I / O dal kernel.

design immagazzinato

Per la flessibilità storaged e dei permessi, storaged è implementato come un modulo del kernel che restituisce informazioni I / O per-uid (invece di usare lo standard proc/PID/io ). I dati grezzi di I / O per ciascuna richiesta di I / O continuano a essere archiviati e aggiornati in task_struct del kernel e il kernel tiene traccia di quando un processo termina in modo da non perdere l'utilizzo di I / O che si verifica dall'ultimo evento di polling storaged .

Il modulo legge i dati grezzi e li elabora solo quando il framework lo notifica di un cambio di primo piano / sfondo di uid o quando il demone storaged richiede un report. A quel punto, il modulo esporta un nodo file dal kernel per la comunicazione con il framework e il demone storaged .

storaged introduce l'interfaccia /proc/uid_io/stats , che restituisce un elenco di statistiche I / O per ogni UID nel sistema. Il formato è:

<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>
  • i byte di lettura / scrittura sono eventi di I / O da un dispositivo di archiviazione.
  • i caratteri di lettura / scrittura (anche in byte) sono dati richiesti dalle chiamate di sistema di lettura / scrittura.

Ottenere lo stato di I / O dal kernel

Per storaged il dump dell'utilizzo di I / O dal kernel, utilizzare il comando storaged con l'opzione -u .

Comando: storaged -u

Formato di output del comando: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync

Nota: questo output è simile all'output di proc/uid_io/stats . Questo perché storaged elabora i dati da /proc/uid_io/stats e genera i propri dati.

Output di esempio:

com.google.android.backuptransport  2269  60  0  0  1719845663  143912573  149065728  184180736
com.android.vending  2170  60  0  0  219904796  38693092  174436352  18944000