Android 8 از storaged پشتیبانی میکند، این سرویسدهنده بومی Android
سنجههای فضای ذخیرهسازی را در دستگاههای Android جمعآوری و منتشر میکند.
- برای diskstats روزانه،
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تماس بگیرد تا استفاده از ورودی/خروجی برنامه را در گزارش اشکال ثبت کند.
اطلاعات Diskstat (ازجمله diskstatهای متوقفشده) و eMMC در گزارش رویداد Android ثبت میشود و سرویس ورود به سیستم پلاتفرم این گزارشها را جمعآوری میکند.
storaged عملیات بهطور خودکار انجام میشود و بهطور کامل توسط چارچوب Android مدیریت میشود، بنابراین نیازی نیست هیچ کار پیادهسازی انجام دهید. این صفحه
طراحی storaged (ازجمله میاناهای جدید) و نحوه استفاده از آن را برای
دریافت وضعیت ورودی/خروجی از هسته شرح میدهد.
طراحی ذخیرهشده
برای انعطافپذیری حسابداری و اجازه، storaged بهعنوان واحد هسته
پیادهسازی میشود که اطلاعات ورودی/خروجی را بهازای هر uid برمیگرداند (بهجای استفاده از
proc/PID/io استاندارد). دادههای ورودی/خروجی خام برای هر درخواست ورودی/خروجی همچنان در هسته 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>
- بایتهای خواندن/نوشتن رویدادهای ورودی/خروجی از دستگاه ذخیرهسازی هستند.
- کاراکترهای خواندن/نوشتن (همچنین در بایت) دادههایی هستند که توسط فراخوانهای سیستمی خواندن/نوشتن درخواست شدهاند.
دریافت وضعیت ورودی/خروجی از هسته
برای تخلیه کردن مصرف ورودی/خروجی از هسته، از فرمان 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