Android 8, Android cihazlarda depolama alanı metriklerini toplayıp yayınlayan Android'e özgü bir daemon olan storaged
için destek ekler.
- Günlük diskstats için
storaged
,/sys/block/mmcblk0/stat
(eMMC depolama cihazları) veya/sys/block/sda/stat
(eMMC olmayan cihazlar) dosyalarını düzenli olarak ayrıştırır. - eMMC kullanım ömrü için
storaged
,/d/mmc0/mmc0:001/ext_csd
değerini (varsa) ayrıştırır. - Uygulama I/O suçlaması için
storaged
,/proc/uid_io/stats
'ü düzenli olarak tarar ve ayrıştırılmış verileri (yalnızca çalışan uygulamalardan değil, tüm uygulamalardan gelen verileri) korur.dumpsys
, uygulama G/Ç kullanımını bir hata raporuna kaydetmek içinstoraged
'ı çağırabilir.
Diskstat (duraklamış disk istatistikleri dahil) ve eMMC bilgileri, platform check-in hizmetinin günlükleri topladığı Android etkinlik günlüğüne kaydedilir.
storaged
işlemleri otomatik olarak gerçekleşir ve tamamen Android çerçevesi tarafından yönetilir. Bu nedenle herhangi bir uygulama çalışması yapmanız gerekmez. Bu sayfada, storaged
'ün tasarımı (yeni arayüzler dahil) ve çekirdekten I/O durumunu almak için nasıl kullanılacağı açıklanmaktadır.
depolanan tasarım
Hesaplama ve izin esnekliği için storaged
, standart proc/PID/io
kullanmak yerine kullanıcı kimliği başına G/Ç bilgilerini döndüren bir çekirdek modülü olarak uygulanır. Her G/Ç isteği için ham G/Ç verileri, çekirdek task_struct
'de depolanmaya ve güncellenmeye devam eder. Çekirdek, son storaged
anket etkinliğinden itibaren gerçekleşen G/Ç kullanımını kaçırmamak için bir işlemin ne zaman sona erdiğini izler.
Modül, ham verileri okur ve yalnızca çerçeve bir uid ön plan/arka plan geçişi hakkında bilgi verdiğinde veya storaged
daemon bir rapor istediğinde işler. Bu sırada modül, çerçeve ve storaged
daemon ile iletişim kurmak için çekirdekten bir dosya düğümü dışa aktarır.
storaged
, sistemdeki her UID için G/Ç istatistiklerinin listesini döndüren /proc/uid_io/stats
arayüzünü kullanıma sunar. Biçim şu şekildedir:
<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>
- Okunan/yazılan baytlar, bir depolama cihazından gelen G/Ç etkinlikleridir.
- read/write chars (bayt cinsinden de olabilir), read/write sistem çağrıları tarafından istenen verilerdir.
Çekirdekten G/Ç durumunu alma
Çekirdekteki G/Ç kullanımını dökmek için storaged
komutunu -u
seçeneğiyle kullanın.
Komut: storaged -u
Komut çıkışı biçimi: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes
bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
Not: Bu çıkış, proc/uid_io/stats
içinki çıkışa benzer. Bunun nedeni, storaged
'ün /proc/uid_io/stats
'daki verileri işleyip kendi verilerini oluşturmasıdır.
Örnek çıkış:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000