[Ceph Turning] – Mối quan hệ giữa osd_op_queue và osd_mclock_profile trong Ceph OSD

1. Tổng quan

Trong Ceph, mỗi OSD có một scheduler để sắp xếp thứ tự xử lý các request I/O.

  • osd_op_queue: xác định loại scheduler mà OSD đang sử dụng.
  • osd_mclock_profile: khi scheduler là mclock_scheduler, tham số này xác định bộ cấu hình QoS (profile) của mClock.

Nói cách khác:

  • osd_op_queue = chọn bộ não lập lịch.
  • osd_mclock_profile = cài đặt chế độ cho bộ não đó (chỉ áp dụng khi bộ não là mClock).

2. Chi tiết từng tham số

2.1 osd_op_queue

  • Mục đích: Chọn loại thuật toán scheduler của OSD.
  • Các giá trị thường gặp:
    • wpq (Weighted Priority Queue): Scheduler truyền thống, ưu tiên theo mức độ (priority).
    • mclock_scheduler: Scheduler mới, ưu tiên theo QoS (reservation, limit, weight).
  • Tác động:
    • Nếu wpq → dùng toàn bộ hệ thống ưu tiên/sleep/concurrency kiểu cũ (osd_recovery_sleep*, osd_client_op_priority…).
    • Nếu mclock_scheduler → bỏ qua phần lớn ưu tiên/sleep kiểu cũ, thay bằng QoS profile.

2.2 osd_mclock_profile

  • Mục đích: Chọn cấu hình QoS sẵn có khi OSD dùng mClock.
  • Chỉ áp dụng khi: osd_op_queue = mclock_scheduler.
  • Các giá trị phổ biến:
    • balanced: Cân bằng tài nguyên giữa client và background (recovery, scrub…).
    • high_client_ops: Ưu tiên client ops, recovery chậm hơn.
    • high_recovery_ops: Ưu tiên recovery, client có thể bị chậm.
    • custom: Cho phép chỉnh tay các thông số QoS (mclock_scheduler_client_res, ..._lim, ..._wgt).
  • Tác động: Quyết định tỷ lệ tài nguyên (IOPS, MB/s) dành cho từng loại tác vụ.

3. Sơ đồ logic mối quan hệ

               +-----------------------------------+
               |            osd_op_queue           |
               +------------------+----------------+
                                  |
               +------------------+---------------------+
               |                                        |
            wpq (cũ)                              mclock_scheduler (mới)
               |                                        |
     [sleep/priority/concurrency]                +--------------------------+
               |                                 |     osd_mclock_profile   |
               v                                 +-------------+------------+
   tune trực tiếp bằng                           balanced  high_client  high_recovery  custom
   sleep/priority/chunk/concurrency                               |
                                                                  v
                                              QoS res/lim/wgt: OFF với built-in, ON với custom

Bảng so sánh option nào sống/chết theo từng chế độ

Ký hiệu: ON = có hiệu lực/cho phép chỉnh | OFF = bị khóa/bỏ qua | N/A = không áp dụng

Nhóm tham số / Chức năngWPQ (osd_op_queue=wpq)mClock built-in (osd_op_queue=mclock_scheduler, profile: balanced / high_client_ops / high_recovery_ops)mClock built-in + override (osd_mclock_override_recovery_settings=true)mClock custom (osd_mclock_profile=custom)
Sleep knobs (giãn tải bằng delay): osd_recovery_sleep*, osd_scrub_sleep*, osd_delete_sleep*, osd_snap_trim_sleep*ONOFFOFFOFF
Priority kiểu cũ: osd_client_op_priority, osd_recovery_op_priorityONOFFOFFOFF
Concurrency recovery/backfill: osd_max_backfills, osd_recovery_max_active(_hdd/_ssd)ONOFFONON
Chunk recovery: osd_recovery_max_chunkONONONON
Chọn profile mClock: osd_mclock_profileN/AONONON
QoS mClock (reservation/limit/weight): mclock_scheduler_*_{res,lim,wgt}N/AOFFOFFON
Thông số capacity mClock (ước lượng IOPS/MB/s): osd_mclock_max_capacity_*N/AONONON
Thay đổi scheduler (wpqmclock_scheduler)
Yêu cầu restart khi đổi scheduler

4. Ví dụ thực tế

4.1. Kiểm tra nhanh

ceph config get osd osd_op_queue
ceph config get osd osd_mclock_profile

4.2. Trường hợp A (mClock + high_client_ops, không override)

  • osd_op_queue = mclock_scheduler, osd_mclock_profile = high_client_ops.
  • Sleep/priority kiểu cũ: OFF.
  • osd_max_backfills/osd_recovery_max_active: OFF (mClock tự điều chỉnh theo profile).
  • osd_recovery_max_chunk: ON → vẫn có thể giảm chunk để HDD đỡ nặng.

4.3. Trường hợp B (mClock + balanced + override=true)

  • Thêm: osd_mclock_override_recovery_settings=true.
  • Cho phép đặt lại osd_max_backfills=1, osd_recovery_max_active_hdd=1 để giảm song song recovery.
  • Sleep knobs vẫn OFF.

4.4. Trường hợp C (custom)

  • osd_mclock_profile=custom.
  • Chỉnh chi tiết mclock_scheduler_client_res/lim/wgt, mclock_scheduler_background_* theo benchmark thực tế.
  • Sleep/priority vẫn OFF; chunk/concurrency: ON.

5. Lời khuyên

  • Nếu bạn muốn bóp nhanh kiểu truyền thống (sleep/priority), hãy dùng WPQ; đổi scheduler cần kế hoạch restart OSD an toàn.
  • Nếu dùng mClock:
    • Ưu tiên thao tác theo profile trước (balanced/high_client_ops/high_recovery_ops).
    • Dùng osd_recovery_max_chunk để kiểm soát size mỗi gói recovery (tác dụng trong mọi chế độ).
    • Khi cần giảm song song recovery trong giờ cao điểm, bật osd_mclock_override_recovery_settings=true rồi hạ osd_max_backfills, osd_recovery_max_active_hdd.
    • Khi workload ổn định và bạn cần QoS tinh: chuyển sang custom và đặt *_res/_lim/_wgt dựa trên số đo IOPS/MB/s thực tế của HDD/SSD.
  • Luôn kiểm thử ở môi trường staging/lab trước khi áp dụng diện rộng; thay đổi scheduler (wpqmclock_scheduler) cần restart OSD và lịch triển khai cuốn chiếu.

6. Kết luận

  • osd_op_queue quyết định dùng WPQ hay mClock.
  • Khi dùng mClock, osd_mclock_profile quyết định cách mClock chia tài nguyên; built-in profile dễ vận hành nhưng khóa phần lớn tham số QoS, còn custom cho phép tinh chỉnh sâu.
  • Các sleep/priority cũ không còn tác dụng dưới mClock; thay vào đó hãy dùng profile, chunk và (khi cần) override concurrency.
  • Đổi scheduler cần restart OSD; đổi profile thì không.

7. Tham khảo

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