İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • DevOps
  • cgroup v1 CPU Shares’ten v2 CPU Weight’e Yeni Dönüşüm
Bulut Altyapı DevOps Konteyner & Kubernetes cgroup v2, cpu shares, cpu weight, Kubernetes, OCI runtime Aşkın KILIÇ 27/07/2026 3 Yorumlar

cgroup v1 CPU Shares’ten v2 CPU Weight’e Yeni Dönüşüm

cgroup v1 CPU Shares'ten v2 CPU Weight'e Yeni Dönüşüm
📑 İçindekiler
  1. Arka plan: shares'ten weight'e geçiş
  2. Eski formülün iki temel sorunu
  3. 1. Kubernetes dışı iş yüklerine karşı düşen öncelik
  4. 2. Yönetilemeyen granülerlik
  5. Yeni dönüşüm formülü
  6. Sorunları nasıl çözüyor?
  7. Uyumluluk ve OCI runtime tarafı
  8. Mevcut kurulumlara etkisi
  9. İlgili İçerikler
  10. Kaynaklar ve İleri Okuma
⏱️ 4 dk okuma📅 27 Temmuz 2026

Kubernetes ekosisteminde cgroup v2’ye geçiş sürecinde uzun süredir tartışılan bir sorun çözüme kavuştu: cgroup v1 CPU shares değerlerinin cgroup v2 CPU weight değerine dönüştürülmesi için yeni bir formül devreye alındı. Bu değişiklik, cgroup v2 altında çalışan Kubernetes iş yüklerinin CPU önceliklendirmesinde yaşanan bozulmaları gidermeyi ve sub-cgroup düzeyinde daha ince ayarlı kaynak dağılımına imkân tanımayı hedefliyor.

Arka plan: shares’ten weight’e geçiş

Kubernetes ilk tasarlandığında cgroup v1 esas alınmıştı. Bu modelde bir konteynerin CPU shares değeri, CPU request değerinden şu formülle türetiliyordu:

cpu.shares = milliCPU × 1024 / 1000

Buradaki 1024, cgroup v1’de cpu.shares için varsayılan değerdir ve millicore ile doğrudan bir ilişkisi yoktur. Örneğin 1 CPU (1000m) isteyen bir konteyner 1024 shares, 100m isteyen bir konteyner ise 102 shares alıyordu.

cgroup v2’ye geçişle birlikte CPU shares kavramının yerini CPU weight aldı. Shares değeri 2 ile 262144 (yani 2¹ – 2¹⁸) arasında değişirken, weight değeri 1 ile 10000 (10⁰ – 10⁴) aralığında tanımlıdır. KEP-2254 kapsamında bu iki aralık arasında şu doğrusal dönüşüm formülü kullanılıyordu:

cpu.weight = 1 + ((cpu.shares - 2) × 9999) / 262142

Formül basit olsa da doğrusal eşleme, hem performans hem de yapılandırma inceliği açısından önemli sorunlara yol açıyordu.

Eski formülün iki temel sorunu

1. Kubernetes dışı iş yüklerine karşı düşen öncelik

cgroup v1’de cpu.shares için varsayılan değer 1024’tür. Bu, 1 CPU isteyen bir konteynerin Kubernetes kapsamı dışında çalışan sistem süreçleriyle eşit önceliğe sahip olması anlamına gelir. cgroup v2’de ise cpu.weight için varsayılan değer 100’dür; ancak eski formül 1 CPU (1000m) isteğini yalnızca yaklaşık 39 weight değerine dönüştürüyordu. Yani varsayılanın %40’ından bile azına.

Bunun pratik sonucu şudur: cgroup v2’ye geçildiğinde Kubernetes (veya OCI) iş yükleri, Kubernetes dışında çalışan sistem süreçlerine kıyasla fiilen düşük öncelikli hale geliyordu. Kaynak sıkışıklığı yaşanan ve pek çok sistem daemon’unun Kubernetes dışında çalıştığı kurulumlarda bu durum ciddi sonuçlar doğurabiliyordu.

2. Yönetilemeyen granülerlik

Eski formül, küçük CPU istekleri için oldukça düşük weight değerleri üretiyordu. Örneğin 100m CPU isteyen bir konteyner:

  • cgroup v1’de cpu.shares = 102
  • cgroup v2’de (eski formül) cpu.weight = 4

102 shares değeri, ana konteyner içinde sub-cgroup’lar oluşturup farklı süreç grupları için ince ayarlı öncelik atamaya yetiyordu. Ancak 4 weight değeri, alt gruplar arasında anlamlı bir dağılım yapmak için yeterince granüler değildir. Ayrıcalıksız konteynerler için yazılabilir cgroup’lara izin veren çalışmalar (bkz. KEP #5474) ilerledikçe bu konu daha da önemli hale geliyor.

Yeni dönüşüm formülü

Yeni formül eskisine göre daha karmaşık; ama cgroup v1 shares ile cgroup v2 weight arasında çok daha isabetli bir eşleme sağlıyor:

cpu.weight = ⌈10^(L²/612 + 125L/612 - 7/34)⌉, L = log2(cpu.shares)

Bu ikinci dereceden fonksiyon, üç kritik noktadan geçecek biçimde tasarlandı:

  • (2, 1): Her iki aralığın da minimum değerleri
  • (1024, 100): Her iki aralığın da varsayılan değerleri
  • (262144, 10000): Her iki aralığın da maksimum değerleri

Eğri “neredeyse doğrusal” görünse de bu üç kritik noktadan geçecek biçimde özenle şekillendirilmiştir.

Sorunları nasıl çözüyor?

Öncelik hizalaması: 1 CPU (1000m) isteyen bir konteyner artık cpu.weight = 102 alıyor. Bu değer, cgroup v2’nin varsayılan 100 değerine oldukça yakın olduğundan Kubernetes iş yükleri ile sistem süreçleri arasındaki beklenen öncelik ilişkisi yeniden kuruluyor.

Daha iyi granülerlik: 100m CPU isteyen bir konteyner artık cpu.weight = 17 alıyor. Bu değer, konteyner içinde ince ayarlı kaynak dağıtımı için çok daha kullanışlı bir taban sunuyor.

Uyumluluk ve OCI runtime tarafı

Bu değişikliğin önemli bir ayrıntısı, uygulamanın Kubernetes’in kendisinde değil OCI katmanında yapılmış olmasıdır. Dolayısıyla yeni formülün kullanıma girmesi tamamen OCI runtime’ın sürümüne bağlıdır:

  • runc: Yeni formül 1.3.2 sürümünden itibaren etkin.
  • crun: Yeni formül 1.23 sürümünden itibaren etkin.

Mevcut kurulumlara etkisi

Eski doğrusal formülü baz alan bazı araçlar bu değişiklikten etkilenebilir. Özellikle beklenen CPU weight değerlerini eski formüle göre hesaplayan uygulama ve izleme araçlarının güncellenmesi gerekebilir. Bu durum şu alanlarda daha kritiktir:

  • CPU weight değerlerini tahmin eden özel kaynak yönetim araçları
  • Belirli weight değerlerini doğrulayan izleme sistemleri
  • CPU weight değerlerini programatik olarak ayarlayan veya kontrol eden uygulamalar

Bir diğer önemli nokta: cpu.weight değerinden geri milliCPU değerine gitmek her zaman özgün değeri vermez. Bunun iki nedeni vardır. İlki, milliCPU’dan cpu.shares‘e dönüşümde tamsayı kesmesi olur (örneğin 100m, 102.4 değil 102 shares’e karşılık gelir). İkincisi ve daha belirleyici olanı, shares-to-weight eşlemesinin çoktan-bire olmasıdır: örneğin 90 ile 109 arasındaki tüm milliCPU değerleri aynı cpu.weight = 17 sonucunu üretir. Bu nedenle kesin CPU request değerine ihtiyaç duyan araçların, bu bilgiyi cgroup parametrelerinden türetmek yerine doğrudan pod spec’ten okuması önerilir.

Kubernetes projesi, OCI runtime yükseltmesi öncesinde yeni formülün mevcut araç zinciriyle uyumluluğunu üretim dışı ortamlarda test etmeyi tavsiye ediyor.

İlgili İçerikler

  • RDBMS’ten Cosmos DB’ye Geçiş: AI Asistanı Ne Kadar İşe Yarar?
  • PostgreSQL’de Yeni Dönem: Commit’ten Buluta Uzanan Yol
  • Ingress2Gateway 1.0: Ingress’ten Gateway API’ye Geçiş

Kaynaklar ve İleri Okuma

  • kubernetes.io
  • Kubernetes Blog: New Conversion from cgroup v1 CPU Shares to v2 CPU Weight
  • KEP-2254: cgroup v2
  • KEP #5474: Unprivileged konteynerler için yazılabilir cgroup’lar
  • Kubernetes Issue #131216 – teknik analiz ve tartışma
  • runc v1.3.2 sürüm notları
  • crun 1.23 sürüm notları
  • Kubernetes: Konteyner kaynak yönetimi dokümantasyonu
  • SIG Node topluluğu
  • Formül için Go Playground örneği
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

Azure DevOps Remote MCP Server Genel Kullanıma Açıldı
Azure DevOps Remote MCP Server Genel Kullanıma Açıldı5 Ağu 2026
Azure Cosmos DB Shell Public Preview: CLI'a AI Geldi
Azure Cosmos DB Shell Public Preview: CLI'a AI Geldi7 May 2026
GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı7 Nis 2026
.NET 11 Preview 7 Yayınlandı: Öne Çıkan Yenilikler
.NET 11 Preview 7 Yayınlandı: Öne Çıkan Yenilikler12 Ağu 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket cgroup v2 cpu shares cpu weight Kubernetes OCI runtime
Önceki yazı

Azure Cosmos DB’de Partition Key Değiştirme Yolları

Sonraki yazı

Dependabot’ta Bekleme Süresi: Neden Üç Gün?

İlginizi Çekebilir

Kubernetes v1.37 ile Node Lifecycle Conditions dönemi
Aşkın KILIÇ 0

Kubernetes v1.37 ile Node Lifecycle Conditions dönemi

10/09/2026
GitHub Advanced Security Deneme Erişimini Genişletti
Aşkın KILIÇ 0

GitHub Advanced Security Deneme Erişimini Genişletti

09/09/2026
Kubernetes v1.36’da Askıya Alınan Job Kaynakları Değişiyor
Aşkın KILIÇ 0

Kubernetes v1.36’da Askıya Alınan Job Kaynakları Değişiyor

09/09/2026

3 comments

comments user
Kaan T. 27/07/2026 07:06

Kubernetes cluster’ımızı geçen ay v2’ye taşıdık, cpu.shares dönüşümünde tam bu sorunu yaşadık. Peki bu yeni formül eski sistemlerden göç edenlere geriye dönük olarak uygulanıyor mu, yoksa sadece yeni kurulumlar için mi geçerli?

Yanıtla
comments user
Gamze E. 27/07/2026 14:27

Kubernetes kümelerini v2’ye taşırken cpu.shares değerlerinin doğrudan geçmediğini zor yoldan öğrendik, bu dönüşüm formülü epey işe yarayacak. Peki mevcut deployment’larda bu geçişi manuel mi yapmak gerekiyor yoksa otomatik bir yol var mı?

Yanıtla
comments user
Ayşe T. 27/07/2026 22:31

Kubernetes 1.31 ile cgroup v2 geçişini yaparken cpu.shares dönüşümünde beklenmedik davranışlar görmüştük, formülün değiştiğini bilmiyordum. Alt gruplarda öncelik hizalamasının düzelmiş olması özellikle multi-tenant cluster’larda çok fark yaratacak.

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Kubernetes v1.37 ile Node Lifecycle Conditions dönemi
    10/09/2026 Kubernetes v1.37 ile Node Lifecycle Conditions dönemi
  • GitHub Advanced Security Deneme Erişimini Genişletti
    09/09/2026 GitHub Advanced Security Deneme Erişimini Genişletti
  • Kubernetes v1.36’da Askıya Alınan Job Kaynakları Değişiyor
    09/09/2026 Kubernetes v1.36’da Askıya Alınan Job Kaynakları Değişiyor
  • OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor
    09/09/2026 OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor
  • .NET 11 RC1 Yayında: Öne Çıkan Yenilikler
    09/09/2026 .NET 11 RC1 Yayında: Öne Çıkan Yenilikler
  • Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
    11/04/2026 Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
    07/04/2026 GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
  • GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

SİZİN İÇİN DERLEDİK

Kubernetes v1.37 ile Node Lifecycle Conditions dönemi
DevOps Konteyner & Kubernetes

Kubernetes v1.37 ile Node Lifecycle Conditions dönemi

10/09/2026 Aşkın KILIÇ
GitHub Advanced Security Deneme Erişimini Genişletti
Bulut Altyapı Güvenlik & Kimlik

GitHub Advanced Security Deneme Erişimini Genişletti

09/09/2026 Aşkın KILIÇ
Kubernetes v1.36’da Askıya Alınan Job Kaynakları Değişiyor
DevOps Konteyner & Kubernetes Kurumsal Teknoloji

Kubernetes v1.36’da Askıya Alınan Job Kaynakları Değişiyor

09/09/2026 Aşkın KILIÇ
OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor
Bulut Altyapı Kurumsal Teknoloji Yapay Zeka

OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor

09/09/2026 Aşkın KILIÇ
.NET 11 RC1 Yayında: Öne Çıkan Yenilikler
Bulut Altyapı Geliştirici Araçları Yapay Zeka

.NET 11 RC1 Yayında: Öne Çıkan Yenilikler

09/09/2026 Aşkın KILIÇ
GitHub Copilot App ile Birden Fazla Agent Çalıştırma
Geliştirici Araçları Yapay Zeka

GitHub Copilot App ile Birden Fazla Agent Çalıştırma

08/09/2026 Aşkın KILIÇ
Kurumsal Yapay Zekâ Ajanlarında Context Engineering
Kurumsal Teknoloji Yapay Zeka

Kurumsal Yapay Zekâ Ajanlarında Context Engineering

08/09/2026 Aşkın KILIÇ
GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor
Bulut Altyapı Geliştirici Araçları

GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor

08/09/2026 Aşkın KILIÇ
Yapay Zekâ Güvenliği İçin Daha Güçlü Koruma Çağrısı
Güvenlik & Kimlik Yapay Zeka

Yapay Zekâ Güvenliği İçin Daha Güçlü Koruma Çağrısı

08/09/2026 Aşkın KILIÇ
Microsoft, hibrit fiziksel güvenliği Azure ile ölçekledi
Bulut Altyapı Güvenlik & Kimlik Microsoft Azure

Microsoft, hibrit fiziksel güvenliği Azure ile ölçekledi

07/09/2026 Aşkın KILIÇ
GitHub’dan Gizlilik Odaklı Yıldız Geçmişi API’si
Bulut Altyapı Geliştirici Araçları

GitHub’dan Gizlilik Odaklı Yıldız Geçmişi API’si

07/09/2026 Aşkın KILIÇ
GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı
Bulut Altyapı Yapay Zeka

GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı

07/09/2026 Aşkın KILIÇ

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps azure sdk Azure SQL bulut bilişim C++ CI/CD CodeQL code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Foundry otomasyon performans Pull Request RAG SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka yapay zeka ajanları Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 432 yazı 🏗️ Bulut Altyapı 345 yazı 🤖 Yapay Zeka 289 yazı 🔧 DevOps 242 yazı ☁️ Microsoft Azure 231 yazı 🔒 Güvenlik & Kimlik 199 yazı 🏢 Kurumsal Teknoloji 83 yazı 📊 Veri & Analitik 62 yazı 🐳 Konteyner & Kubernetes 53 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← Azure Cosmos DB’de Parti...
    Dependabot’ta Bekleme Sü... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS