Android 8 เพิ่มการรองรับ storaged
ซึ่งเป็น Daemon ที่มาพร้อมเครื่อง Android ที่
รวบรวมและเผยแพร่เมตริกพื้นที่เก็บข้อมูลในอุปกรณ์ Android
- สำหรับ Diskstats รายวัน
storaged
จะแยกวิเคราะห์เป็นระยะ/sys/block/mmcblk0/stat
(อุปกรณ์จัดเก็บข้อมูล eMMC) หรือ/sys/block/sda/stat
(อุปกรณ์ที่ไม่ใช่ eMMC) - สำหรับอายุการใช้งานของ eMMC,
storaged
จะแยกวิเคราะห์/d/mmc0/mmc0:001/ext_csd
(หาก ว่าง) - สำหรับการลงโทษแอป I/O
storaged
จะข้ามผ่านเป็นระยะๆ/proc/uid_io/stats
และดูแลรักษาข้อมูลที่แยกวิเคราะห์แล้ว ซึ่งรวมถึงข้อมูล จากทุกแอป (ไม่ใช่แค่แอปที่กำลังทำงานอยู่)dumpsys
สามารถ เรียกใช้storaged
เพื่อบันทึกการใช้งานแอป I/O ในรายงานข้อบกพร่อง
ระบบจะบันทึกข้อมูล Diskstat (รวมถึง Diskstats ที่หยุดการทำงาน) และ eMMC ไปยัง บันทึกเหตุการณ์ของ Android ซึ่งบริการเช็คอินของแพลตฟอร์มเก็บรวบรวมบันทึก
การดำเนินการ storaged
รายการจะเกิดขึ้นโดยอัตโนมัติและจัดการโดย Android ทั้งหมด
ดังนั้นคุณจึงไม่ต้องดำเนินการใดๆ เพิ่มเติม หน้านี้
อธิบายการออกแบบของ storaged
(รวมถึงอินเทอร์เฟซใหม่) และวิธีการใช้งาน
ดูสถานะ I/O จากเคอร์เนล
รูปแบบพื้นที่เก็บข้อมูล
ใช้ storaged
เป็นเคอร์เนลเพื่อความยืดหยุ่นในการทำบัญชีและการให้สิทธิ์
โมดูลที่ส่งคืนข้อมูล I/O ต่อ uid (แทนที่จะใช้มาตรฐาน
proc/PID/io
) ข้อมูลดิบ I/O สำหรับคำขอ I/O แต่ละรายการจะยังคงเป็น
จัดเก็บและอัปเดตในเคอร์เนล task_struct
และเคอร์เนลจะเก็บ
ติดตามเมื่อออกจากกระบวนการเพื่อไม่ให้พลาดการใช้งาน I/O ที่เกิดจาก
กิจกรรมการสำรวจความคิดเห็น storaged
ครั้งล่าสุด
โมดูลจะอ่านข้อมูลดิบและประมวลผลเมื่อเฟรมเวิร์กแจ้งเตือนเท่านั้น
ของสวิตช์เบื้องหน้า/พื้นหลัง uid หรือเมื่อดีมอน storaged
ขอ
รายงาน ในขณะนั้น โมดูลจะส่งออกโหนดไฟล์จากเคอร์เนลสำหรับ
การสื่อสารกับเฟรมเวิร์กและ Daemon 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 จากอุปกรณ์จัดเก็บข้อมูล
- อักขระอ่าน/เขียน (หน่วยเป็นไบต์ด้วย) เป็นข้อมูลที่ขอโดยการอ่าน/เขียน Syscalls
รับสถานะ 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