فضای ذخیره‌سازی پیاده‌سازی شد

‫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