Mục lục bài viết
Trên máy tính dùng ổ cứng cơ, phân mảnh dữ liệu là nguyên nhân quen thuộc khiến máy chậm dần và cần chống phân mảnh định kỳ. Nhiều người mang tư duy đó sang điện thoại, cho rằng bộ nhớ trong dùng lâu cũng bị phân mảnh giống hệt và cần công cụ “dọn dẹp” để sắp xếp lại. Thực tế cơ chế lưu trữ trên điện thoại khác về bản chất, và phân mảnh ảnh hưởng tốc độ theo nguyên lý riêng của bộ nhớ flash.
Vì sao phân mảnh gây chậm trên HDD nhưng không trên flash
Ổ cứng cơ đọc dữ liệu bằng đầu từ vật lý di chuyển trên đĩa quay, nên nếu một file bị chia thành nhiều mảnh rải rác, đầu từ phải di chuyển qua lại nhiều lần, tạo độ trễ cơ học đáng kể. Bộ nhớ flash trong điện thoại (eMMC hoặc UFS) không có bộ phận cơ khí, mọi ô nhớ được truy cập bằng tín hiệu điện với độ trễ gần như đồng đều bất kể vị trí, nên dù file bị chia nhỏ ở nhiều block khác nhau, thời gian đọc gần như không đổi so với file liền mạch.
Wear leveling khiến flash luôn “phân mảnh” một cách chủ động
Chip điều khiển flash chủ động phân tán dữ liệu ra khắp các block vật lý theo thuật toán wear leveling, chia đều số lần ghi/xoá cho từng ô nhớ để kéo dài tuổi thọ, vì mỗi ô chỉ chịu được số chu kỳ ghi hữu hạn. “Phân mảnh” trên flash vì vậy không phải lỗi cần sửa mà là cơ chế thiết kế bắt buộc, kiểm soát hoàn toàn ở tầng firmware, nằm ngoài tầm với của hệ điều hành lẫn ứng dụng bên thứ ba.
TRIM và garbage collection quyết định tốc độ ghi thực sự
Yếu tố ảnh hưởng tốc độ đọc/ghi không phải mức độ phân mảnh mà là tỷ lệ block trống sẵn sàng ghi ngay. Khi xoá file, hệ điều hành chỉ đánh dấu block đó “không dùng nữa” qua lệnh TRIM, chờ chip điều khiển dọn thật lúc rảnh (garbage collection). Nếu bộ nhớ trong luôn đầy trên 90%, chip nhớ không còn đủ block trống để dọn hiệu quả, buộc ghi đè lên block chưa dọn sạch, khiến tốc độ ghi giảm rõ rệt theo thời gian, đây mới là nguyên nhân thật của cảm giác “máy chậm dần”.
Khác biệt eMMC, UFS và vì sao app “chống phân mảnh” là thừa
Chuẩn eMMC trên máy tầm trung cũ xử lý lệnh đọc/ghi tuần tự, không xử lý tốt việc đọc nhiều luồng dữ liệu phân tán cùng lúc. Chuẩn UFS trên máy tầm trung cao và cao cấp hỗ trợ command queue tương tự SSD máy tính, xử lý nhiều yêu cầu song song, giảm đáng kể độ trễ khi truy xuất file phân tán. Dù vậy không có API chính thức nào trên Android hay iOS cho ứng dụng bên thứ ba truy cập tầng quản lý block vật lý của chip flash, vì lý do bảo mật. Mọi ứng dụng quảng cáo “chống phân mảnh” hay “tối ưu bộ nhớ flash” thực chất chỉ xoá cache hoặc file rác ở tầng hệ thống file, không chạm tới cơ chế phân mảnh vật lý bên dưới.
Hiểu nhầm thường gặp
“Bộ nhớ trong dùng lâu bị phân mảnh giống ổ cứng máy tính nên cần app chống phân mảnh.” Bộ nhớ flash không chậm vì phân mảnh theo cơ chế HDD; nguyên nhân chậm dần thực sự là dung lượng trống giảm khiến chip nhớ khó dọn block, và không ứng dụng bên thứ ba nào có quyền can thiệp tầng quản lý block vật lý.
Xem thêm
Chủ đề này được xếp trong nhóm Tối ưu hiệu năng phần mềm: tổng hợp bài viết. Xem thêm Cách tối ưu hiệu năng phần mềm giúp máy chạy mượt hơn. Thông tin kỹ thuật chi tiết hơn được công bố tại trang hỗ trợ chính thức của Apple.
