10.6. mClock プロファイル
mClock プロファイルは構成設定です。実行中の Red Hat Ceph Storage クラスターに適用すると、バックグラウンドリカバリー、scrub
、snap trim
、client op
、pg deletion
などの各種クライアントクラスに属する IOPS 操作のスロットリングが可能になります。
mClock プロファイルは、容量制限とユーザーが選択した mClock プロファイルタイプを使用して、下位レベルの mClock リソース制御設定パラメーターを決定し、それらを透過的に適用します。その他の Red Hat Ceph Storage 設定パラメーターも適用されます。下位レベルの mClock リソース制御パラメーターとは、リソース共有を制御する予約、制限、重みです。mClock プロファイルは、クライアントタイプごとにこれらのパラメーターを割り当てます。
10.6.1. mClock プロファイルのタイプ
mClock プロファイルは、ビルトイン プロファイルと カスタム プロファイルに分類できます。
いずれかの mClock プロファイルがアクティブな場合、次の Red Hat Ceph Storage 設定のスリープオプションは 0
に設定され、無効になります。
-
osd_recovery_sleep
-
osd_recovery_sleep_hdd
-
osd_recovery_sleep_ssd
-
osd_recovery_sleep_hybrid
-
osd_scrub_sleep
-
osd_delete_sleep
-
osd_delete_sleep_hdd
-
osd_delete_sleep_ssd
-
osd_delete_sleep_hybrid
-
osd_snap_trim_sleep
-
osd_snap_trim_sleep_hdd
-
osd_snap_trim_sleep_ssd
-
osd_snap_trim_sleep_hybrid
これは、mClock スケジューラーが操作キューから次の操作を選択して操作シーケンサーに転送するタイミングを決定できるようにするためです。その結果、すべてのクライアントで意図した QoS が提供されます。
カスタム プロファイル
このプロファイルにより、ユーザーはすべての mClock 設定パラメーターを完全に制御できます。これは注意して使用する必要があり、mClock および Red Hat Ceph Storage 関連の設定オプションを理解している上級ユーザーを対象としています。
ビルトイン プロファイル
ビルトイン プロファイルが有効になっている場合、mClock スケジューラーは、クライアントタイプごとに有効なプロファイルに基づき、下位レベルの mClock パラメーター (つまり予約、重み、制限) を計算します。
mClock パラメーターは、事前に提供された Ceph OSD の最大容量に基づいて計算されます。そのため、ビルトインプロファイルを使用している場合、以下の mClock 設定オプションは変更できません。
-
osd_mclock_scheduler_client_res
-
osd_mclock_scheduler_client_wgt
-
osd_mclock_scheduler_client_lim
-
osd_mclock_scheduler_background_recovery_res
-
osd_mclock_scheduler_background_recovery_wgt
-
osd_mclock_scheduler_background_recovery_lim
-
osd_mclock_scheduler_background_best_effort_res
-
osd_mclock_scheduler_background_best_effort_wgt
osd_mclock_scheduler_background_best_effort_lim
注記これらのデフォルトは、
config set
、config daemon
、config tell
コマンドなどの config サブシステムコマンドを使用して変更することはできません。上記のコマンドは成功を報告しますが、mClock QoS パラメーターはそれぞれの組み込みプロファイルのデフォルトに戻ります。
次のリカバリーおよびバックフィル関連の Ceph オプションは、mClock のデフォルトにオーバーライドされます。
組み込みプロファイルはこれらのオプションに基づいて最適化されるため、これらのオプションを変更しないでください。これらのデフォルトを変更すると、予期しないパフォーマンス結果が生じる可能性があります。
-
osd_max_backfills
-
osd_recovery_max_active
-
osd_recovery_max_active_hdd
-
osd_recovery_max_active_ssd
次のオプションは、フォアグラウンドクライアント操作のパフォーマンスを最大化するための現在のデフォルトと同じ mClock のデフォルトを示します。
osd_max_backfills
- 元のデフォルト
-
1
- mClock のデフォルト
-
1
osd_recovery_max_active
- 元のデフォルト
-
0
- mClock のデフォルト
-
0
osd_recovery_max_active_hdd
- 元のデフォルト
-
3
- mClock のデフォルト
-
3
osd_recovery_max_active_sdd
- 元のデフォルト
-
10
- mClock のデフォルト
-
10
上記の mClock のデフォルトは、デフォルトで false
に設定されている osd_m Clock_override_recovery_settings
を有効にすることで、必要な場合にのみ変更できます。これらのパラメーターを変更する場合は、バックフィルおよびリカバリーオプションの変更 を参照してください。
ビルトイン プロファイルタイプ
ユーザーは、次の built-in プロファイルタイプから選択できます。
-
balanced
(デフォルト) -
high_client_ops
-
high_recovery_ops
以下のリストに記載されている値は、サービスタイプに割り当てられた Ceph OSD の合計 IOPS 容量の割合を表します。
-
balanced
:
デフォルトの mClock プロファイルは、クライアント IO とリカバリー IO の優先順位の妥協点を表すため、balanced
に設定されています。クライアント操作とバックグラウンド回復操作に同等の予約または優先度を割り当てます。バックグラウンドのベストエフォート操作には低い予約が与えられるため、競合する操作がある場合には完了までに時間がかかります。このプロファイルは、外部クライアントのパフォーマンス要件が重要ではなく、OSD 内で注意が必要な他のバックグラウンド操作がある場合の、クラスターの通常または定常状態の要件を満たします。
場合によっては、クライアント操作または回復操作のいずれかに高い優先順位を与える必要がある場合があります。このような要件を満たすには、クライアント IO を優先する high_client_ops
プロファイル、またはリカバリー IO を優先する high_recovery_ops
プロファイルのいずれかを選択できます。これらのプロファイルについては、以下でさらに説明します。
- サービスの種類: クライアント
- 予約
- 50%
- Limit
- 最大
- 重み
-
1
- サービスの種類: バックグラウンドリカバリー
- 予約
- 50%
- Limit
- 最大
- 重み
-
1
- サービスタイプ: バックグラウンドベストエフォート
- 予約
- 最小
- Limit
- 90%
- 重み
1
-
high_client_ops
-
このプロファイルは、Ceph OSD のバックグラウンド操作と比較して、より多くの予約と制限をクライアント操作に割り当てることにより、バックグラウンドアクティビティーでのクライアントパフォーマンスを最適化します。たとえば、このプロファイルを有効にすると、回復が遅くなる代わりに、I/O 集中型のアプリケーションに必要なパフォーマンスを持続的に提供できます。以下のリストは、プロファイルによって設定されるリソース制御パラメーターを示しています。
- サービスの種類: クライアント
- 予約
- 60%
- Limit
- 最大
- 重み
-
2
- サービスの種類: バックグラウンドリカバリー
- 予約
- 40%
- Limit
- 最大
- 重み
-
1
- サービスタイプ: バックグラウンドベストエフォート
- 予約
- 最小
- Limit
- 70%
- 重み
1
-
high_recovery_ops
-
このプロファイルは、外部クライアントや Ceph OSD 内の他のバックグラウンド操作と比較して、バックグラウンドリカバリーパフォーマンスを最適化します。
たとえば、管理者が一時的に有効にして、非ピーク時間中にバックグラウンド回復を加速することができます。以下のリストは、プロファイルによって設定されるリソース制御パラメーターを示しています。
- サービスの種類: クライアント
- 予約
- 30%
- Limit
- 最大
- 重み
-
1
- サービスの種類: バックグラウンドリカバリー
- 予約
- 70%
- Limit
- 最大
- 重み
-
2
- サービスタイプ: バックグラウンドベストエフォート
- 予約
- 最小
- Limit
- 最大
- 重み
-
1
関連情報
- mClock 設定オプションの詳細は mClock 設定オプション を参照してください。
10.6.2. mClock プロファイルの変更
デフォルトの mClock プロファイルは Balanced
に設定されています。組み込み プロファイルの他のタイプは、high_client_ops
および high_recovery_ops
です。
上級ユーザーでない限り、カスタム プロファイルは推奨しません。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ceph Monitor ホストへの root レベルのアクセス。
手順
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
osd_mclock_profile
オプションを設定します。構文
ceph config set osd.OSD_ID osd_mclock_profile VALUE
例
[ceph: root@host01 /]# ceph config set osd.0 osd_mclock_profile high_recovery_ops
この例では、プロファイルを変更して、
osd.0
でのリカバリーを高速化します。注記最適なパフォーマンスを得るには、次のコマンドを使用して、すべての Ceph OSD でプロファイルを設定する必要があります。
構文
ceph config set osd osd_mclock_profile VALUE
10.6.3. ビルトイン プロファイルと カスタム プロファイルの切り替え
次の手順では、ビルトイン プロファイルから カスタム プロファイル、およびその逆の切り替えを説明します。
すべての mClock 設定オプションを完全に制御したい場合は、カスタム プロファイルに切り替えます。ただし、カスタム プロファイルの使用は、上級ユーザーにのみ推奨しています。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ceph Monitor ホストへの root レベルのアクセス。
ビルトイン プロファイルから カスタム プロファイルへの切り替え
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
カスタム プロファイルに切り替えます。
構文
ceph config set osd.OSD_ID osd_mclock_profile custom
例
[ceph: root@host01 /]# ceph config set osd.0 osd_mclock_profile custom
注記最適なパフォーマンスを得るには、次のコマンドを使用して、すべての Ceph OSD でプロファイルを設定する必要があります。
例
[ceph: root@host01 /]# ceph config set osd osd_mclock_profile custom
オプション: カスタム プロファイルに切り替えた後、mClock 設定オプションを変更します。
構文
ceph config set osd.OSD_ID MCLOCK_CONFIGURATION_OPTION VALUE
例
[ceph: root@host01 /]# ceph config set osd.0 osd_mclock_scheduler_client_res 0.5
この例では、特定の OSD
osd.0
のクライアント予約 IOPS 比を 0.5 (50%) に変更します。重要予約の合計が OSD の IOPS 容量の最大割合 (1.0) を超えないように、バックグラウンドリカバリーやバックグラウンドベストエフォートなどの他のサービスの予約を適宜変更します。
カスタム プロファイルから ビルトイン プロファイルへの切り替え
cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
ビルトイン プロファイルを設定します。
構文
ceph config set osd osd_mclock_profile MCLOCK_PROFILE
例
[ceph: root@host01 /]# ceph config set osd osd_mclock_profile high_client_ops
この例では、すべての Ceph OSD で ビルトイン プロファイルを
high_client_ops
に設定します。データベース内の既存のカスタム mClock 設定を決定します。
例
[ceph: root@host01 /]# ceph config dump
前の手順で決定したカスタム mClock 設定を削除します。
構文
ceph config rm osd MCLOCK_CONFIGURATION_OPTION
例
[ceph: root@host01 /]# ceph config rm osd osd_mclock_scheduler_client_res
この例では、すべての Ceph OSD で設定された設定オプション
osd_mclock_scheduler_client_res
を削除します。すべての既存のカスタム mClock 設定がセントラル設定データベースから削除されると、
high_client_ops
に関連する設定が適用されます。Ceph OSD の設定を確認します。
構文
ceph config show osd.OSD_ID
例
[ceph: root@host01 /]# ceph config show osd.0
関連情報
- ビルトイン プロファイルで変更できない mClock 設定オプションのリストについては、mClock プロファイルのタイプ を参照してください。
10.6.4. mClock プロファイルの一時的な切り替え
このセクションでは、mClock プロファイルを一時的に切り替える手順を説明しています。
これは、上級ユーザー向け、または実験的なテスト用のセクションです。予期しない結果が生じる可能性があるため、実行中のストレージクラスターでは以下のコマンドを使用しないでください。
以下のコマンドを使用した Ceph OSD の設定変更は一時的なものであり、Ceph OSD を再起動すると失われます。
このセクションで説明されている、コマンドを使用してオーバーライドされる設定オプションは、ceph config set osd.OSD_ID
コマンドを使用しても変更できません。変更は、Ceph OSD が再起動されるまで有効になりません。これは、設定サブシステムの設計に基づく意図的なものです。ただし、これらのコマンドを使用して一時的に変更するこさらに変更を加えることができます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ceph Monitor ホストへの root レベルのアクセス。
手順
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
次のコマンドを実行して、mClock 設定をオーバーライドします。
構文
ceph tell osd.OSD_ID injectargs '--MCLOCK_CONFIGURATION_OPTION=VALUE'
例
[ceph: root@host01 /]# ceph tell osd.0 injectargs '--osd_mclock_profile=high_recovery_ops'
この例では、
osd.0
のosd_mclock_profile
オプションがオーバーライドされます。オプション: 前述の
ceph tell osd.OSD_ID injectargs
の代わりに使用できます。構文
ceph daemon osd.OSD_ID config set MCLOCK_CONFIGURATION_OPTION VALUE
例
[ceph: root@host01 /]# ceph daemon osd.0 config set osd_mclock_profile high_recovery_ops
上記のコマンドを使用して、カスタム プロファイルの個々の QoS 関連の設定オプションを一時的に変更することもできます。
10.6.5. mClock プロファイルを使用した劣化および置き忘れたオブジェクトの回復率
劣化したオブジェクトのリカバリーは、バックグラウンドリカバリーバケットに分類されます。すべての mClock プロファイルにおいて、劣化したオブジェクトのリカバリーは、置き忘れられたオブジェクトのリカバリーよりも高い優先順位が与えられます。これは、劣化したオブジェクトには、単なる置き忘れられたオブジェクトには存在しないデータの安全性の問題が存在するためです。
バックフィルまたは置き忘れたオブジェクトの回復操作は、バックグラウンドのベストエフォートバケットに分類されます。balanced
および high_client_ops
mClock プロファイルによれば、バックグラウンドベストエフォートクライアントは予約 (ゼロに設定) によって制約されませんが、他に競合するサービスがない場合、参加している OSD の容量の一部を使用するように制限されます。
したがって、balanced
または high_client_ops
プロファイルを使用し、他のバックグラウンドで競合するサービスがアクティブな場合、以前の WeightedPriorityQueue (WPQ) スケジューラーと比較すると、バックフィル速度が遅くなることが予想されます。
より高いバックフィル率が必要な場合は、以下のセクションに記載されている手順に従ってください。
埋め戻し率の向上
balanced
または high_client_ops
プロファイルを使用するときにバックフィル速度を速くするには、次の手順に従います。
- バックフィルの間、'high_recovery_ops' mClock プロファイルに切り替えます。これを実現するには、mClock プロファイルの変更 を参照してください。バックフィルフェーズが完了したら、mClock プロファイルを以前にアクティブだったプロファイルに切り替えます。'high_recovery_ops' プロファイルを使用してもバックフィル率に大幅な改善が見られない場合は、次のステップに進みます。
- mClock プロファイルを以前にアクティブだったプロファイルに戻します。
-
'osd_max_backfills' をより高い値 (たとえば、
3)
に変更します。これを実現するには、バックフィルとリカバリーオプションの変更 を参照してください。 - バックフィルが完了したら、手順 3 で説明したのと同じ手順に従って、'osd_max_backfills' をデフォルト値の 1 にリセットできます。
osd_max_backfills
を変更すると、他の操作が発生する可能性があることに注意してください。たとえば、バックフィルフェーズ中にクライアント操作の遅延が長くなる可能性があります。したがって、クラスター内の他の操作へのパフォーマンスへの影響を最小限に抑えるために、osd_max_backfills
を少しずつ増やすことを推奨します。
10.6.6. backfills
および recovery
オプションの変更
ceph config set
コマンドを使用して、backfills
および recovery
オプションを変更します。
変更可能なバックフィルまたはリカバリーオプションは、mClock プロファイルのタイプ に一覧表示されています。
これは、上級ユーザー向け、または実験的なテスト用のセクションです。予期しない結果が生じる可能性があるため、実行中のストレージクラスターでは以下のコマンドを使用しないでください。
実験的なテスト場合、クラスターが値を処理できない場合、またはデフォルト設定でパフォーマンスが低下する場合にのみ値を変更してください。
mClock のデフォルトのバックフィルまたはリカバリーオプションの変更は、osd_mclock_override_recovery_settings
オプションによって制限され、デフォルトで false
に設定されています。
osd_mclock_override_recovery_settings
を true
に設定せずにデフォルトのバックフィルまたはリカバリーオプションを変更しようとすると、オプションは mClock のデフォルトにリセットされ、クラスターログに警告メッセージが記録されます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ceph Monitor ホストへの root レベルのアクセス。
手順
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
すべての Ceph OSD で
osd_mclock_override_recovery_settings
設定オプションをtrue
に設定します。例
[ceph: root@host01 /]# ceph config set osd osd_mclock_override_recovery_settings true
backfills
またはrecovery
オプションを設定します。構文
ceph config set osd OPTION VALUE
例
[ceph: root@host01 /]# ceph config set osd osd_max_backfills_ 5
数秒待ってから、特定の OSD の設定を確認します。
構文
ceph config show osd.OSD_ID_ | grep OPTION
例
[ceph: root@host01 /]# ceph config show osd.0 | grep osd_max_backfills
すべての OSD で
osd_mclock_override_recovery_settings
設定オプションをfalse
にリセットします。例
[ceph: root@host01 /]# ceph config set osd osd_mclock_override_recovery_settings false