1 điểm bởi GN⁺ 2024-07-14 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Tối ưu hóa máy chủ tablebase

Giải quyết độ trễ đuôi
  • Máy chủ Syzygy tablebase 7 quân gặp khó khăn trong việc xử lý yêu cầu khi đang chạy kiểm tra toàn vẹn RAID
  • Chuyển sang cách tiếp cận mới: dùng dm-integrity trong LVM để kiểm tra thủ công mỗi khi đọc khối dữ liệu
  • Thiết lập máy chủ thứ hai để chạy benchmark nhằm di chuyển 17 TiB tablebase mà không gây downtime
Cấu hình phần cứng mới
  • 32 GiB RAM
  • 2 x 201 GiB NVMe (máy chủ trước đó không có dung lượng SSD)
  • 6 x 5.46 TiB HDD (máy chủ trước đó chỉ có 5 ổ đĩa)
  • Hệ điều hành: Debian bookworm
Tầm quan trọng của giám sát
  • Dùng RAID 5 để có thể phục hồi khi một ổ đĩa lỗi và phân tán các lượt đọc ngẫu nhiên trên tất cả ổ đĩa
  • Hiệu năng ban đầu có vẻ ổn, nhưng nhờ giám sát mới phát hiện không phải mọi ổ đĩa đều tham gia đồng đều
Kết quả benchmark
  • Máy chủ nhận 10~35 yêu cầu mỗi giây
  • Thực hiện benchmark bằng cách ghi lại 1 triệu yêu cầu
  • Thời gian phản hồi trung bình nhanh nhưng độ trễ đuôi cao
  • pread cho hiệu năng tốt hơn mmap
So sánh giữa mmap và pread
  • mmap: ánh xạ tệp vào bộ nhớ để xử lý việc đọc đĩa một cách trong suốt, nhưng khó xử lý lỗi
  • pread: báo lỗi đọc qua giá trị trả về của system call
  • pread cho hiệu năng tốt hơn vì khi khối dữ liệu được ánh xạ bộ nhớ vượt qua ranh giới trang, nó có thể gây ra hai lần đọc đĩa
Tác dụng ngược của POSIX_FADV_RANDOM
  • POSIX_FADV_RANDOM dùng để gợi ý cho hệ điều hành rằng truy cập tệp là ngẫu nhiên nhằm giảm áp lực lên page cache, nhưng trên thực tế lại phản tác dụng
  • Mẫu truy cập tablebase có thể không hẳn là ngẫu nhiên
Tận dụng không gian SSD hạn chế
  • Để dùng không gian SSD hiệu quả, lưu danh sách độ dài khối thưa và danh sách độ dài khối trên SSD để bảo đảm tối đa chỉ cần 1 lần đọc đĩa chậm
  • Dùng RAID 0 thay vì RAID 1, chấp nhận bỏ dự phòng để tối ưu hiệu năng
Song song hóa việc đọc
  • Để giao diện người dùng hiển thị giá trị DTZ cho mọi nước đi, một yêu cầu trung bình tạo ra 23 lần probe WDL và 70 lần probe DTZ
  • Giảm độ trễ đuôi bằng cách song song hóa quá trình xử lý yêu cầu
Hiệu năng trong môi trường thực tế
  • Xác nhận rằng các tối ưu hóa trong kịch bản benchmark cũng hữu ích trong môi trường thực tế

# Tóm tắt của GN⁺

  • Bài viết nói về quá trình tối ưu hóa máy chủ tablebase của Lichess
  • Nhiều cách tiếp cận để giảm độ trễ đuôi đã được thử nghiệm và kiểm chứng hiệu năng bằng benchmark
  • Bài viết đề cập đến các chủ đề như so sánh mmappread, tác dụng ngược của POSIX_FADV_RANDOM, tận dụng không gian SSD và song song hóa việc đọc
  • Bài viết có thể hữu ích với các lập trình viên quan tâm đến tối ưu hóa máy chủ; một dự án có chức năng tương tự là Stockfish

Chưa có bình luận nào.

Chưa có bình luận nào.