memory_worker_correct_memory_tracker
memory_worker_decay_adjustment_period_ms
dirty_decay_ms في jemalloc. عندما يظل استخدام الذاكرة أعلى من عتبة التطهير طوال هذه المدة، يُعطَّل تلقائيًا اضمحلال الصفحات المتسخة (dirty_decay_ms=0) لاسترداد الذاكرة بشكل مكثف. وعندما يظل الاستخدام دون العتبة طوال هذه المدة، يُستعاد سلوك الاضمحلال الافتراضي. اضبطها على 0 لتعطيل الضبط الديناميكي واستخدام إعدادات الاضمحلال الافتراضية في jemalloc.
memory_worker_dynamic_hard_limit
(resident memory + system available memory) * max_server_memory_usage_to_ram_ratio، بحيث يترك الخادم هامشًا احتياطيًا للعمليات الأخرى التي تعمل على المضيف نفسه.
عند تعطيله، يقتصر max_server_memory_usage_to_ram_ratio على تقييد الحدّ الصارم للذاكرة بصورة ثابتة فقط، عند بدء التشغيل وعند إعادة تحميل الإعدادات، كما في الإصدارات السابقة.
لا يكون له أي تأثير عندما تكون قيمة max_server_memory_usage_to_ram_ratio هي 0.
memory_worker_period_ms
memory_worker_purge_dirty_pages_threshold_ratio
memory_worker_purge_total_memory_threshold_ratio
jemalloc مقارنةً بالذاكرة المتاحة لخادم ClickHouse. عندما يتجاوز إجمالي استخدام الذاكرة هذه النسبة، يفرض عامل الذاكرة في الخلفية تطهير الصفحات المتسخة. وإذا ضُبطت على 0، يتم تعطيل التطهير القسري المستند إلى إجمالي الذاكرة.
memory_worker_rss_speculative_reserve_ratio
MemoryWorker، احجز مقدارًا إضافيًا قدره
ratio * min(resident - previous_resident, resident - tracked) فوق
قيمة RSS المرصودة، على افتراض أن الـ tick التالية قد تزداد بالمقدار نفسه
الذي زادت به السابقة (resident - previous_resident هو مقدار زيادة RSS
خلال الـ tick السابقة). ويُحدَّد هذا النمو بالقيمة resident - tracked، وهي الجزء
من RSS غير المرئي لـ متعقّب الذاكرة العام، لأن النمو الذي جرى تتبعه بالفعل
تتعامل معه آلية التحقق العادية من الحد الصارم. ويُطبَّق هذا الحجز على عدّاد rss
الذي ترجع إليه آلية التحقق العامة من الحد الصارم عبر MemoryTracker::allocImpl،
لذا عندما تتجاوز القيمة المستقرأة max_server_memory_usage، فإن عمليات
التخصيص اللاحقة تُطلق MEMORY_LIMIT_EXCEEDED قبل أن يتدخل
OOM-killer في النواة. تؤدي القيمة 0 إلى تعطيل هذا الاستقراء (مع
الرجوع إلى rss = resident)؛ أما القيمة الافتراضية 1 فتحجز دلتا نمو
كاملة كهامش سعة إضافي للفاصل الزمني التالي. وعند استخدام أدوات
التنقية (ASan وUBSan وMSan وTSan)، تكون القيمة الافتراضية 0، لأن
الفجوة resident - tracked يغلب عليها الحمل الإضافي الناتج عن ذاكرة الظل / بيئة
التشغيل الخاصة بأدوات التنقية، لا تأخر تسجيل الحسابات في المتتبّع.