1. Tổng quan
- Tổng hợp định nghĩa, chẩn đoán, cách ứng phó và biện pháp phòng ngừa đối với hiện tượng thrashing xảy ra trong bộ nhớ đệm ARC của hệ thống tệp ZFS
2. Định nghĩa ZFS ARC thrashing
- Khái niệm: Hiện tượng hiệu năng hệ thống bị suy giảm do liên tục thất bại cache hit, khiến các mục trong bộ nhớ đệm thường xuyên bị thay thế (eviction)
- Ảnh hưởng: Có thể gây ra sự cố dịch vụ nghiêm trọng trong môi trường I/O hiệu năng cao (ví dụ: máy chủ cơ sở dữ liệu)
3. Các triệu chứng chẩn đoán chính
- Chỉ số CPU
iowait duy trì trên 20%
- Tỷ lệ sử dụng CPU ở
system mode tăng so với bình thường
- Tỷ lệ cache hit (Hit rate) giảm xuống (cần so sánh với dữ liệu bình thường)
- Triệu chứng cốt lõi: Nếu mức sử dụng CPU của các kernel thread
arc_prune, arc_evict vượt quá 90% thì gần như chắc chắn đang xảy ra thrashing
4. Biện pháp ứng phó khẩn cấp
- Biện pháp: Xóa thủ công cache của hệ thống tệp Linux
- Lệnh:
echo 3 > /proc/sys/vm/drop_caches
- Hiệu quả: Đồng thời xóa page cache và các đối tượng slab
- Đặc điểm:
- Dữ liệu chưa được ghi xuống đĩa (dirty item) vẫn được giữ lại nên không có mất mát dữ liệu (không phá hủy)
- Ngay sau khi thực thi, hiệu năng có thể tạm thời suy giảm cho đến khi cache được lấp đầy trở lại
5. Phòng ngừa tận gốc
- Nguyên nhân: Kích thước cache ARC được cấp phát không đủ so với workload của hệ thống
- Kích thước ARC (
zfs_arc_max):
- Giá trị mặc định vốn đã rất lớn, bằng 1/2 bộ nhớ hệ thống (theo tiêu chuẩn Linux)
- Có thể gây cạnh tranh bộ nhớ với các ứng dụng khác nên không dễ tăng lên một cách tùy tiện
- Giải pháp:
- Nếu mức sử dụng bộ nhớ của các ứng dụng khác cao, hãy giảm giá trị
zfs_arc_max để tránh cạnh tranh
- Để giải quyết triệt để vấn đề, phương án chắc chắn nhất là nâng cấp thêm bộ nhớ vật lý (scale-up)
Chưa có bình luận nào.