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.
- Nếu
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 (wpq ↔ mclock_scheduler ) | — | — | — | — |
Yêu cầu restart khi đổi scheduler | Có | Có | Có | Có |
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 (
wpq
↔mclock_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
- Ceph mClock Config Reference: https://docs.ceph.com/en/latest/rados/configuration/mclock-config-ref/
- Ceph OSD Config Reference: https://docs.ceph.com/en/latest/rados/configuration/osd-config-ref/
- Red Hat Ceph – The mClock OSD scheduler: https://docs.redhat.com/en/documentation/red_hat_ceph_storage/8/html/administration_guide/the-mclock-osd-scheduler
- IBM Storage Ceph – Modifying backfills and recovery options: https://www.ibm.com/docs/en/storage-ceph/latest?topic=scheduler-modifying-backfills-recovery-options