يضيف نظام التشغيل Android 8 storaged
، وهو برنامج تابع لنظام التشغيل Android
يجمع مقاييس مساحة التخزين وينشرها على أجهزة Android.
- بالنسبة إلى إحصاءات القرص اليومية، يُحلِّل
storaged
بشكل دوري/sys/block/mmcblk0/stat
(أجهزة التخزين eMMC) أو/sys/block/sda/stat
(الأجهزة غير المزوّدة بتقنية eMMC). - بالنسبة إلى مدة استخدام eMMC، يُحلِّل
storaged
/d/mmc0/mmc0:001/ext_csd
(إذا كان متاحًا). - لتحديد التطبيقات التي تتسبب في عمليات الإدخال/الإخراج، ينتقل
storaged
بشكل دوري في/proc/uid_io/stats
ويحتفظ بالبيانات التي تم تحليلها، والتي تشمل بيانات من جميع التطبيقات (وليس فقط التطبيقات التي تعمل). يمكن لـdumpsys
استدعاءstoraged
لتسجيل استخدام I/O للتطبيق في تقرير الخطأ.
يتم تسجيل معلومات Diskstat (بما في ذلك diskstats المتوقّفة) وeMMC في سجلّ أحداث Android، حيث تجمع خدمة التحقّق من النظام الأساسي السجلات.
تحدث عمليات storaged
تلقائيًا ويعالجها إطار عمل Android
بالكامل، لذا لا تحتاج إلى تنفيذ أي عمل. تصف هذه الصفحة
تصميم storaged
(بما في ذلك الواجهات الجديدة) وكيفية استخدامه لمحاولة
الحصول على حالة I/O من النواة.
التصميم المخزَّن
من أجل مرونة احتساب العمليات والأذونات، يتم تنفيذ storaged
كوحدة برمجية
للنواة تُعرِض معلومات الإدخال/الإخراج لكل معرّف مستخدم (بدلاً من استخدام proc/PID/io
العادي). ويستمر تخزين بيانات الإدخال/الإخراج الأوّلية لكل طلب إدخال/إخراج وتعديلها في نواة task_struct
، وتتتبّع النواة
وقت خروج إحدى العمليات حتى لا تفوت استخدام الإدخال/الإخراج الذي يحدث من
حدث الاستطلاعstoraged
الأخير.
لا تقرأ الوحدة البيانات الأولية وتعالجها إلا عندما يُعلمها إطار العمل
بتغيير uid إلى المقدّمة أو الخلفية أو عندما يطلب الخادم العميقstoraged
تقريرًا. في ذلك الوقت، تُصدِّر الوحدة عقدة ملف من kernel للتواصل مع إطار العمل وبرنامج storaged
الخفي.
storaged
تعرِض واجهة /proc/uid_io/stats
التي تعرض
قائمة بإحصاءات الإدخال/الإخراج لكل معرّف مستخدم فريد في النظام. التنسيق هو:
<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>
- وحدات البايت المقروءة أو المكتوبة هي أحداث إدخال/إخراج من جهاز تخزين.
- أحرف القراءة/الكتابة (بالبايت أيضًا) هي بيانات تطلبها طلبات قراءة/كتابة النظام.
الحصول على حالة I/O من النواة
لتفريغ استخدام I/O من النواة، استخدِم الأمر storaged
مع
الخيار -u
.
الأمر: storaged -u
تنسيق إخراج الأمر: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes
bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
ملاحظة: تشبه هذه النتيجة النتيجة التي تظهر عند استخدام الرمز
proc/uid_io/stats
. ويعود السبب في ذلك إلى أنّ storaged
تعالج البيانات من
/proc/uid_io/stats
وتُنشئ بياناتها الخاصة.
مثال على الإخراج:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000