Android O, Android cihazlarda depolama ölçümlerini toplayan ve yayınlayan bir Android yerel arka plan programı olan storaged
için destek ekler.
- Günlük disk istatistikleri için,
storaged
periyodik olarak/sys/block/mmcblk0/stat
(eMMC depolama aygıtları) veya/sys/block/sda/stat
(eMMC olmayan aygıtlar) ayrıştırılır. - EMMC ömrü için,
storaged
/d/mmc0/mmc0:001/ext_csd
(varsa) ayrıştırır. - Uygulama G/Ç suçlaması için,
storaged
düzenli aralıklarla/proc/uid_io/stats
üzerinden geçiş yapar ve tüm uygulamalardan (yalnızca çalışan uygulamalardan değil) gelen verileri içeren ayrıştırılmış verileri korur.dumpsys
, uygulamanın G/Ç kullanımını bir hata raporuna kaydetmek içinstoraged
çağırabilir.
Diskstat (durmuş disk istatistikleri dahil) ve eMMC bilgileri, bir platform check-in hizmetinin günlükleri topladığı Android olay günlüğüne kaydedilir.
storaged
işlemler otomatik olarak gerçekleşir ve tamamen Android çerçevesi tarafından gerçekleştirilir; dolayısıyla herhangi bir uygulama çalışması yapmanıza gerek yoktur. Bu sayfada storaged
tasarımı (yeni arayüzler dahil) ve bunun çekirdekten G/Ç durumunu almak için nasıl kullanılacağı açıklanmaktadır.
depolanmış tasarım
Hesaplama ve izin esnekliği için, storaged
kullanıcı kimliği başına G/Ç bilgilerini döndüren bir çekirdek modülü olarak uygulanır (standart proc/PID/io
kullanmak yerine). Her bir G/Ç isteği için ham G/Ç verileri, çekirdek task_struct
saklanmaya ve güncellenmeye devam eder ve çekirdek, bir işlemin ne zaman sonlandığını takip eder, böylece son storaged
yoklama olayından kaynaklanan G/Ç kullanımını kaçırmaz.
Modül ham verileri okur ve bunu yalnızca çerçeve kendisine bir kullanıcı kimliği ön plan/arka plan anahtarı bildirdiğinde veya storaged
arka plan programı bir rapor istediğinde işler. Bu sırada modül, çerçeve ve storaged
arka plan programıyla iletişim için çekirdekten bir dosya düğümü gönderir.
storaged
, sistemdeki her UID için G/Ç istatistiklerinin bir listesini döndüren /proc/uid_io/stats
arayüzünü tanıtır. Format ş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>
- okuma/yazma baytları, bir depolama aygıtından gelen G/Ç olaylarıdır.
- okuma/yazma karakterleri (aynı zamanda bayt cinsinden), okuma/yazma sistem çağrıları tarafından talep edilen verilerdir.
Çekirdekten G/Ç durumunu alma
Çekirdekten G/Ç kullanımını boşaltmak için, -u
seçeneğiyle birlikte storaged
komutunu kullanın.
Komut: storaged -u
Komut çıktı formatı: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
Not: Bu çıktı proc/uid_io/stats
çıktısına benzer. Bunun nedeni, storaged
/proc/uid_io/stats
dosyasındaki verileri işlemesi ve kendi verilerini oluşturmasıdır.
Örnek çıktı:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000