ใช้พื้นที่เก็บข้อมูล

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