יישום אחסון

Android O מוסיפה תמיכה ב- storaged , דמון מקורי של אנדרואיד שאוסף ומפרסם מדדי אחסון במכשירי אנדרואיד.

  • עבור דיסקסטטים יומיים, 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 של האפליקציה בדוח באג.

מידע דיסקסטט (כולל דיסקסטטים שנתקעו) ו-eMMC מתועד ביומן האירועים של Android, שם שירות צ'ק-אין של פלטפורמה אוסף את היומנים.

פעולות storaged מתרחשות באופן אוטומטי ומטופלות במלואן על ידי מסגרת אנדרואיד, כך שאינך צריך לבצע שום עבודת יישום. דף זה מתאר את עיצוב storaged (כולל ממשקים חדשים) וכיצד להשתמש בו כדי לקבל סטטוס קלט/פלט מהקרנל.

עיצוב אחסון

עבור גמישות חשבונאית והרשאות, storaged מיושם כמודול ליבה המחזיר מידע I/O לכל משתמש (במקום להשתמש proc/PID/io סטנדרטיים). נתוני קלט/פלט גולמיים עבור כל בקשת קלט/פלט ממשיכים להיות מאוחסנים ומתעדכנים ב-kernel task_struct , והקרנל עוקב אחר מתי תהליך יוצא כדי שלא יחמיץ שימוש ב-I/O שמתרחש מאירוע הסקר האחרון 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>
  • קריאה/כתיבה בתים הם אירועי קלט/פלט מהתקן אחסון.
  • תווי קריאה/כתיבה (גם בבתים) הם נתונים שמתבקשים על ידי מערכות קריאה/כתיבה.

קבלת סטטוס קלט/פלט מהקרנל

כדי להוריד שימוש ב-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