---
title: 'Ad Alanları ve Kotalar'
source: 'https://academia.sh/tr/kurslar/orkestrasyon/ad-alanlari-ve-kotalar'
course: 'Konteyner Orkestrasyonu'
language: tr
updated: '2026-08-17T18:09:08+00:00'
license: 'CC BY-SA 4.0'
---

# Ad Alanları ve Kotalar

Çok kiracılı kaynak ayrımının sayılarla kurulması: üç kiracı bir kümeyi paylaşırken kota olmadan bir kiracının ötekileri aç bıraktığı ölçülür, kota konunca reddedilen istek sayısı ile kotanın boşta bıraktığı kapasite karşılaştırılır ve bildirimsiz kapsüllere uygulanan varsayılan istek değerinin kabul, fazla ayırma ve düğüm baskısı üzerindeki etkisi taranır.

Gecelik iş küme nesnesi hâline geldi ve on iki dilimi bir anda açabiliyor. Buraya kadar ölçülen her
sayı tek bir uygulamanın kendi hesabındaydı; kümenin başkalarına da ait olduğu hiç hesaba
katılmadı. Aynı altı düğümde iki uygulama daha koşuyor ve üçünün nesneleri aynı adlandırma uzayında,
aynı kaynak havuzunda duruyor.

**Ad alanı** bu uzayı bölen nesnedir. Sözcük tanıdıktır: çalışma zamanı ölçümlerinde `ad alanı`,
çekirdeğin bir sürece hangi süreçleri, hangi ağı ve hangi dosya sistemini gösterdiğini belirleyen
**görünürlük eşlemesiydi**; burada aynı sözcük, kümedeki nesne adlarını ve kaynak muhasebesini
bölen bir **bölmeyi** anlatıyor — biri bir sürecin gördüğünü kısar, öteki bir kiracının adlandırma
ve kaynak uzayını ayırır. İkisi farklı katmanlarda, farklı nesnelerdir.

Ad alanı tek başına yalnız adları ayırır; kaynağı ayırmaz. Kaynağı ayıran nesne **kota**dır. Bu ders
devredilen kararı şöyle adlandırıyor: **bir isteğin kabul edilip edilmeyeceği**. Karar bir insandan
kümeye geçtiğinde kümenin istek başına üç kalem bilmesi gerekiyor — hangi kiracı, ne kadar istiyor,
gerçekte ne kadar kullanıyor. Üçüncü kalem hiçbir bildirimde yoktur; ancak ölçümle gelir ve bu
dersin bütün sapması oradan çıkıyor.

## Üç Kiracı, Bir Küme

Ölçülen üç durum aynı istek dizisini kullanıyor: kota yok, kota var, kota var ve bildirimsiz
kapsüllere varsayılan uygulanıyor. Dizinin sırası değişmiyor, çünkü sıranın kendisi ölçülen
şeylerden biri.

- **TN49** — Küme kapasitesi, kiracılar, istek dizisi ve kota muhasebesi `node` içinde kurulan bir
  modeldir; gerçek bir küme koşturulmuyor.
- **TN50** — Küme 96 işlemci birimidir (6 düğüm × 16). Tek boyut ölçülüyor; bellek aynı aritmetikle
  işlediği için ayrıca sayılmıyor.
- **TN51** — Üç kiracı kurgudur: ölçüm ağı, saha servisi, raporlama. Altmış istek geliyor;
  11.–30. istekler ölçüm ağının gecelik patlamasıdır, ötekiler dönüşümlü.
- **TN52** — İstek büyüklükleri kiracıya göre üreteçten geliyor: ölçüm ağı 1–6, saha servisi 1–4,
  raporlama 1–2 birim.
- **TN53** — İsteklerin yaklaşık üçte biri kaynak isteği bildirmiyor. Gerçek kullanım, bildirilen
  değerin 0,4–1,1 katıdır.
- **TN54** — Kota muhasebesi **bildirilen** isteğe bakar, gerçek kullanıma değil. Tohum `20260819`.

```js
// olcum/kota.mjs — uc kiracinin bir kumeyi paylasmasi: kotasiz, kotali ve varsayilan istekli.
// MODEL: kume kapasitesi, kiracilar, istek dizisi ve kota muhasebesi node icinde kurulan modeldir;
// gercek bir kume kosturulmuyor. Sayilar modelin sayilaridir.
const KAPASITE = 96, TOHUM = 20260819;                 // 6 dugum x 16 islemci birimi
const KIRACI = ["olcum-agi", "saha-servisi", "raporlama"];
let s = TOHUM % 2147483647;
const rast = () => (s = (s * 48271) % 2147483647) / 2147483647;

const ISTEK = [];                                       // sira: donusumlu -> patlama -> donusumlu
for (let i = 0; i < 60; i += 1) {
  const k = i >= 10 && i < 30 ? KIRACI[0] : KIRACI[i % 3];
  const iste = 1 + Math.floor(rast() * (k === "raporlama" ? 2 : k === "saha-servisi" ? 4 : 6));
  ISTEK.push({ k, iste, bildirdi: rast() >= 0.3, gercek: Math.max(1, Math.round(iste * (0.4 + rast() * 0.7))) });
}
const say = (f) => KIRACI.map((k) => ISTEK.filter((i) => i.k === k && f(i)).length);

// --- 1. kota yok: ilk gelen alir ---
let kalan = KAPASITE;
const kabul = new Set();
for (const [n, i] of ISTEK.entries()) if (i.iste <= kalan) { kalan -= i.iste; kabul.add(n); }
console.log(`${"kiraci".padEnd(14)}${"gelen istek".padStart(12)}${"kabul".padStart(7)}${"red".padStart(6)}` +
  `${"kabul orani".padStart(13)}${"tuketilen".padStart(11)}${"kume payi".padStart(11)}`);
for (const k of KIRACI) {
  const g = ISTEK.filter((i) => i.k === k), a = g.filter((i) => kabul.has(ISTEK.indexOf(i)));
  const t = a.reduce((x, i) => x + i.iste, 0);
  console.log(`${k.padEnd(14)}${String(g.length).padStart(12)}${String(a.length).padStart(7)}${String(g.length - a.length).padStart(6)}` +
    `${`%${Math.round(a.length / g.length * 100)}`.padStart(13)}${String(t).padStart(11)}${`%${Math.round(t / KAPASITE * 100)}`.padStart(11)}`);
}
console.log(`kotasiz: ${kabul.size} istek kabul, ${ISTEK.length - kabul.size} red, bosta kalan kapasite ${kalan}`);

// --- 2. kota: iki dagitim ---
function kotali(kota, varsayilan = null) {
  const kullanim = Object.fromEntries(KIRACI.map((k) => [k, 0]));
  const kabulK = Object.fromEntries(KIRACI.map((k) => [k, 0]));
  const kotaRed = Object.fromEntries(KIRACI.map((k) => [k, 0]));
  let bos = KAPASITE, gercek = 0, yazilan = 0, baski = 0;
  for (const i of ISTEK) {
    const yaz = i.bildirdi ? i.iste : (varsayilan === null ? i.iste : varsayilan);
    if (kullanim[i.k] + yaz > kota[i.k] || yaz > bos) { kotaRed[i.k] += 1; continue; }
    kullanim[i.k] += yaz; bos -= yaz; kabulK[i.k] += 1;
    yazilan += yaz; gercek += i.gercek; if (i.gercek > yaz) baski += 1;
  }
  return { kullanim, kabulK, kotaRed, bos, gercek, yazilan, baski };
}
const DAGITIM = { esit: { "olcum-agi": 32, "saha-servisi": 32, raporlama: 32 },
  agirlikli: { "olcum-agi": 48, "saha-servisi": 32, raporlama: 16 } };
console.log(`\n${"dagitim".padEnd(11)}${"kiraci".padEnd(14)}${"kota".padStart(6)}${"kabul".padStart(7)}${"kota reddi".padStart(12)}` +
  `${"kullanilan".padStart(12)}${"kotanin bos kalani".padStart(20)}`);
for (const [ad, kota] of Object.entries(DAGITIM)) {
  const r = kotali(kota);
  for (const k of KIRACI)
    console.log(`${ad.padEnd(11)}${k.padEnd(14)}${String(kota[k]).padStart(6)}${String(r.kabulK[k]).padStart(7)}` +
      `${String(r.kotaRed[k]).padStart(12)}${String(r.kullanim[k]).padStart(12)}${String(kota[k] - r.kullanim[k]).padStart(20)}`);
  const toplamRed = KIRACI.reduce((a, k) => a + r.kotaRed[k], 0);
  console.log(`  -> ${ad}: kabul ${ISTEK.length - toplamRed}, red ${toplamRed}, kumede bosta kalan kapasite ${r.bos} ` +
    `(kotalarin toplami ${Object.values(kota).reduce((a, b) => a + b, 0)})`);
}

// --- 3. varsayilan istek degeri ---
console.log(`\n${"varsayilan istek".padEnd(17)}${"kabul".padStart(7)}${"kotaya yazilan".padStart(16)}${"gercek kullanim".padStart(17)}` +
  `${"fazla ayirma".padStart(14)}${"dugum baskisi".padStart(15)}${"bosta kapasite".padStart(16)}`);
for (const v of [0, 1, 2, 4, null]) {
  const r = kotali(DAGITIM.agirlikli, v);
  const kabulT = KIRACI.reduce((a, k) => a + r.kabulK[k], 0);
  console.log(`${(v === null ? "bildirimi zorunlu" : String(v)).padEnd(17)}${String(kabulT).padStart(7)}${String(r.yazilan).padStart(16)}` +
    `${String(r.gercek).padStart(17)}${String(r.yazilan - r.gercek).padStart(14)}${String(r.baski).padStart(15)}${String(r.bos).padStart(16)}`);
}
console.log(`${ISTEK.length} istek, ${say((i) => !i.bildirdi).reduce((a, b) => a + b, 0)} tanesi istek bildirmiyor`);
console.log(`bilgi kalemi: istek basina 3 (kiraci, istek, gercek kullanim) = ${ISTEK.length * 3}, tohum ${TOHUM}`);
```

```
kiraci         gelen istek  kabul   red  kabul orani  tuketilen  kume payi
olcum-agi               34     26     8          %76         77        %80
saha-servisi            13      5     8          %38         13        %14
raporlama               13      4     9          %31          6         %6
kotasiz: 35 istek kabul, 25 red, bosta kalan kapasite 0

dagitim    kiraci          kota  kabul  kota reddi  kullanilan  kotanin bos kalani
esit       olcum-agi         32     13          21          32                   0
esit       saha-servisi      32     12           1          30                   2
esit       raporlama         32     13           0          21                  11
  -> esit: kabul 38, red 22, kumede bosta kalan kapasite 13 (kotalarin toplami 96)
agirlikli  olcum-agi         48     17          17          48                   0
agirlikli  saha-servisi      32     12           1          30                   2
agirlikli  raporlama         16     10           3          16                   0
  -> agirlikli: kabul 39, red 21, kumede bosta kalan kapasite 2 (kotalarin toplami 96)

varsayilan istek   kabul  kotaya yazilan  gercek kullanim  fazla ayirma  dugum baskisi  bosta kapasite
0                     53              79               92           -13             22              17
1                     47              88               77            11             11               8
2                     41              94               67            27              2               2
4                     32              96               52            44              0               0
bildirimi zorunlu     39              94               64            30              0               2
60 istek, 22 tanesi istek bildirmiyor
bilgi kalemi: istek basina 3 (kiraci, istek, gercek kullanim) = 180, tohum 20260819
```

## Kota Yokken: Aç Kalan Kiracı

Kotasız kümede kural tek satırdır: yer varsa kabul et. Sonuç ilk tabloda.

Ölçüm ağı 34 istek gönderdi, **26'sı kabul edildi** — kabul oranı %76 — ve kümenin **%80'ini**
tuttu. Saha servisi 13 istekten 5'ini geçirebildi (%38), raporlama 13 istekten 4'ünü (%31).
Raporlamanın küme payı **%6**. Küme boş kalmadı; kapasite tamamen tükendi ve 25 istek reddedildi.

Aç kalmanın nedeni istek büyüklüğü değil, **sıra**. Ölçüm ağının gecelik patlaması 11. istekten
30. isteğe kadar kesintisiz akıyor ve o aralıkta kapasitenin çoğunu tüketiyor; sonra gelen küçük
raporlama istekleri artığa talip oluyor. Raporlamanın istekleri en küçük olanlar (1–2 birim) ve
yine de en düşük kabul oranını alıyor. Yani kotasız paylaşımda pay, ihtiyaca ya da kibarlığa değil,
**zamanlamaya** göre dağılıyor. Bir kiracının kendi kapsül sayısını artırması ötekinin istekleri
üzerinde doğrudan bir etkidir ve bu etki hiçbir yerde bildirilmez.

Reddedilen 25 isteğin ne olduğu da ayrıca söylenmelidir. İstek reddedilmiyor, **bekliyor**: kapsül
nesnesi bildirilmiş durumda, yalnız hiçbir düğümde yeri yok. Raporlamanın kullanıcısı bunu bir
hata olarak görmez, yavaşlık olarak görür ve nedenini kendi ad alanında arar. Kotasız paylaşımın en
pahalı yanı budur — bir kiracının sorunu başka bir kiracının davranışından doğuyor ve iki tarafın da
göremediği bir yerde duruyor.

Ad alanı bu tabloyu değiştirmez. Üç kiracının nesneleri ayrı ad alanlarında dursa da aynı 96 birimi
paylaşırlar; ad alanı yalnız `gecelik-is` adının üç kez kullanılabilmesini ve yetkinin bölme
başına verilebilmesini sağlar. Kaynak ayrımı için ikinci bir nesne gerekiyor.

## Kota Konunca: İki Bedel

İkinci tablo kotanın ne satın aldığını ve karşılığında ne ödettiğini birlikte gösteriyor.

**Eşit dağıtımda** (32/32/32) ölçüm ağı kotasına çarpıyor: **21 kota reddi** alıyor ve 32 birimde
duruyor. Karşılığında raporlama 13 isteğinin hepsini geçiriyor, tek bir ret bile almıyor. Aç kalma
bitti. Bedel son sütunda: raporlama kotasının **11 birimini hiç kullanmıyor** ve küme genelinde
**13 birim boşta** kalıyor. Ölçüm ağının 21 isteği reddedilirken kümede 13 birim boş duruyor —
kotanın israfı tam olarak budur. Toplam kabul kotasız durumdaki 35'ten 38'e çıkıyor, yani kota
verimi düşürmedi; ama boşta kalan kapasite sıfırdan 13'e çıktı.

**Ağırlıklı dağıtımda** (48/32/16) israf düşüyor: boşta kalan kapasite 2 birim, toplam kabul 39.
Ölçüm ağının reddi 21'den 17'ye iniyor. Bedel yer değiştirdi — raporlama artık 3 ret alıyor.
Ağırlık, talebin bilinmesini gerektiriyor; bu dağıtım ancak kim ne kadar isteyeceği önceden
ölçüldüğü için doğru. Talep değişirse — örneğin raporlama aylık kapanışta büyürse — aynı dağıtım
ters yönde israf üretir.

Kotanın saydığı kalem yalnız işlemci değildir. Aynı muhasebe bellek için, kalıcı birim talebinin
toplam boyutu için ve nesne sayıları için ayrı ayrı tutulabilir — bir ad alanında en fazla kaç
servis nesnesi, kaç sır nesnesi, kaç kalıcı birim talebi bulunabileceği gibi. Sayı kalemleri işlemci
kaleminden farklı bir şeyi korur: kapasiteyi değil, denetim düzleminin kendi yükünü. Bir kiracının
binlerce sır nesnesi bildirmesi hiçbir düğümü doldurmaz ama durum deposunu ve uzlaşma döngüsünü
doldurur. Ölçülen tablo tek kalemi izliyor; ötekiler aynı aritmetikle işler.

İki satır birlikte okunduğunda kotanın gerçek doğası görünüyor: kota bir **kapasite ayırma** değil,
bir **üst sınır**dır. Kullanılmayan kota kimseye geçmez; boşta kalan 13 birim ölçüm ağına
açılmıyor, öylece duruyor. Devredilen karar burada kısmen geri alınmıştır: küme "bu isteği kabul et"
kararını verir, ama "kim ne kadar alacak" kararını hâlâ kotayı yazan insan verir ve o insan gelecek
haftanın talebini bilmez.

## Varsayılan İstek Değeri

Üçüncü tablo, kota muhasebesinin dayandığı sayının nereden geldiğini soruyor. Altmış isteğin
**22'si** kaynak isteği bildirmiyor. Kota bir sayı görmek zorunda, o yüzden bildirimsiz kapsüllere
bir varsayılan uygulanıyor.

Burada iki ayrı sayı vardır ve karıştırılmamalıdır. **Kaynak isteği** muhasebe ve yerleştirme
sayısıdır: kota onu toplar, zamanlayıcı düğümde o kadar yer arar. **Sınır** koşum anında dayatılan
tavandır; kapsül onu aşamaz. Kota her ikisini ayrı ayrı sayabilir ve ikisi için ayrı varsayılan
tanımlanabilir. Aşağıdaki tarama istek varsayılanını değiştiriyor, çünkü kabul kararını belirleyen
sayı odur; sınır varsayılanının etkisi başka bir yerde görünür — sınır düşük konursa kapsül
kotadan geçer, düğümde yer bulur, sonra kendi tavanına çarpar ve iş yavaşlar ya da sonlanır. İkisi
birlikte düşünülmediğinde kota tablosu temiz görünürken uygulama tarafında açıklanamayan
sonlanmalar birikir.

Varsayılan **0** iken bu kapsüller kotadan hiçbir şey yemiyor: kabul 53'e fırlıyor, kotaya yazılan
toplam 79'da kalıyor ve küme kendini 17 birim boşta sanıyor. Gerçek kullanım ise **92** — yani
bildirilenden 13 birim fazla, ve 22 kapsül bildirdiğinden çoğunu kullanıyor. Küme muhasebe
defterinde rahat, düğümlerde ise baskı altındadır. Bu, kotanın en tehlikeli ayarıdır: kural
uygulanıyor görünür, uygulanmaz.

Varsayılan büyüdükçe tablo ters yöne dönüyor. **2** birimde düğüm baskısı 2'ye, **4** birimde
**0**'a iniyor; kabul 53'ten 32'ye düşüyor ve fazla ayırma 44 birime çıkıyor — kotaya yazılan 96
birimin 44'ü hiç kullanılmıyor. Güvenlik satın alındı, karşılığında kümenin neredeyse yarısı kâğıt
üzerinde harcandı.

Son satır üçüncü yolu veriyor: bildirimi zorunlu kılmak. Kabul 39, fazla ayırma 30, düğüm baskısı
**0**, boşta kapasite 2. Sabit bir varsayılanın hiçbir değeri bunu birden yakalayamıyor, çünkü
varsayılan tek sayıdır ve 22 kapsülün gerçek ihtiyacı tek sayı değildir. Bildirimi zorunlu kılmanın
bedeli ise küme tarafında değil, bildirimi yazan tarafta ödenir.

Konunun devir bilançosu şudur: kabul kararı istek başına üç kaleme dayanıyor — hangi kiracı, ne
kadar istiyor, gerçekte ne kadar kullanıyor; altmış istek için **180 kalem**. İlk iki kalem
bildirimden gelir ve ucuzdur; üçüncüsü yalnız ölçümle gelir ve kota onu hiç görmez. Sistem gerçek
kullanımı bilmediği için ya fazla ayırıp kapasiteyi boşa harcıyor ya da az ayırıp düğümü baskı
altına sokuyor.

## Özet

- Ad alanı ile kota ayrı işler yapar: ad alanı adları ve yetkiyi böler, kaynağı bölmez; kaynağı
  bölen nesne kotadır.
- Kotasız kümede pay ihtiyaca değil sıraya göre dağılıyor: ölçüm ağı %76 kabul oranıyla kümenin
  %80'ini alırken raporlama %31 kabul oranıyla %6'sında kalıyor ve 25 istek reddediliyor.
- Kota aç kalmayı bitiriyor ama iki bedel ödetiyor: eşit dağıtımda ölçüm ağı 21 kota reddi alırken
  raporlama kotasının 11 birimi ve kümenin 13 birimi boşta duruyor.
- Ağırlıklı dağıtım israfı 13'ten 2 birime indiriyor, karşılığında reddi raporlamaya kaydırıyor;
  doğruluğu talebin önceden bilinmesine bağlıdır.
- Kullanılmayan kota kimseye geçmez: kota bir kapasite ayırma değil üst sınırdır.
- Varsayılan istek 0 iken küme kendini 17 birim boşta sanırken gerçek kullanım 92 ve 22 kapsül düğüm
  baskısı yaratıyor; varsayılan 4 iken baskı sıfırlanıyor ama 44 birim fazla ayrılıyor. Bildirimi
  zorunlu kılmak baskıyı 0'a indirip israfı 30'da tutuyor.

## Sonraki Adım

Konu boyunca nesneler tek tek bildirildi: en küçük dağıtım birimi, kopya kümesi ve sürüm nesnesi,
servis nesnesi ve giriş kuralı, yapılandırma ve sır nesnesi, kalıcı birim talebi, sıralı küme, iş
nesnesi ve zamanlanmış iş, ad alanı ve kota. Hepsinin ortak bir eksiği var ve bu ders onu son
tabloyla açığa çıkardı: bildirimlerde **istek** var, kotalarda **üst sınır** var, ama hiçbir yerde
"bu kapsül hangi düğümde açılacak" yazmıyor. Kota bir isteği kabul ettiğinde iş bitmiyor; kabul
edilen kapsülün altı düğümden birine yerleşmesi gerekiyor ve o düğümde gerçekten yer bulunması
gerekiyor. Depolama ölçümü bu sorunun yarısını çoktan gösterdi: tek düğüm yazar kipindeki bir birim
otuz altı seçenekten yirmi altısını eledi. Peki kalan seçenekler arasından seçimi yapan nedir, karar
verirken hangi bilgiye bakar, bakması gereken bilgi eskimişse ne olur ve hiçbir seçenek uymadığında
kapsül nerede bekler? Sonraki konu bu kararı bir kısıt çözücü olarak yazıp yerleştirme kararını,
çözümsüz kalma sayısını ve ölçekleme kararının kendi gecikmesini ölçüyor.
