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