---
title: 'Denetim Grupları'
source: 'https://academia.sh/tr/kurslar/cekirdek-arayuzleri/denetim-gruplari'
course: 'Çekirdek Arayüzleri ve İzolasyon'
language: tr
updated: '2026-08-17T18:09:58+00:00'
license: 'CC BY-SA 4.0'
---

# Denetim Grupları

Denetim grubu kaynak ekseninin dört olgusundan üçünü kapatıyor ve işlemci sayısını açık bırakıyor; altı düzenekli demette görünen olgu 15'ten 12'ye iniyor, açık eksen yine 7'de duruyor.

Önceki ders beş ad alanının görünürlüğü daralttığını, tüketimi hiç sınırlamadığını yazdı. Kaynak
ekseninin dört olgusu — işlemci payı, bellek sınırı, kullanılan bellek ve işlemci sayısı — beş
ad alanı açıldıktan sonra da olduğu gibi duruyordu. Ad alanı bir görünürlük süzgecidir ve
görünürlük tüketimi durdurmaz: kendi süreç tablosunu gören bir süreç, makinenin bütün
işlemcisini yine de meşgul edebilir.

Bu ders o ekseni kapatan düzeneği ele alır ve Sistem Yönetimi kursunun bıraktığı borcun ikinci
yarısını öder. Servis yöneticisi dersinde birim, yöneticinin defterindeki bir kayıttı ve
kaynak muhasebesinin çekirdek tarafı açıkça bu kursa bırakılmıştı. Soru yine aynı: denetim
grubu kaynak eksenini kapatıyor mu, yoksa geriye bir şey mi bırakıyor.

## Ağaç, Denetleyici ve İki İş

Denetim grubu bir **süreç öbeğidir** ve öbekler bir ağaç oluşturur. Ağacın her düğümü bir
dizindir; bir sürecin numarası bir düğümün üye dosyasına yazıldığında süreç o gruba geçer ve
çocukları grubu devralır. Bir süreç aynı anda tek bir grupta bulunur; grup değiştirmek bir
yazma işlemidir ve süreç çalışırken yapılabilir.

Ağacın üzerinde **denetleyiciler** çalışır: işlemci, bellek, girdi/çıktı, süreç sayısı gibi
kaynak türlerinin her biri ayrı bir denetleyicidir. Bir denetleyici bir düğümde etkinleştirilir
ve o düğümün altındaki bütün alt ağaç için geçerli olur. Üstteki bir düğümde etkin olmayan bir
denetleyici altta da etkinleştirilemez; bu kural, ağacın bir bölümünü başka bir yöneticiye
yetki devriyi güvenli kılan şeydir.

Her denetleyici iki ayrı iş yapar ve ikisi karıştırıldığında yanlış beklenti üretir.
**Sınırlandırma** bir tavan ya da bir ağırlık koyar: tavan aşılamaz, ağırlık ise rekabet
hâlinde payı belirler. **Muhasebe** ise hiçbir şeyi sınırlamaz, yalnız sayar — kullanılan
bellek, harcanan işlemci zamanı, beklemede geçen süre. Bir grupta muhasebe açık olup hiçbir
sınır konmamış olabilir; bu durumda grup bir ölçüm birimidir, bir kısıt değil.

Denetim grubu ağacındaki yol, sürecin kendisi tarafından okunabilir. Bu yolu gizleyen ayrı bir
ad alanı türü vardır ve önceki derste adlandırılıp geçilmişti: denetim grubu ad alanı, sürecin
gördüğü yolun kökünü kendi grubuna kaydırır. Yolun gizlenmesi sınırın gizlenmesi demek
değildir; sınır dosyaları yine okunur.

```text
# ornek dokum — calistirilmamistir; yollar ve degerler kurgudur
$ cat /sys/fs/cgroup/olcum.slice/cgroup.controllers
cpu io memory pids
$ cat /sys/fs/cgroup/olcum.slice/cpu.max
20000 100000
$ cat /sys/fs/cgroup/olcum.slice/memory.max
536870912
$ cat /sys/fs/cgroup/olcum.slice/memory.current
331350016
$ nproc
8
```

Dökümdeki ilk sayı çifti bir kotadır: yüz bin birimlik pencerede yirmi bin birim, yani
**0,2 işlemci**. Son satır ise makinenin işlemci sayısını veriyor. İki satır aynı makinede,
aynı süreç için doğrudur ve birbirini yalanlamaz; yalnız aynı soruya iki ayrı yanıt verirler.
Bu dersin ölçtüğü şey tam olarak bu iki satır arasındaki açıktır. Döküm çalıştırılmamıştır ve
buradan hiçbir sayı iddiası çıkarılmaz.

## Süreç Başına Kısıttan Farkı

Sistem Yönetimi kursunda süreç başına kaynak sınırları ölçüldü: yumuşak ve katı değerler,
çatallanmada devralma ve çalışan bir sürecin sınırının kabuktan değiştirilememesi. O ders
burada tekrarlanmaz, ama iki mekanizmanın farkı yazılmadan denetim grubu anlaşılmaz.

Süreç başına sınır **tek bir sürecin** tavanıdır. Aynı sınıra sahip yüz süreç, makineyi yüz kat
tüketebilir; sınır hiçbirini aşmadan makine biter. Denetim grubu ise **öbeğin toplamına**
bakar: gruptaki süreç sayısı ne olursa olsun toplam tüketim tavanla karşılaştırılır. İkinci
fark zamandadır. Süreç başına sınır çatallanma anında donar ve sonradan dışarıdan
değiştirilemez; denetim grubunun sınırı bir dosyaya yazılır ve süreç koşarken yürürlüğe girer.
Üçüncü fark muhasebedir: süreç başına sınırın bir sayacı yoktur, aşıldığında bir arıza üretir;
denetim grubu ise aşılmasa da sayar.

İki mekanizma birbirinin yerine geçmez, üst üste biner. Aynı süreç hem kendi tavanına hem de
grubunun tavanına tabidir ve hangisine önce çarptığı ikisinin değerine bağlıdır. Tanıda bu
üst üste binme bir tuzaktır: sürecin kendi sınır okuması grubun tavanını göstermez, grubun
sayacı da tek bir sürecin kendi tavanını göstermez. İki okuma ayrı yerlerdedir ve biri
ötekinin yerine geçmez.

- **IZ10** — Denetim grubu **kaynak eksenini** kapatan tek düzenektir; kaynak ekseninde
  **4 olgu** vardır.
- **IZ11** — Denetim grubu kaynak ekseninin **3 olgusunu** kapatır ve `islemci-sayisi`
  olgusunu **açık bırakır**.
- **IZ12** — Kapatmak, olgunun yok olması değil, sürecin gördüğü değerin **makinenin değeri
  olmaktan çıkıp grubun değeri olması** demektir.
- **IZ13** — Ölçüm süreç başına sınırları modellemez; Sistem Yönetimi kursunda ölçülen katman
  buraya taşınmaz.

```python
"""Ortak tanimin bu derste kullanilan parcasi: 24 olgu , 9 eksen ve
kaynak eksenini kapatan denetim grubu. Olculen sey ACIK KALAN YUZEY."""

OLGULAR = [
    ("oteki-sureclerin-listesi", "surec"), ("kendi-surec-numarasi", "surec"),
    ("ata-surec-zinciri", "surec"),
    ("kok-dosya-agaci", "takma"), ("oteki-takmalar", "takma"),
    ("paylasilan-gecici-dizin", "takma"),
    ("makine-arayuzleri", "ag"), ("makine-yonlendirme-tablosu", "ag"),
    ("dinleyen-baglanti-noktalari", "ag"),
    ("kullanici-kimlik-esleme", "kullanici"), ("dosya-sahipligi", "kullanici"),
    ("makine-adi", "makine"),
    ("islemci-payi", "kaynak"), ("bellek-siniri", "kaynak"),
    ("kullanilan-bellek", "kaynak"), ("islemci-sayisi", "kaynak"),
    ("cekirdek-surumu", "cekirdek"), ("cekirdek-ayarlari", "cekirdek"),
    ("sistem-yuku", "cekirdek"), ("saat", "cekirdek"),
    ("yetenek-kumesi", "yetki"), ("dosya-yetkileri", "yetki"),
    ("erisim-etiketi", "etiket"), ("politika-kurallari", "etiket"),
]
DUZENEK = {
    "surec-ad-alani":     {"eksen": "surec", "acik_kalan": ["kendi-surec-numarasi"]},
    "takma-ad-alani":     {"eksen": "takma", "acik_kalan": ["kok-dosya-agaci"]},
    "ag-ad-alani":        {"eksen": "ag", "acik_kalan": []},
    "kullanici-ad-alani": {"eksen": "kullanici", "acik_kalan": ["dosya-sahipligi"]},
    "makine-ad-alani":    {"eksen": "makine", "acik_kalan": []},
    "denetim-grubu":      {"eksen": "kaynak", "acik_kalan": ["islemci-sayisi"]},
}
BES = ["surec-ad-alani", "takma-ad-alani", "ag-ad-alani",
       "kullanici-ad-alani", "makine-ad-alani"]


def gorunen(duzenekler, olgular=None):
    olgular = OLGULAR if olgular is None else olgular
    kapali = set()
    for d in duzenekler:
        v = DUZENEK[d]
        kapali |= {o for o, e in olgular if e == v["eksen"]}
        kapali -= set(v["acik_kalan"])
    return [o for o, _ in olgular if o not in kapali]


def acik_eksen(duzenekler, olgular=None):
    olgular = OLGULAR if olgular is None else olgular
    g = set(gorunen(duzenekler, olgular))
    return sorted({e for o, e in olgular if o in g})


kaynak = [o for o, e in OLGULAR if e == "kaynak"]
acik = set(gorunen(["denetim-grubu"]))
print("KAHIN  olgu:", len(OLGULAR), "| eksen:", len({e for _, e in OLGULAR}))
print("kaynak ekseninde", len(kaynak), "olgu")
print()
print("olgu                 denetim grubu")
for o in kaynak:
    print(f"  {o:20s} {'ACIK BIRAKIR' if o in acik else 'kapatir'}")
print()
g = gorunen(["denetim-grubu"])
print("denetim grubu tek basina: kapatti", len(OLGULAR) - len(g),
      "| acik kalan 1 | gorunen", len(g),
      "| acik eksen", len(acik_eksen(["denetim-grubu"])))
```

```
KAHIN  olgu: 24 | eksen: 9
kaynak ekseninde 4 olgu

olgu                 denetim grubu
  islemci-payi         kapatir
  bellek-siniri        kapatir
  kullanilan-bellek    kapatir
  islemci-sayisi       ACIK BIRAKIR

denetim grubu tek basina: kapatti 3 | acik kalan 1 | gorunen 21 | acik eksen 9
```

Üç sayı yan yana duruyor. **Kâhin:** 24 olgu, 9 eksen; kaynak ekseninde 4 olgu. **İzolasyon:**
denetim grubu tek başına **3 olgu** kapatıyor. **Açık kalan yüzey:** **21 olgu** ve **9 eksen** —
tek düzenek hiçbir ekseni listeden düşürmüyor, çünkü kaynak ekseninde bir olgu ayakta kalıyor.

## Açık Kalan Olgu: İşlemci Sayısı

Kapanan üç olgu grubun kendi ölçüleriyle yer değiştiriyor. Süreç işlemci payını sorduğunda
grubun kotasını, bellek sınırını sorduğunda grubun tavanını, kullanılan belleği sorduğunda
grubun sayacını görüyor. Dördüncüsünde bu ikame yok: **makinenin işlemci sayısı olduğu gibi
görünüyor.** Kotası 0,2 işlemci olan bir süreç, sekiz işlemcili bir makinede sekiz yanıtını
alır.

Bunun bedeli soyut değildir. Çalışma zamanlarının çoğu, iş parçacığı havuzunu, koşut çalışan
işçi sayısını, çöp toplayıcı iş parçacığı sayısını ve bağlantı havuzu boyunu **başlangıçta bir
kez**, makinenin işlemci sayısına bakarak seçer. Kotanın kırk katı büyüklükte bir havuz açan
süreç daha hızlı çalışmaz; çizelgeleyici ona yine 0,2 işlemcilik pay verir ve fazladan iş
parçacıkları bekleme, bağlam değiştirme ve bellek olarak ödenir. Arıza da sessizdir: hiçbir
sınır aşılmaz, hiçbir hata iletisi çıkmaz, yalnız gecikme büyür.

Daraltma yolu üç adımdır ve üçü de bu dersteki tabloya doğrudan karşılık gelir. Birincisi,
boyutlandırma kararının kaynağını değiştirmektir: makinenin işlemci sayısı yerine grubun
kotası okunur; kota dosyası zaten sürecin görebildiği bir yerdedir. İkincisi, kotayı sürece
açık bir değer olarak geçirmektir — çalışma zamanı bir ayar okuyabiliyorsa, koşut çalışan işçi
sayısı yapılandırmadan verilir ve tahmine bırakılmaz. Üçüncüsü, kotayla birlikte bir de
**işlemci kümesi** kısıtı koymaktır: sürecin koşabileceği işlemciler daraltıldığında görünen
sayı da daralır ve iki yanıt birbirine yaklaşır. Üçü de olguyu tümüyle kapatmaz; açık yüzeyi
bir olgudan bir **yanlış hesaba** indirmeyi bırakır.

## Sınırı Kim Yazar

Denetim grubu dosyalarına elle yazmak nadiren doğru yoldur, çünkü ağacı yöneten başka bir taraf
vardır. Servis yöneticisi her birim için bir düğüm açar, birimleri dilimlere toplar ve birim
dosyasındaki kaynak ayarlarını bu düğümlerin dosyalarına çevirir. Elle yazılan bir değer,
yönetici ağacı yeniden kurduğunda kaybolur; kalıcı olan yer birim tanımıdır.

```text
# ornek birim dosyasi parcasi — calistirilmamistir
[Service]
CPUQuota=20%
AllowedCPUs=2-3
MemoryMax=512M
MemoryAccounting=yes
TasksMax=64
```

Parçadaki ilk iki satır bu dersin ölçtüğü açığa doğrudan dokunur: birincisi kotayı yazar,
ikincisi sürecin koşabileceği işlemcileri daraltır. Dördüncü satır ise yalnız muhasebeyi açar
ve hiçbir şeyi sınırlamaz. Ayarların adları ve yazımı servis yöneticisine göre değişir; burada
gösterilen biçim değil, **ayrımdır**: sınır koyan satır ile yalnız sayan satır ayrı satırlardır.

Ağacın bir dalı başka bir yöneticiye **devredilebilir**. Devretme, o dalın altındaki düğümleri
açma ve süreç taşıma yetkisini vermek demektir; devralan taraf kendi alt ağacını istediği gibi
böler ama üstteki tavanın üzerine çıkamaz. Bir konteyner çalışma zamanının çalışma biçimi tam
budur ve beşinci derste ölçülür. Devretmenin sınırı da yazılmalıdır: devredilen dalda açılan
düğüm sayısı ve o düğümlere taşınan süreç sayısı üstten sınırlanmazsa, tavan tutulurken ağaç
büyümeye devam eder.

Muhasebenin kendisi bu kursun ikinci konusuna bakan bir yüzdür. Denetim grubu kapattığı üç
olgunun yerine grubun kendi ölçülerini koyar ve bu ölçüler **okunabilir** dosyalardır: grubun
harcadığı işlemci zamanı, o an tuttuğu bellek, tavana kaç kez dayandığı. Bu, izolasyonun bir
kusuru değil, işletmenin gereğidir — sınırın tutup tutmadığı ancak sayılarak bilinir. Ama aynı
sayılar içerideki süreç tarafından da okunur ve grubun yükü hakkında bilgi taşır. Kursun ikinci
konusu bu türden okuma yollarını **gözlem kanalı** olarak ele alır ve her birinin izolasyonu ne
kadar deldiğini sayar.

Bellek tavanına dayanıldığında verilen karar da grubun içinde kalır: çekirdek, tavanı aşan
grubun **kendi** süreçlerinden birini seçer. Sistem Yönetimi kursunda ölçülen makine geneli
bellek tükenmesinden farkı budur ve tanıda önemlidir — grubun içindeki bir ölüm, makinenin
belleğinin tükendiği anlamına gelmez. Grup sınırlarının toplamı makinenin belleğinden büyük
konabildiği için iki durum aynı makinede ayrı ayrı görülebilir.

## Büyüyen Demet ve Olgu Kümesi Süpürmesi

Kurs boyunca aynı süreç üzerinde düzenek eklenir ve yüzeyin nasıl daraldığı sayılır. Önceki
ders beş ad alanıyla bitmişti; bu ders altıncı düzeneği ekler. Süpürme yine olgu kümesi
üzerinde yapılır, çünkü modelde rastgelelik ve ikinci tohum yoktur.

- **IZ14** — Eklenen olgu `girdi-cikti-payi`, kaynak eksenine aittir ve denetim grubunun açık
  bıraktıklarında değildir.
- **IZ15** — Çıkarılan `islemci-sayisi`, kaynak ekseninin açık kalan tek olgusudur.
- **IZ16** — Demet sırası bağlayıcıdır: beş ad alanı, sonra denetim grubu.

```python
# --- Onceki blogun uzerine kurulur: OLGULAR, DUZENEK, BES, gorunen, acik_eksen.
DEMET = BES + ["denetim-grubu"]
print("kurs boyunca buyuyen demet")
print("asama                      duzenek  gorunen  acik eksen")
for ad, d in (("bes ad alani", BES), ("+denetim grubu", DEMET)):
    print(f"  {ad:24s} {len(d):7d}  {len(gorunen(d)):7d}  {len(acik_eksen(d)):10d}")
print()
EK = OLGULAR + [("girdi-cikti-payi", "kaynak")]
EKSIK = [(o, e) for o, e in OLGULAR if o != "islemci-sayisi"]
print("olgu kumesi supurmesi (alti duzenek uygulanmis halde)")
print("kume                       olgu  eksen  gorunen  acik eksen  kaynak acik")
for ad, kume in (("temel", OLGULAR), ("+girdi-cikti-payi", EK),
                 ("-islemci-sayisi", EKSIK)):
    g = gorunen(DEMET, kume)
    e = acik_eksen(DEMET, kume)
    ka = sum(1 for o, ek in kume if ek == "kaynak" and o in set(g))
    print(f"  {ad:24s} {len(kume):4d}  {len({x for _, x in kume}):5d}"
          f"  {len(g):7d}  {len(e):10d}  {ka:11d}")
```

```
kurs boyunca buyuyen demet
asama                      duzenek  gorunen  acik eksen
  bes ad alani                   5       15           7
  +denetim grubu                 6       12           7

olgu kumesi supurmesi (alti duzenek uygulanmis halde)
kume                       olgu  eksen  gorunen  acik eksen  kaynak acik
  temel                      24      9       12           7            1
  +girdi-cikti-payi          25      9       12           7            1
  -islemci-sayisi            23      9       11           6            0
```

Birinci tablo kursun ikinci iddiasının ilk ödemesidir. Altıncı düzenek görünen olguyu 15'ten
**12'ye** indiriyor — üç olguluk bir kazanç — ama **açık eksen 7'de kalıyor**. Kaynak ekseni
kapanmadı, yalnız inceldi. Düzenek eklemek olguyu azaltıyor, ekseni azaltmıyor.

Süpürme aynı örüntüyü doğruluyor. Kaynak eksenine yirmi beşinci olgu eklendiğinde denetim
grubu onu da kapatıyor ve açık yüzey 12'de kalıyor: kapalı bir eksene olgu eklemek yüzeyi
büyütmüyor. Buna karşılık açık kalan tek olgu listeden çıkarıldığında eksen tamamen kapanıyor,
görünen olgu **11'e**, açık eksen **6'ya** iniyor. Ölçünün duyarlı olduğu yer yine aynı: açık
yüzeyi belirleyen şey eksendeki olgu sayısı değil, **hangi olgunun açık kaldığıdır.**

Modeldeki bütün sayılar kurgu üzerinden tam sayımdır; bir makinede yapılmış ölçüm değildir.
Kaynak ekseninin gerçek bir sistemde kaç olgu taşıdığı, hangi denetleyicilerin etkin olduğuna
ve süreç dosya sisteminin nasıl takıldığına göre değişir.

## Özet

- Denetim grubu bir süreç öbeğidir; öbekler ağaç oluşturur, üzerlerinde denetleyiciler çalışır
  ve her denetleyici iki ayrı iş yapar: **sınırlandırma** ve **muhasebe**.
- Süreç başına kaynak sınırından üç noktada ayrılır: **öbeğin toplamına** bakar, süreç
  koşarken **değiştirilebilir** ve aşılmasa da **sayar**.
- Kaynak ekseninde **4 olgu** vardır; denetim grubu **3'ünü** kapatır, `islemci-sayisi`
  olgusunu **açık bırakır** ve tek başına 24 olgudan **21'ini** görünür bırakır.
- Açık kalan olgu somut bir yanlış hesap üretir: kotası bir işlemcinin beşte biri olan süreç
  makinenin işlemci sayısını görür ve havuzlarını ona göre boyutlandırır. Daraltma yolu kotayı
  okumak, koşut işçi sayısını yapılandırmadan vermek ve işlemci kümesini daraltmaktır.
- Altı düzenekli demette görünen olgu **15'ten 12'ye** iner, **açık eksen 7'de durur**;
  süpürmede açık kalan tek olgu çıkarıldığında eksen kapanır ve yüzey **11'e** düşer.

## Sonraki Adım

Kaynak ekseni inceldi, ama sürecin ne yapabileceği hâlâ ölçülmedi. Görünürlüğü daraltmak ve
tüketimi sınırlamak, bir sürecin çekirdekten **hangi ayrıcalıklı işlemi** isteyebileceğini
belirlemez: aynı grup içindeki bir süreç ağ yapılandırmasını değiştirmeye, takma noktası
açmaya ya da başka bir kullanıcının dosyasına dokunmaya kalkışabilir. Sonraki ders süper
kullanıcı yetkisinin ayrı ayrı verilebilen parçalara bölünmesini ele alır, yetenek kümelerini ve
kırpmayı ölçer ve yetenek ekseninin iki olgusundan yalnız birinin kapandığını sayar. Açık kalan
olgu dosya yetkileridir ve nedeni beklenmediktir: süreçten kırpılan yetenek, dosyanın üzerinde
yazılı olanı değiştirmez.
