راهنمای جامع Ceph
Englishشروع کنید

ماشین‌حساب تعداد PG

در کتاب: فصل ۷

آزمایشگاه

ماشین‌حساب تعداد PG

تعداد OSDها و سهم هر pool از داده را بدهید: پاسخ pgcalc کلاسیک و انتخاب pg_autoscaler را گذر به گذر ببینید.

۴۸۰۰نسخه‌های PG مجاز برای root
۲۰۰نسخهٔ PG به ازای هر OSD (پیشنهادی)
۱۴٫۱نسخهٔ PG به ازای هر OSD (فعلی)
Poolsizepgcalc کلاسیکایده‌آل (نسخه‌های PG)autoscalerتغییر می‌کند؟
rbd۳۹۳۵ → ۱۰۲۴۲۳۰۴۱۰۲۴ (bulk برابر)بله: ۳۲ ← ۱۰۲۴
cephfs.data۶۳۱۲ → ۲۵۶۲۳۰۴۲۵۶ (bulk برابر)بله: ۳۲ ← ۲۵۶
cephfs.meta۳۴۲ → ۳۲۹۶۳۲ (غیر bulk)نه
.mgr۳۸ → ۸۰۳۲ (غیر bulk)بله: ۱ ← ۳۲
pgcalc: pg = pow2( target × OSDs × share / size ), next power up if the nearest is > 25% below
autoscaler: root budget = mon_target_pg_per_osd × OSDs = 200 × 24 = 4800; pool = ⌊capacity_ratio × pg_left⌋ / size, rounded down or up to a power of two by a knapsack over the budget; min pg_num_min (32); changes only past the threshold (3×; 1× at 512/1024, 2× at 2048)

autoscaler برای poolی که مدیریت می‌کند هیچ‌وقت زیر ۳۲ PG (osd_pool_default_pg_num) نمی‌رود و اگر bulk روشن نباشد کوچک شروع می‌کند و با داده بزرگ می‌شود.

مطابق با:

  • src/pybind/mgr/pg_autoscaler/module.py :: _get_pool_status, _calculate_final_pool_pg_target چهار گذر روی poolهای یک root
  • module.py :: PoolGroup, _find_optimal_pg_distribution, _append_result گرد کردن گروه‌های pool درون بودجه
  • module.py :: nearest_power_of_two, get_dynamic_threshold توان ۲ و آستانهٔ تغییر
  • src/osd/OSDMap.cc :: pool_raw_used_rate فضای خام به ازای هر بایت (size یا (k+m)/k)
  • src/common/options/mgr.yaml.in :: mon_target_pg_per_osd (200) هدف نسخه‌های PG به ازای هر OSD
  • src/common/options/global.yaml.in :: mon_max_pg_per_osd (500), osd_pool_default_pg_num (32) سقف و کمینهٔ pg_num
تصویری ثابت از شبیه‌ساز؛ نسخهٔ تعاملی در آزمایشگاه نسخهٔ وب است. آزمایشگاه تعاملی: ماشین‌حساب تعداد PG