ماشینحساب تعداد PG
در کتاب: فصل ۷
آزمایشگاه
ماشینحساب تعداد PG
تعداد OSDها و سهم هر pool از داده را بدهید: پاسخ pgcalc کلاسیک و انتخاب pg_autoscaler را گذر به گذر ببینید.
۴۸۰۰نسخههای PG مجاز برای root
۲۰۰نسخهٔ PG به ازای هر OSD (پیشنهادی)
۱۴٫۱نسخهٔ PG به ازای هر OSD (فعلی)
| Pool | size | pgcalc کلاسیک | ایدهآل (نسخههای 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: 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های یک rootmodule.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 به ازای هر OSDsrc/common/options/global.yaml.in :: mon_max_pg_per_osd (500), osd_pool_default_pg_num (32)سقف و کمینهٔ pg_num