Android O bổ sung hỗ trợ cho storaged
, một daemon gốc của Android thu thập và xuất bản số liệu lưu trữ trên thiết bị Android.
- Đối với số liệu thống kê đĩa hàng ngày,
storaged
phân tích cú pháp định kỳ/sys/block/mmcblk0/stat
(thiết bị lưu trữ eMMC) hoặc/sys/block/sda/stat
(thiết bị không phải eMMC). - Đối với thời gian tồn tại của eMMC, các phân tích cú pháp
storaged
/d/mmc0/mmc0:001/ext_csd
(nếu có). - Để đổ lỗi cho ứng dụng I/O,
storaged
định kỳ duyệt qua/proc/uid_io/stats
và duy trì dữ liệu được phân tích cú pháp, bao gồm dữ liệu từ tất cả các ứng dụng (không chỉ các ứng dụng đang chạy).dumpsys
có thể gọistoraged
để ghi lại việc sử dụng I/O của ứng dụng trong báo cáo lỗi.
Thông tin Diskstat (bao gồm cả diskstat bị đình trệ) và thông tin eMMC được ghi vào nhật ký sự kiện Android, nơi dịch vụ đăng ký nền tảng sẽ thu thập nhật ký.
Các hoạt động storaged
diễn ra tự động và được xử lý hoàn toàn bằng khung Android, do đó bạn không cần thực hiện bất kỳ công việc triển khai nào. Trang này mô tả thiết kế của storaged
(bao gồm các giao diện mới) và cách sử dụng nó để lấy trạng thái I/O từ kernel.
thiết kế lưu trữ
Để tính linh hoạt về tính toán và quyền, storaged
được triển khai dưới dạng mô-đun hạt nhân trả về thông tin I/O cho mỗi uid (thay vì sử dụng tiêu chuẩn proc/PID/io
). Dữ liệu I/O thô cho mỗi yêu cầu I/O tiếp tục được lưu trữ và cập nhật trong kernel task_struct
và kernel theo dõi thời điểm một quá trình thoát ra để nó không bỏ lỡ việc sử dụng I/O xảy ra từ sự kiện bỏ phiếu storaged
cuối cùng.
Mô-đun này đọc dữ liệu thô và chỉ xử lý nó khi khung thông báo cho nó về chuyển đổi nền trước/nền uid hoặc khi trình nền storaged
yêu cầu báo cáo. Vào thời điểm đó, mô-đun xuất một nút tệp từ hạt nhân để liên lạc với khung và trình nền storaged
.
storaged
giới thiệu giao diện /proc/uid_io/stats
, giao diện này trả về danh sách số liệu thống kê I/O cho từng UID trong hệ thống. Định dạng là:
<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>
- byte đọc/ghi là các sự kiện I/O từ thiết bị lưu trữ.
- Ký tự đọc/ghi (cũng tính bằng byte) là dữ liệu được yêu cầu bởi các tòa nhà chọc trời đọc/ghi.
Nhận trạng thái I/O từ kernel
Để kết xuất việc sử dụng I/O từ kernel, hãy sử dụng lệnh storaged
với tùy chọn -u
.
Lệnh: storaged -u
Định dạng đầu ra lệnh: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync
Lưu ý: Đầu ra này tương tự với đầu ra của proc/uid_io/stats
. Điều này là do storaged
xử lý dữ liệu từ /proc/uid_io/stats
và tạo dữ liệu của riêng nó.
Đầu ra ví dụ:
com.google.android.backuptransport 2269 60 0 0 1719845663 143912573 149065728 184180736 com.android.vending 2170 60 0 0 219904796 38693092 174436352 18944000