Android 8 menambahkan dukungan untuk storaged
, daemon native Android yang
mengumpulkan dan memublikasikan metrik
penyimpanan di perangkat Android.
- Untuk diskstats harian,
storaged
akan mengurai secara berkala/sys/block/mmcblk0/stat
(perangkat penyimpanan eMMC) atau/sys/block/sda/stat
(perangkat non-eMMC). - Untuk masa aktif eMMC,
storaged
akan mengurai/d/mmc0/mmc0:001/ext_csd
(jika yang tersedia). - Untuk menyalahkan I/O aplikasi,
storaged
akan melintas secara berkala/proc/uid_io/stats
dan mempertahankan data yang diuraikan, yang mencakup data dari semua aplikasi (bukan hanya aplikasi yang berjalan).dumpsys
dapat panggilstoraged
untuk mencatat penggunaan I/O aplikasi dalam laporan bug.
{i>Diskstat<i} (termasuk {i>diskstats<i} yang macet) dan informasi eMMC dicatat ke Log aktivitas Android, tempat layanan check in platform mengumpulkan log.
Operasi storaged
terjadi secara otomatis dan ditangani sepenuhnya oleh Android
sehingga 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 {i>kernel<i}.
desain yang disimpan
Untuk fleksibilitas akuntansi dan izin, storaged
diimplementasikan sebagai kernel
modul yang mengembalikan informasi I/O per UID (bukan menggunakan
proc/PID/io
). Data I/O mentah untuk setiap permintaan I/O terus
disimpan dan diperbarui di {i>
kernel<i} task_struct
, dan {i>kernel<i} menyimpan
melacak kapan proses keluar sehingga tidak
lupa penggunaan I/O yang terjadi dari
storaged
peristiwa pemungutan suara terakhir.
Modul ini membaca data mentah dan memprosesnya hanya jika framework memberitahukannya
tombol latar depan/latar belakang uid atau saat daemon storaged
meminta
laporan. Pada saat itu, modul mengekspor {i>
node<i} file dari {i>kernel<i} untuk
komunikasi dengan framework dan daemon storaged
.
storaged
memperkenalkan antarmuka /proc/uid_io/stats
, yang menampilkan
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 peristiwa I/O dari perangkat penyimpanan.
- karakter baca/tulis (juga dalam byte) adalah data yang diminta oleh baca/tulis {i>syscall<i}.
Mendapatkan status I/O dari kernel
Untuk membuang penggunaan I/O dari kernel, gunakan perintah storaged
dengan
opsi -u
.
Perintah: storaged -u
Format output 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
. Hal ini karena storaged
memproses data dari
/proc/uid_io/stats
, lalu menghasilkan datanya sendiri.
Contoh output:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000