Android 8 hỗ trợ thêm storaged
, một trình nền gốc Android
thu thập và công bố các chỉ số về bộ nhớ trên thiết bị Android.
- Đối với disstats hằng ngày,
storaged
sẽ 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
(các thiết bị không phải eMMC). - Trong vòng đời của eMMC,
storaged
sẽ phân tích cú pháp/d/mmc0/mmc0:001/ext_csd
(nếu có sẵn). - Để đổ lỗi cho I/O của ứng dụng,
storaged
định kỳ truyền tải/proc/uid_io/stats
và duy trì dữ liệu đã phân tích cú pháp, bao gồm cả 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 nhật ký mứ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ả đĩa đã bị treo) và eMMC được ghi vào Nhật ký sự kiện của Android, trong đó dịch vụ đăng ký nền tảng thu thập nhật ký.
Các thao tác storaged
diễn ra tự động và do Android xử lý toàn bộ
khung nên 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ác giao diện mới) và cách sử dụng thiết kế đó để
nhận trạng thái I/O từ nhân hệ điều hành.
thiết kế lưu trữ
Để đảm bảo tính linh hoạt cho việc tính toán và cấp quyền, storaged
được triển khai dưới dạng một nhân
mô-đun trả về thông tin I/O trên mỗi uid (thay vì sử dụng tiêu chuẩn
proc/PID/io
). Dữ liệu I/O thô cho từng yêu cầu I/O tiếp tục là
được lưu trữ và cập nhật trong nhân task_struct
, và nhân hệ điều hành này
theo dõi thời điểm một quy trình thoát để không bỏ lỡ lần sử dụng I/O diễn ra từ
sự kiện thăm dò storaged
gần đây nhất.
Mô-đun đọc dữ liệu thô và chỉ xử lý dữ liệu đó khi khung thông báo cho nó
của nút chuyển trên nền trước/nền 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ừ kernel cho
giao tiếp với khung và trình nền storaged
.
storaged
giới thiệu giao diện /proc/uid_io/stats
trả về
danh sách số liệu thống kê I/O cho từng UID trong hệ thống. Định dạng như sau:
<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ừ mộ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/ghi gọi hệ thống.
Nhận trạng thái I/O từ nhân hệ điều hành
Để kết xuất mức sử dụng I/O từ nhân, hãy dùng lệnh storaged
với
lựa 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ự với kết quả của
proc/uid_io/stats
. Điều này là do storaged
xử lý dữ liệu từ
/proc/uid_io/stats
rồi 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