Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

[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ăng WPQ (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* ON OFF OFF OFF
Priority kiểu cũ: osd_client_op_priority, osd_recovery_op_priority ON OFF OFF OFF
Concurrency recovery/backfill: osd_max_backfills, osd_recovery_max_active(_hdd/_ssd) ON OFF ON ON
Chunk recovery: osd_recovery_max_chunk ON ON ON ON
Chọn profile mClock: osd_mclock_profile N/A ON ON ON
QoS mClock (reservation/limit/weight): mclock_scheduler_*_{res,lim,wgt} N/A OFF OFF ON
Thông số capacity mClock (ước lượng IOPS/MB/s): osd_mclock_max_capacity_* N/A ON ON ON
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