Android 8 پشتیبانی از storaged
را اضافه میکند، یک دیمون بومی اندروید که معیارهای ذخیرهسازی را در دستگاههای 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 (شامل دیسکهای متوقف شده) و اطلاعات eMMC در گزارش رویداد Android ثبت میشود، جایی که یک سرویس بررسی پلت فرم گزارشها را جمعآوری میکند.
عملیات storaged
به طور خودکار انجام می شود و به طور کامل توسط چارچوب Android مدیریت می شود، بنابراین شما نیازی به انجام هیچ کار اجرایی ندارید. این صفحه طراحی storaged
(از جمله رابط های جدید) و نحوه استفاده از آن برای دریافت وضعیت I/O از هسته را توضیح می دهد.
طراحی ذخیره شده
برای انعطافپذیری حسابداری و مجوز، storaged
بهعنوان یک ماژول هسته پیادهسازی میشود که اطلاعات ورودی/خروجی per-uid را برمیگرداند (بهجای استفاده از proc/PID/io
استاندارد). دادههای خام ورودی/خروجی برای هر درخواست ورودی/خروجی همچنان در kernel task_struct
ذخیره و بهروزرسانی میشوند، و هسته زمان خروج یک فرآیند را پیگیری میکند تا استفاده I/O را که از آخرین رویداد نظرسنجی storaged
رخ میدهد، از دست ندهد.
ماژول دادههای خام را میخواند و آنها را فقط زمانی پردازش میکند که فریم ورک آن را از یک سوئیچ uid پیشزمینه/پسزمینه مطلع میکند یا زمانی که دیمون storaged
درخواست گزارش میکند. در آن زمان، ماژول یک گره فایل را از هسته برای ارتباط با چارچوب و دیمون storaged
صادر می کند.
storaged
رابط /proc/uid_io/stats
را معرفی می کند که لیستی از آمارهای I/O را برای هر 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>
- بایت های خواندن/نوشتن رویدادهای ورودی/خروجی از یک دستگاه ذخیره سازی هستند.
- کاراکترهای خواندن/نوشتن (همچنین بر حسب بایت) دادههایی هستند که توسط سیستمهای خواندن/نوشتن درخواست میشوند.
وضعیت 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