[Ceph Turning] – Tổng quan về osd_recovery_sleep và osd_recovery_sleep_hdd trong Ceph

1. Tổng quan

Hai tham số osd_recovery_sleeposd_recovery_sleep_hdd là cơ chế để giảm tải I/O khi OSD thực hiện recovery hoặc backfill. Cả hai đều chèn thời gian nghỉ tính bằng giây giữa mỗi operation sao chép dữ liệu, giúp hạn chế áp lực lên ổ đĩa, đặc biệt là HDD.

    +---------+    copy chunk 1   +---------+    sleep X giây   +---------+ 
    | client  |  ----------------> |   OSD   |  --------------> |   OSD   |
    +---------+                    +---------+                  +---------+

2. Cơ chế hoạt động

  • OSD xử lý từng op (chunk dữ liệu) liên tiếp trong quá trình recovery/backfill.
  • Nếu không có sleep → OSD liên tục gửi I/O → HDD chịu tải cao, queue dài, latency tăng → client bị chậm.
  • Tham số sleep yêu cầu OSD nghỉ một khoảng thời gian trước khi xử lý op tiếp theo, nhường I/O cho client.

3. Khác nhau giữa hai tham số

  • osd_recovery_sleep
    • Áp dụng cho tất cả OSD (HDD, SSD, NVMe).
  • osd_recovery_sleep_hdd
    • Chỉ áp dụng cho OSD mà Ceph nhận diện là HDD.
    • Hữu ích trong cluster hybrid (SSD + HDD) để SSD không bị bóp không cần thiết.

4. Phạm vi tác động

  • Recovery: Đồng bộ lại dữ liệu bị mất khi OSD down rồi quay lại.
  • Backfill: Di chuyển dữ liệu sang OSD mới hoặc khi rebalance.
  • Cả hai tham số đều tác động đến cả recovery và backfill.

5. Cách áp dụng tương đương sleep trong mClock

  • Đổi profile (nhanh nhất)
    • high_client_ops để ưu tiên I/O client, chấp nhận recovery chậm hơn.
    • high_recovery_ops để đẩy nhanh hồi phục ngoài giờ.
      Profile có sẵn bảng phân bổ reservation/weight/limit giữa client vs background. docs.ceph.com
  • Tự tinh chỉnh QoS (nâng cao)
    • Chuyển osd_mclock_profile=custom rồi đặt: osd_mclock_scheduler_background_recovery_lim osd_mclock_scheduler_background_recovery_res osd_mclock_scheduler_background_recovery_wgt
    • Giảm lim (mức trần) hoặc res (tối thiểu) để nhường đường cho client. docs.ceph.com
  • Kết hợp concurrency + chunk size
    • Bật osd_mclock_override_recovery_settings=true để tự điều khiển lại osd_max_backfills, osd_recovery_max_active*.
    • Giảm osd_recovery_max_chunk (ví dụ 1–2 MiB) để bớt burst mỗi op. docs.ceph.com

Sơ đồ quyết định:

[Đang dùng mClock?]--No--> Dùng WPQ + osd_recovery_sleep*
        |
       Yes
        |
   [Cần đổi nhanh?]--Yes--> Chọn profile mClock (high_client_ops / high_recovery_ops)
        |
       No
        v
  profile=custom + tinh chỉnh *_background_recovery_{res,lim,wgt}
   + (option) override_recovery_settings + giảm chunk

6. Ví dụ lệnh thực tế

Ưu tiên client giờ cao điểm (áp dụng tức thời, không restart OSD)

ceph config set osd osd_mclock_profile high_client_ops

Preset êm trên custom (giảm trần recovery ~20%)

ceph config set osd osd_mclock_profile custom
ceph config set osd osd_mclock_scheduler_background_recovery_lim 0.2
ceph config set osd osd_mclock_scheduler_background_recovery_res 0.02
ceph config set osd osd_recovery_max_chunk 1MiB 

Lưu ý: *_res/lim/wgt chỉ chỉnh được khi custom, các built-in profile khóa các option này.

Khôi phục điều khiển concurrency như WPQ (chỉ khi thật cần)

ceph config set osd osd_mclock_override_recovery_settings true
ceph config set osd osd_max_backfills 1
ceph config set osd osd_recovery_max_active_hdd 1 

7. Lời khuyên

  • Môi trường production nên giữ mClock và điều tiết bằng profile + QoS; chỉ quay về WPQ nếu có use-case đặc thù cần sleep. docs.ceph.com
  • Luôn xác thực capacity (IOPS/BW) trước khi tinh chỉnh tỷ lệ res/lim để tránh hạn mức dựa trên thông số ảo. Red Hat Documentation
  • Dùng preset: high_client_ops trong giờ cao điểm; high_recovery_ops ngoài giờ để rút ngắn thời gian mất redundancy. docs.ceph.com
  • Khi cần kiểm soát mạnh tay song song/backfill, bật osd_mclock_override_recovery_settings=true rồi đặt osd_max_backfills, osd_recovery_max_active*. docs.ceph.com

8. Tài liệu tham khảo

  • Ceph — mClock Config Reference (đặc biệt các mục Built-in Profiles Locked Options, Sleep Options, Override recovery settings) docs.ceph.com
  • Red Hat Ceph — mClock OSD scheduler + Appendix A: mClock configuration options (mô tả osd_mclock_profile, valid choices, áp dụng runtime) Red Hat Documentation+1
  • IBM Storage Ceph — mClock configuration options (tổng quan các option QoS) IBM

9. Kết luận

  • Các tham số sleep (osd_recovery_sleep*, osd_scrub/snaptrim_*_sleep) không còn tác dụng khi mClock chạy; mClock chủ động vô hiệu hóa để tự điều phối queue. docs.ceph.com
  • Để đạt hiệu ứng giãn nhịp tương đương trong mClock, hãy dùng profile hoặc tự đặt res/lim/wgt cho nhóm background recovery, kết hợp giảm chunk và (nếu cần) giới hạn concurrency với override_recovery_settings. docs.ceph.com
  • Thực hành khuyến nghị: đổi profile theo khung giờ, xác thực capacity chuẩn và chỉ dùng WPQ khi thật sự cần delay kiểu cứng. docs.ceph.comRed Hat Documentation

Bài viết gần đây

spot_img

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here

Đăng ký nhận thông tin bài viết qua email