Depolamayı uygulama

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çin storaged ç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