- Các tham số mặc định của ZFS được đặt như một điểm cân bằng giữa truy cập tuần tự và truy cập ngẫu nhiên
- Nếu nắm rõ đặc tính workload, có thể tinh chỉnh mạnh tay hơn
- Giải thích sự khác biệt giữa truy cập tuần tự và truy cập ngẫu nhiên
- HDD có thể chậm hơn hàng chục đến hàng trăm lần khi truy cập ngẫu nhiên so với truy cập tuần tự do phải di chuyển đầu đọc
- SSD cũng đã cải thiện đáng kể tốc độ truy cập ngẫu nhiên, nhưng truy cập tuần tự vẫn hiệu quả hơn
- Workload đọc các tệp lớn theo thứ tự có xu hướng truy cập tuần tự rất rõ
- Workload thường xuyên đọc nhiều tệp nhỏ dễ có xu hướng truy cập ngẫu nhiên mạnh hơn
- Giới thiệu cách phân tích workload
- Suy luận logic dựa trên mã/kiến trúc
- Tính kích thước IO trung bình dựa trên thông lượng (bps) + số IO mỗi giây (iops)
- Phân tích phân bố kích thước IO dựa trên
zpool iostat -r
- Diễn giải
zpool iostat -r
ind: kích thước yêu cầu logic riêng lẻ
agg: kích thước IO thực tế sau khi được gộp lại để thực thi
- Nếu
agg lớn hơn ind, điều đó có nghĩa là việc gộp các IO liền kề đang diễn ra hiệu quả
- Kết quả phân tích workload ví dụ
- Tỷ trọng đọc đồng bộ khoảng 76%
- Hơn 99% lượt đọc có kích thước từ 32KiB trở xuống
- Ghi bất đồng bộ cũng chiếm tỷ trọng IO nhỏ cao
- Nhìn chung, đây là workload có xu hướng truy cập ngẫu nhiên rất mạnh
zfs_prefetch_disable
- Khi phát hiện mẫu truy cập tuần tự, ZFS sẽ nạp trước các block lân cận vào ARC
- Với workload truy cập ngẫu nhiên, tỷ lệ trúng đọc trước thấp có thể chỉ làm tăng thêm IO không cần thiết
- Có thể đo hiệu quả đọc trước dựa trên
arc_summary
- Nếu tỷ lệ trúng thấp, có thể cân nhắc
zfs_prefetch_disable
recordsize
- Giá trị mặc định là 128K
- Trong workload ví dụ, phần lớn IO ở mức 32KiB trở xuống nên có thể cân nhắc
recordsize nhỏ hơn
- Chọn giá trị tối ưu
- Điều quan trọng là quyết định dựa trên benchmark
- Các CSDL như MySQL/Postgres đã có nhiều trường hợp tinh chỉnh được kiểm chứng
- Nói chung, nhiều trường hợp sử dụng
recordsize tương đương với kích thước trang của CSDL
Chưa có bình luận nào.