Android O menambahkan dukungan untuk storaged
, daemon asli Android yang mengumpulkan dan memublikasikan metrik penyimpanan di perangkat Android.
- Untuk statistik disk harian,
storaged
secara berkala mem-parsing/sys/block/mmcblk0/stat
(perangkat penyimpanan eMMC) atau/sys/block/sda/stat
(perangkat non-eMMC). - Untuk masa pakai eMMC,
storaged
mem-parsing/d/mmc0/mmc0:001/ext_csd
(jika tersedia). - Untuk kesalahan I/O aplikasi, penyimpanan secara berkala melintasi /proc/
storaged
/proc/uid_io/stats
dan memelihara data yang diuraikan, yang mencakup data dari semua aplikasi (bukan hanya aplikasi yang sedang berjalan).dumpsys
dapat memanggilstoraged
untuk mencatat penggunaan I/O aplikasi dalam laporan bug.
Diskstat (termasuk statistik disk yang terhenti) dan informasi eMMC dicatat ke log peristiwa Android, tempat layanan check-in platform mengumpulkan log.
operasi yang storaged
terjadi secara otomatis dan ditangani sepenuhnya oleh kerangka kerja Android, jadi Anda tidak perlu melakukan pekerjaan implementasi apa pun. Halaman ini menjelaskan desain storaged
(termasuk antarmuka baru) dan cara menggunakannya untuk mendapatkan status I/O dari kernel.
desain penyimpanan
Untuk akuntansi dan fleksibilitas izin, storaged
diimplementasikan sebagai modul kernel yang mengembalikan informasi I/O per-uid (bukan menggunakan standar proc/PID/io
). Data I/O mentah untuk setiap permintaan I/O terus disimpan dan diperbarui di kernel task_struct
, dan kernel melacak kapan suatu proses keluar sehingga tidak melewatkan penggunaan I/O yang terjadi dari acara polling terakhir yang storaged
.
Modul membaca data mentah dan memprosesnya hanya ketika kerangka kerja memberi tahunya tentang sakelar latar depan/latar belakang uid atau ketika daemon yang storaged
meminta laporan. Pada saat itu, modul mengekspor node file dari kernel untuk komunikasi dengan kerangka kerja dan daemon yang storaged
.
storaged
memperkenalkan antarmuka /proc/uid_io/stats
, yang mengembalikan daftar statistik I/O untuk setiap UID dalam sistem. Formatnya adalah:
<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>
- byte baca/tulis adalah kejadian I/O dari perangkat penyimpanan.
- karakter baca/tulis (juga dalam byte) adalah data yang diminta oleh panggilan sistem baca/tulis.
Mendapatkan status I/O dari kernel
Untuk membuang penggunaan I/O dari kernel, gunakan perintah storaged
dengan opsi -u
.
Perintah: storaged -u
Format keluaran perintah: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
Catatan: Output ini mirip dengan output untuk proc/uid_io/stats
. Ini karena storaged
memproses data dari /proc/uid_io/stats
dan menghasilkan datanya sendiri.
Contoh keluaran:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000