يتوافق Android 8 مع storaged
، وهو برنامج خفي أصلي لنظام التشغيل Android
جمع مقاييس التخزين ونشرها على أجهزة Android.
- بالنسبة إلى إحصاءات الأقراص اليومية، يحلّل
storaged
بشكل دوري./sys/block/mmcblk0/stat
(أجهزة تخزين eMMC) أو/sys/block/sda/stat
(الأجهزة التي لا تستخدم eMMC) - بالنسبة إلى فترة بقاء eMMC، يحلّل
storaged
القيمة/d/mmc0/mmc0:001/ext_csd
(إذا كان ذلك المتوفرة). - بالنسبة إلى إلقاء اللوم في مؤتمر I/O على التطبيق، يتجاوز
storaged
بشكل دوري/proc/uid_io/stats
مع الاحتفاظ بالبيانات التي تم تحليلها، والتي تشمل البيانات من جميع التطبيقات (وليس فقط التطبيقات قيد التشغيل). يمكن لـdumpsys
يمكنك الاتصال بـstoraged
لتسجيل استخدام مؤتمر I/O للتطبيق في تقرير خطأ.
يتم تسجيل معلومات Diskstat (بما في ذلك بيانات الأقراص المتوقفة) وeMMC على سجلّ أحداث Android، حيث تجمع خدمة تسجيل الوصول في النظام الأساسي السجلّات
تتم عمليات storaged
تلقائيًا وتتم معالجتها بالكامل بواسطة نظام Android.
إطار عمل، إذًا لن تحتاج إلى تنفيذ أي عمل لتنفيذه. هذه الصفحة
تصميم storaged
(بما في ذلك الواجهات الجديدة) وكيفية استخدامه من أجل
الحصول على حالة وحدات الإدخال والإخراج من النواة.
تصميم مخزَّن
لتوفير مرونة في المحاسبة والأذونات، تم تنفيذ storaged
كنواة.
التي تعرض معلومات الإدخال/الإخراج لكل uid (بدلاً من استخدام
proc/PID/io
). يستمر تغيير بيانات I/O الأولية لكل طلب I/O
وتخزينها وتحديثها في النواة task_struct
، وستحافظ النواة على
تتبع وقت الخروج من العملية حتى لا تفوت استخدام وحدات الإدخال والإخراج التي تحدث من
آخر حدث اقتراع (storaged
).
تقرأ الوحدة البيانات الأولية وتعالجها فقط عندما يُبلغها إطار العمل بذلك.
مفتاح تحكّم في المقدمة/الخلفية uid أو عندما يطلب البرنامج الخفي storaged
إبلاغ. وفي هذا الوقت، تصدر الوحدة عقدة ملف من النواة
التواصل باستخدام إطار العمل وبرنامج storaged
الخفي.
يقدّم storaged
الواجهة /proc/uid_io/stats
التي تعرض
قائمة بإحصائيات وحدات الإدخال والإخراج لكل UID في النظام. التنسيق هو:
<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>
- وحدات بايت القراءة/الكتابة هي أحداث إدخال/إخراج من جهاز تخزين.
- أحرف القراءة/الكتابة (بالبايت أيضًا) هي بيانات مطلوبة عن طريق القراءة/الكتابة وsyscalls.
الحصول على حالة وحدات الإدخال والإخراج من النواة
لتفريغ استخدام وحدات الإدخال والإخراج من النواة، استخدِم الأمر 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