از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
پیاده سازی ذخیره شده
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
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
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Implement storaged\n\nAndroid 8 adds support for `storaged`, an Android native daemon that\ncollects and publishes storage metrics on Android devices.\n\n- For daily diskstats, `storaged` periodically parses `/sys/block/mmcblk0/stat` (eMMC storage devices) or `/sys/block/sda/stat` (non-eMMC devices).\n- For eMMC lifetime, `storaged` parses `/d/mmc0/mmc0:001/ext_csd` (if available).\n- For app I/O blaming, `storaged` periodically traverses `/proc/uid_io/stats` and maintains parsed data, which includes data from all apps (not just running apps). `dumpsys` can call `storaged` to log the app I/O usage in a bug report.\n\nDiskstat (including stalled diskstats) and eMMC information is logged to the\nAndroid event log, where a platform checkin service collects the logs.\n\n`storaged` operations occur automatically and are handled entirely by the Android\nframework, so you don't need to do any implementation work. This page\ndescribes the design of `storaged` (including new interfaces) and how to use it to\nget I/O status from the kernel.\n\nstoraged design\n---------------\n\nFor accounting and permission flexibility, `storaged` is implemented as a kernel\nmodule that returns per-uid I/O information (instead of using standard\n`proc/PID/io`). Raw I/O data for each I/O request continues to be\nstored and updated in kernel `task_struct`, and the kernel keeps\ntrack of when a process exits so it doesn't miss I/O usage that occurs from the\nlast `storaged` polling event.\n\nThe module reads raw data and processes it only when the framework notifies it\nof a uid foreground/background switch or when the `storaged` daemon requests a\nreport. At that time, the module exports a file node from kernel for\ncommunication with framework and `storaged` daemon.\n\n`storaged` introduces the `/proc/uid_io/stats` interface, which returns\na list of I/O stats for each UID in the system. The format is: \n\n```\n\u003cuid\u003e: \u003cforeground read bytes\u003e \u003cforeground write bytes\u003e \u003cforeground read chars\u003e \u003cforeground write chars\u003e \u003cbackground read bytes\u003e \u003cbackground write bytes\u003e \u003cbackground read chars\u003e \u003cbackground write chars\u003e\n```\n\n- read/write bytes are I/O events from a storage device.\n- read/write chars (also in bytes) are data requested by read/write syscalls.\n\nGet I/O status from the kernel\n------------------------------\n\nTo dump I/O usage from the kernel, use the `storaged` command with\nthe **`-u`** option.\n\nCommand: `storaged -u`\n\nCommand output format: `name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes\nbg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync`\n\n**Note:** This output is similar to the output for\n`proc/uid_io/stats`. This is because `storaged` processes data from\n`/proc/uid_io/stats` and generates its own data.\n\nExample output: \n\n```\ncom.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736\ncom.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000\n```"]]