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