10 điểm bởi xguru 2021-11-15 | 1 bình luận | Chia sẻ qua WhatsApp
<p>- Heap đang vận hành Postgres đa petabyte để phục vụ phân tích<br /> - Khi tăng trưởng nhanh, mức sử dụng node vượt 80% và gây ra vấn đề hiệu năng trong pipeline thu thập dữ liệu <br /> - Nguyên nhân của vấn đề là SSD có xu hướng suy giảm hiệu năng khi mức sử dụng tiến gần 100%<br /> - Vấn đề trở nên tệ hơn do sử dụng ZFS, một hệ thống tệp CoW (Copy-on-Write) <br /> → Mỗi khi một block được cập nhật, một bản sao mới sẽ được ghi ra <br /> - Tất nhiên, CoW cũng có nhiều ưu điểm<br /> → Nén ở cấp hệ thống tệp dễ thực hiện hơn so với các hệ thống tệp khác, giúp tiết kiệm không gian với tỷ lệ nén 4-5x <br /> → Độ bền cao hơn nên có thể vô hiệu hóa `full_page_writes` của Postgres, từ đó cải thiện hiệu năng và giảm tổng IO <br /> → Snapshot point-in-time đảm bảo tính nhất quán - do các trang thực tế không thể bị thay đổi nên vẫn giữ được trang cũ ngay cả trong lúc snapshot<br /> - Tuy nhiên, các hệ thống tệp CoW như ZFS sẽ giảm hiệu năng khi dung lượng đầy dần<br /> → Mỗi lần cập nhật trang, block allocator phải tìm block trống, nên khi mức sử dụng cao thì suy giảm hiệu năng sẽ rất nghiêm trọng <br /> → Cần xóa các block đã được unlink trước đó và trộn chúng với các block hiện có <br /> → Tình hình còn tệ hơn vì để đạt tỷ lệ nén cao hơn, kích thước block đã được đặt lớn tới 64kb <br /> → Vì những lý do này, tốt nhất là không để mức sử dụng của ZFS vượt quá 80% <br /> <br /> - Nhóm đã thử nâng cấp lên ZFS 2.x và chuyển từ nén lz4 sang nén Zstandard <br /> → lz4 cực kỳ nhanh và cho tỷ lệ nén khoảng 4.4x <br /> → Zstandard cho tỷ lệ nén tới khoảng 5.5x, tương đương cải thiện 20% <br /> → Tuy nhiên, nhiều benchmark cho thấy Zstandard chậm hơn lz4<br /> → Vì vậy, nhóm quyết định kiểm thử nghiêm ngặt trong điều kiện thực tế <br /> → Kết quả kiểm thử cho thấy hiệu năng truy vấn không đổi, mức sử dụng lưu trữ giảm khoảng 20%, và thời gian truy vấn ghi giảm một nửa <br /> <br /> - Cụm DB của Heap được chia thành 5 node, mỗi node thuộc một ASG riêng <br /> → Việc thay node khá đơn giản: chỉ cần tách node khỏi ASG, ASG sẽ tạo node mới, khôi phục từ bản backup cuối cùng và chuyển sang chế độ warm standby <br /> → Tạo một AMI với cấu hình mới rồi triển khai lần lượt từng node <br /> → Tổng mức sử dụng giảm khoảng 21%, thời gian ghi giảm 50%, còn hiệu năng truy vấn gần như không thay đổi </p>

1 bình luận

 
xguru 2021-11-15
<p>- Arch Linux đã thay công cụ nén gói từ xz sang Zstandard https://vi.news.hada.io/topic?id=1227<br /> - Thời kỳ phục hưng của các thuật toán nén https://vi.news.hada.io/topic?id=1228<br /> <br /> Bài viết không nhắc đến mức sử dụng CPU, nhưng khi xem bình luận của tác giả gốc trên HN thì thấy nói rằng nó đã tăng từ khoảng ~40% lên ~50%. (Ý là Zstd dùng CPU nhiều hơn)<br /> - https://news.ycombinator.com/item?id=29164727</p>;