به گزارش از وبسایت cncf

بر اساس گزارش آژانس بین‌المللی انرژی «Energy and Artificial Intelligence» منتشرشده در 2025، مراکز داده در سال 2024 حدود 1.5٪ از تقاضای برق جهان را مصرف کرده‌اند و پیش‌بینی می‌شود این مقدار تا 2030 تقریباً دو برابر شود و به حدود 945 تراوات‌ساعت برسد؛ بخشی از این رشد ناشی از افزایش سریع بارهای کاری هوش مصنوعی است. Kepler برای پرداختن به این چالش طراحی شده است: از power meters سخت‌افزاری می‌خواند، مصرف انرژی را به فرآیندهای لینوکس نسبت می‌دهد، آن را به Pods در خوشه Kubernetes مرتبط می‌کند و معیارها را به صورت Prometheus صادر می‌کند. ⚡

از زمان پیوستن Kepler به CNCF به‌عنوان یک پروژه sandbox در 2023، پذیرش آن رشد قابل توجهی یافته است. با این حال، معماری اولیه به eBPF متکی بود که در کنار مزایا، چند مشکل کلیدی نیز ایجاد می‌کرد: نیاز به امتیازهای CAP_BPF و CAP_SYSADMIN که در بسیاری از محیط‌های تولید مانع‌ساز است؛ و همچنین ناپایداری و نادقت هنگام ردیابی فرآیندهای ریزدانه در سطح هسته که می‌تواند به داده‌های نادرست و گلوگاه در مدل‌های تخمین توان منجر شود.

علاوه بر مسائل امتیازدهی و دقت، وابستگی به eBPF منحنی یادگیری و نگهداری را پیچیده کرده بود. تیم نگهداری تصمیم گرفت برای آسان‌تر شدن پیکربندی و استقرار، کاهش خطاها و ساده‌تر کردن گسترش کد، Kepler را بازنویسی کند. در این مطلب تغییرات انجام‌شده، دلایل آن و راه‌های مشارکت را تشریح می‌کنیم.

معماری بازنویسی‌شده Kepler بر دو عنصر کلیدی تکیه دارد: سیگنال استفاده از فرآیندهای لینوکس در کانتینر و دسترسی به power meters. مستندات Power Attribution توضیح می‌دهد چگونه Kepler مصرف انرژی را به پردازش‌ها، Pods و سایر اجزای داخلی Kubernetes نسبت می‌دهد. پیش از بازنویسی، Kepler برای گرفتن سیگنال‌ها از eBPF استفاده می‌کرد که منبع بخش اعظم گزارش‌های کاربران بود و باعث از دست رفتن اطلاعات فرآیندهای کوتاه‌مدت می‌شد و در نتیجه مصرف انرژی ثبت‌نشده ایجاد می‌کرد.

برای اولویت دادن به سهولت پذیرش و بهبود دقت، Kepler از eBPF فاصله گرفت و به اصول پایه بازگشت. پیاده‌سازی جدید از خواندن فقط‌خواندنی استانداردهای /proc و /sys استفاده می‌کند که به‌طور گسترده روی سیستم‌های لینوکسی در دسترس هستند و نیاز به امتیازات کمتر و تنظیمات حداقلی دارند. با حذف نیاز به پیکربندی پیچیده، استقرار Kepler اکنون با یک Helm chart ساده‌تر «out of the box» انجام می‌شود.

در زمینه معیارهای توان، نسخه قدیمی Kepler از یک ساختار قدرت کدگذاری‌شده استفاده می‌کرد (مثلاً RAPL تقسیم‌بندی‌های هسته، DRAM و غیره). اما با توجه به تنوع توپولوژی‌های سخت‌افزاری واقعی، آن طراحی قدیمی می‌توانست داده‌ها را به یک «حقیقت زمینی» نادرست نسبت دهد. Kepler بازسازی‌شده به‌صورت پویا ساختار power meters میزبان را در زمان اجرا کشف می‌کند و از این طریق با چیدمان سخت‌افزاری زیرساخت تطبیق می‌یابد؛ درنتیجه معیارهای دقیق‌تری در محیط‌های مختلف گزارش می‌دهد.

برای اعتبارسنجی بهبود دقت دو آزمایش انجام شد. آزمایش اول، به رهبری Laura Linaras (CERN)، نسخه پیش از بازنویسی و نسخه بازنویسی‌شده را هم‌زمان روی یک گره فلزی اجرا کرد. تنظیمات شامل kepler-old که معیارها را با پیشوند old_ منتشر می‌کرد و kepler-new که معیارهای جدید و تمیز منتشر می‌کرد. از IPMI از طریق BMC به‌عنوان خوانش کنتور برق سخت‌افزاری استفاده شد و انرژی CPU در سطح Node و در سطح کانتینر مقایسه گردید.

هر دو نسخه Kepler دامنه RAPL بسته CPU را می‌خوانند، اما نسخه جدید علاوه بر شمارنده‌های ژول مانند kepler_node_cpu_joules_total و kepler_container_cpu_joules_total، توان را نیز به‌صورت kepler_node_cpu_watts گزارش می‌دهد. در داشبوردهای Grafana از PromQL و تابع rate() برای استخراج وات از شمارنده‌های ژول قدیمی استفاده شد تا همه سری‌ها روی واحد یکسان قرار گیرند. Kepler جدید الگوهای IPMI را بهتر دنبال می‌کند و اوج‌های غیرواقعی که با شمارنده‌های قدیمی node_pkg_joules و full_node_joules دیده می‌شد را حذف می‌کند. (پانل‌های داشبورد (به گزارش از وبسایت cncf))

در مورد مرجع، IPMI خوانش انرژی کل گره از BMC است و شامل تلفات DRAM، فن‌ها، NIC و PSU به‌علاوه CPU می‌شود؛ بنابراین انتظار می‌رود مقادیر Kepler بین حدود 40–70٪ مقادیر IPMI باشد. از آنجا که IPMI کل گره را اندازه‌گیری می‌کند و Kepler عمدتاً CPU را اندازه‌گیری می‌کند، IPMI به‌عنوان مرجع شکل بار استفاده شد. زمانی که بار کاری افزایش می‌یابد، IPMI و نسخه‌های Kepler باید هم‌راستا بالا بروند که در آزمایش مشاهده شد.

آزمایش دوم، توسط Vimal Kumar (Red Hat)، شکاف انتساب توان را هنگام مقایسه توان گره با توان حاصل از مدل انتساب فرآیند بررسی کرد. این تست از بار کاری پیشرونده استرس استفاده می‌کرد و پانل‌های Grafana نشان دادند که شکاف انتساب عملاً نزدیک به 0 وات است که نشان‌دهنده دقت طراحی جدید در انتساب مصرف برق در سطح فرآیند است. (پانل‌های داشبورد (به گزارش از وبسایت cncf))

علاوه بر بازنویسی، تیم تست‌های واحد گسترده و یکپارچه‌سازی را اضافه کرد تا پوشش آزمایشی را تا حدود 90٪ برساند و نگهداری بلندمدت و اعتماد به نتایج صادرشده را افزایش دهد. این پروژه به بهبود بیشتر چارچوب آزمایش و اعتبارسنجی برای ارتقای دقت ادامه خواهد داد.

چه قدم بعدی است؟ اولویت‌های فوری تیم عبارت‌اند از بهبود انتساب قدرت CPU در محیط فلز خالی و سپس گسترش آن به ماشین‌های مجازی (VM). گرفتن این بخش به‌درستی کلید باز کردن راه برای توسعه‌های آینده است.

ما به مشارکت جامعه در سه حوزه خاص دعوت می‌کنیم:

– آزمایش نظارت بر توان GPU: یک flag آزمایشی برای نظارت بر توان GPU وجود دارد که برای بارهای سنگین AI/ML و شتاب‌دهنده‌ها حیاتی است. ما از کاربران نهایی می‌خواهیم بارهای AI/ML خود را اجرا کنند و عملکرد این ویژگی را آزمایش و ارزیابی کنند. 🧠

– آموزش مدل‌های قدرت برای VM: از اعضای جامعه با تجربه در یادگیری ماشین دعوت می‌کنیم مدلی را برای تخمین قدرت در محیط‌های مجازی‌سازی‌شده آموزش دهند، جایی که شمارنده‌های سخت‌افزاری در دسترس نیستند. این گامی مهم برای پر کردن فاصله بین VMها و سیگنال‌های انرژی فیزیکی است.

– اعتبارسنجی دقت داده‌ها: ما به کاربران نهایی نیاز داریم Kepler را در برابر اندازه‌گیری‌های فیزیکی قدرت (IPMI یا power meters خارجی) آزمایش کنند؛ هم برای انتساب CPU در فلز خالی و هم برای نظارت بر توان GPU. نتایج شما نقشی مستقیم در بهبود مدل‌ها خواهد داشت. 🔬

موضوع دیگر بهبود Attribution Idle Power است: پس از بازنویسی، Kepler تنها استفاده فعال CPU را به هر بار کاری تخصیص می‌دهد که این تخمین ساده گاهی توان را بیش از حد ساده‌سازی می‌کند. این رفتار برای جلوگیری از سردرگمی در حالت‌های بیکار و پویا افزوده شد، اما نیاز است که بازتعریف و بهبود یابد تا تخمین‌ها دقیق‌تر و شفاف‌تر شوند.

برای آزمایش Kepler می‌توانید آن را با Helm یا Kepler Operator نصب کنید و معیارها را با داشبوردهای Grafana بررسی کنید. اگر تمایل به مشارکت دارید، issues موجود را مرور کنید، یک issue جدید باز کنید یا PR بفرستید. برای ویژگی‌ها و تغییرات بزرگ‌تر، فرآیند پیشنهادی به سمت enhancement proposals حرکت کرده است تا بحث و بررسی طراحی‌ها و همکاری قبل از پیاده‌سازی تسهیل شود.

بازنویسی پایه‌ای محکم برای Kepler فراهم کرده و مسیر بعدی به میزان زیادی به جامعه‌ای بستگی دارد که روی آن ساخته می‌شود. برای ادامه همکاری در جلسات دوهفته‌ای انجمن و در کانال پروژه #kepler در CNCF Slack شرکت کنید تا شتاب توسعه را حفظ کنیم! 💚