Android O เพิ่มการรองรับ storaged
ซึ่งเป็นดีมอนเนทีฟของ 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 per-uid (แทนที่จะใช้มาตรฐาน proc/PID/io
) ข้อมูล I/O ดิบสำหรับคำขอ I/O แต่ละรายการยังคงถูกจัดเก็บและอัปเดตในเคอร์เนล task_struct
และเคอร์เนลจะติดตามเมื่อกระบวนการออก ดังนั้นจึงไม่พลาดการใช้งาน I/O ที่เกิดขึ้นจากเหตุการณ์การสำรวจ storaged
ครั้งล่าสุด
โมดูลอ่านข้อมูลดิบและประมวลผลเฉพาะเมื่อเฟรมเวิร์กแจ้งเตือนถึงสวิตช์ส่วนหน้า/พื้นหลังของ uid หรือเมื่อ daemon 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 จากอุปกรณ์จัดเก็บข้อมูล
- ตัวอักษรการอ่าน/เขียน (มีหน่วยเป็นไบต์ด้วย) คือข้อมูลที่ร้องขอโดย 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