---
title: 'Başarım Sorunlarının İzi'
source: 'https://academia.sh/tr/kurslar/sistem-yonetimi/basarim-sorunlarinin-izi'
course: 'Sistem Yönetimi'
language: tr
updated: '2026-08-17T18:10:04+00:00'
license: 'CC BY-SA 4.0'
---

# Başarım Sorunlarının İzi

İşlemci, girdi/çıktı ve bellek darboğazlarının ayrılması: dört kat daha çok satır üreten bir görüntü 18 olayın yine 12'sinde yanılıyor, üç satırlık bir görüntü 2'ye iniyor ve aynı üç ölçünün okunma sırası kalan iki yanılgıyı da kaldırıyor.

Önceki ders bir makinenin durumunu tek sayılara indiren göstergeleri ele aldı ve
indirgemenin sıçramayı yediğini ölçtü. Orada kalan bir açık vardı: yük ortalaması işlemci
bekleyen süreçlerle diski bekleyen süreçleri **aynı sayının içinde** topluyordu. Bir makine
yavaşladığında sorulan soru tam olarak o toplamı ayırmayı gerektirir: yavaşlığın nedeni
işlemci mi, disk mi, bellek mi.

Bu ders üç darboğaz türünü ayırmayı ele alır. Beklenen çözüm daha ayrıntılı bir çıktıdır:
daha çok sütun, daha çok satır, daha ince ayrıntı. Ölçülen şey bu beklentinin doğru olup
olmadığıdır ve kursun ikinci iddiası burada ödenir: **daha çok çıktı daha iyi tanı demek
değildir.**

Beklentinin nereden geldiği de anlaşılırdır. Bir arıza karşısında elde olan tek denetim
düğmesi çoğunlukla ayrıntı düzeyidir: daha uzun liste, daha ince kırılım, daha sık
örnekleme. Bunların hepsi çıktıyı büyütür ve büyüyen çıktı, çabanın arttığı duygusunu verir.
Ölçü bu duyguyu sınar ve sonuç açıktır: çabanın yönü yanlışsa miktarı sonucu değiştirmez.

## Üç Darboğaz ve Ortak Belirtileri

Bir makinenin yavaşlaması üç mekanizmadan doğabilir ve üçü kullanıcıya aynı görünür.

**İşlemci darboğazında** çalıştırılabilir süreç sayısı işlemci sayısını aşar; süreçler
sıraya girer, her biri kendi payını bekler. İşlemci meşgul yüzdesi yüksektir ve bu yüksekliğin
karşılığı gerçek iştir.

**Girdi/çıktı darboğazında** süreçler işlemciyi değil diski bekler. Beklerken kesintisiz
bekleme durumundadırlar; işlemciyi tüketmezler ama sayılırlar. İşlemci tarafında görünen şey
**bekleme** payıdır: işlemci boştur, ama boş olmasının nedeni yapacak iş kalmaması değil,
verinin gelmemesidir. Meşguliyeti bekleme payını da içine katarak raporlayan bir görüntü,
bu durumu işlemci darboğazından ayıramaz.

**Bellek darboğazında** fiziksel bellek yetmez ve sayfalar takas alanına taşınır.
Buradaki tuzak iki katlıdır. Birincisi, takas hareketi kendisi bir disk işidir; yoğun takas
**girdi/çıktı beklemesi üretir** ve bellek darboğazı disk darboğazı gibi görünür. İkincisi,
bellek göstergeleri baskı anında değil, baskı geçtikten sonra da yüksek kalır: takasa çıkmış
sayfalar geri çağrılmadıkça orada durur.

Dördüncü bir olasılık daha vardır ve bu üçlünün dışında kalır: darboğaz makinenin kendisinde
değil, beklediği bir karşı tarafta olabilir. Bir ağ isteğini bekleyen süreç de yavaştır, ama
üç ölçünün hiçbirinde iz bırakmaz; işlemci boş, disk boş, bellek rahattır. Bu ders o durumu
ölçmez ve o durum, üç ölçünün "hepsi olağan" dediği hâlde makinenin yavaş olduğu tek
senaryodur. Ağ tarafındaki tanı bir sonraki kursun konusudur.

İşletim Sistemi Kavramları kursu sayfalı belleğin ve çizelgelemenin mekanizmasını kurdu;
burada tekrarlanmaz. Buradaki soru mekanizma değil, **operatörün hangi çıktıdan hangi
mekanizmayı okuyabildiğidir.** Aynı ayrım kursun açılışında kurulmuştu: bir soyutlamanın
bedelini ölçmekle, operatörün o soyutlamayı görüp göremediğini ölçmek iki ayrı iştir.

## Beş Görüntü

Ölçüde beş ayrı görüntü karşılaştırılıyor ve her biri farklı sayıda satır üretiyor.

**A — süreç listesi.** Yirmi dört satır, tek anlamlı sütun: süreç başına işlemci yüzdesi.
En yaygın ilk bakıştır.

**B — iplik ayrıntısı.** Aynı liste, iş parçacığı düzeyinde açılmış: doksan altı satır. Dört
kat daha çok çıktı, **aynı sütunlar**. Ayrıntı düzeyi yükselmiştir, ölçü kümesi değişmemiştir.

**C — A artı bekleme sütunu.** Yine yirmi dört satır, ama listeye süreç başına girdi/çıktı
bekleme payı eklenmiş. Satır sayısı A ile aynı, ölçü kümesi bir birim büyük.

**D — üç sistem ölçüsü.** Üç satır: işlemci meşguliyeti, bekleme payı, takas hareketi. Süreç
başına hiçbir ayrıntı yok.

**E — aynı üç ölçü, farklı okuma sırası.** D ile birebir aynı üç satır; tek fark, hangi
ölçünün önce sorulduğudur. D bekleme payına önce bakar, E takas hareketine.

Aşağıdaki döküm örnektir ve çalıştırılmamıştır; D görüntüsünün taşıdığı üç ölçüyü gösterir.

```text
# ornek dokum , calistirilmis degildir
$ vmstat 1 1
 r  b   takas    bos  ...  si  so  ...  us  sy  id  wa
 4  6  102400  81920  ...  38  44  ...  61  12   5  22
```

## Bu Üç Ölçü Nereden Okunur

Üç ölçünün her biri ayrı bir sayaçtan gelir ve hangi araçla okundukları ikincil bir
sorudur; önemli olan sayacın kendisidir.

**İşlemci meşguliyeti** çekirdeğin tuttuğu zaman kovalarından hesaplanır: kullanıcı kipinde
geçen süre, çekirdek kipinde geçen süre, boşta geçen süre ve bekleyerek geçen süre. Bu
kovalar açılıştan beri artan **birikimli** sayaçlardır; anlık yüzde, iki okuma arasındaki
farktan çıkar. Tek bir okuma açılıştan beri olan ortalamayı verir ve o ortalama, bir arıza
sırasında neredeyse hiçbir şey söylemez. Bu, önceki dersteki gecikme sorununun başka bir
biçimidir: sayacın kendisi gecikmez, ama tek okuma **her şeyi ortalar**.

**Bekleme payı** aynı kovalardan birinin adıdır ve tam olarak "işlemci boştaydı, ama en az
bir süreç diski bekliyordu" anlamına gelir. İki uyarı gerekir. Birincisi, bu bir süre
ölçüsüdür, bir kuyruk ölçüsü değil; kaç sürecin beklediğini söylemez. İkincisi, işlemci
gerçekten meşgulse bekleme payı **düşük okunur**, çünkü işlemcinin boş kaldığı zaman yoktur.
Yani işlemci ve disk aynı anda darboğaza girdiğinde bekleme payı sorunun büyüklüğünü
küçümser.

**Takas hareketi** iki yönlü sayılır: belleğe geri okunan sayfa ve diske yazılan sayfa.
Ayrım önemlidir. Diske yazma tek başına baskı kanıtı değildir; işletim sistemi uzun süredir
dokunulmamış sayfaları rahatken de dışarı taşıyabilir. Baskının kanıtı, sayfaların
**geri okunmasıdır**: kullanılan bir sayfa dışarı atıldı ve hemen geri istendi. Yalnız takas
alanının dolu görünmesine bakan bir tanı, geçmişte olmuş ve bitmiş bir baskıyı şimdiki
zamanda arar.

## Ölçülen Şey: Satır Sayısı mı, Ölçü Kümesi mi

Kurgunun varsayımları: on sekiz olay üretilir ve her olayın tek bir gerçek nedeni vardır
(**GN19**); üç ölçünün bantları nedenden türetilir (**GN20**); takas hareketi altmışın
üstüne çıktığında bellek baskısı girdi/çıktı beklemesi de üretir (**GN21**); görüntülerin
olay başına satır sayıları 24, 96, 24, 3 ve 3'tür (**GN22**); karar eşikleri işlemci için
60, bekleme için 25, takas için 20'dir (**GN23**).

Kâhin, kurguya yerleştirilen on sekiz olayın gerçek darboğaz nedenidir. Araç çıktısı, beş
görüntünün ürettiği satır sayısıdır. Tanı, her görüntünün kendi ölçülerinden çıkardığı
nedendir; yanlış tanı, gerçek nedenden farklı çıkan tanı sayısıdır.

```python
TOHUM = 20260218


def uretec(tohum):
    d = tohum

    def sonraki(n):
        nonlocal d
        d = (d * 1103515245 + 12345) % 2147483648
        return d % n
    return sonraki


NEDEN = ("islemci", "girdi-cikti", "bellek")


def darbogazlar(tohum=TOHUM, sayi=18):
    """GN19 KAHIN: her olayin tek gercek darbogazi. GN20: uc olcu nedenden
    turetiliyor. GN21: takas 60'i asinca bellek baskisi bekleme de uretir."""
    r = uretec(tohum)
    olay = []
    for i in range(sayi):
        n = NEDEN[r(3)]
        if n == "islemci":
            islemci, takas, bekleme = 78 + r(18), r(3), 2 + r(4)
        elif n == "girdi-cikti":
            islemci, takas, bekleme = 74 + r(20), r(3), 46 + r(28)
        else:
            islemci, takas = 52 + r(30), 34 + r(40)
            bekleme = 30 + r(20) if takas >= 60 else 6 + r(9)
        olay.append({"no": i + 1, "neden": n, "islemci": islemci,
                     "bekleme": bekleme, "takas": takas})
    return olay


def gorunum_a(o):
    """GN23 esikleri. Surec listesi , tek olcu: islemci yuzdesi."""
    return "islemci" if o["islemci"] >= 60 else "bellek"


def gorunum_c(o):
    """Ayni liste , bir sutun daha: bekleme."""
    if o["bekleme"] >= 25:
        return "girdi-cikti"
    return "islemci" if o["islemci"] >= 60 else "bellek"


def gorunum_d(o):
    """Uc sistem olcusu , bekleme once okunuyor."""
    if o["bekleme"] >= 25:
        return "girdi-cikti"
    return "bellek" if o["takas"] >= 20 else "islemci"


def gorunum_e(o):
    """Ayni uc olcu , takas once okunuyor."""
    if o["takas"] >= 20:
        return "bellek"
    return "girdi-cikti" if o["bekleme"] >= 25 else "islemci"


GORUNUM = (("A surec listesi", gorunum_a, 24),        # GN22: satir/olay
           ("B iplik ayrintisi", gorunum_a, 96),
           ("C A + bekleme sutunu", gorunum_c, 24),
           ("D uc sistem olcusu", gorunum_d, 3),
           ("E ayni uc olcu , takas once", gorunum_e, 3))

for tohum in (TOHUM, 20260219):
    O = darbogazlar(tohum)
    print("tohum", tohum, "| olay", len(O), "|",
          {n: sum(1 for o in O if o["neden"] == n) for n in NEDEN})
    print("  gorunum                       satir/olay  toplam satir  yanlis tani")
    for ad, f, satir in GORUNUM:
        y = sum(1 for o in O if f(o) != o["neden"])
        print(f"  {ad:28s} {satir:10d} {satir * len(O):13d} {y:12d}/{len(O)}")
```

```
tohum 20260218 | olay 18 | {'islemci': 4, 'girdi-cikti': 4, 'bellek': 10}
  gorunum                       satir/olay  toplam satir  yanlis tani
  A surec listesi                      24           432           12/18
  B iplik ayrintisi                    96          1728           12/18
  C A + bekleme sutunu                 24           432            8/18
  D uc sistem olcusu                    3            54            2/18
  E ayni uc olcu , takas once           3            54            0/18
tohum 20260219 | olay 18 | {'islemci': 7, 'girdi-cikti': 6, 'bellek': 5}
  gorunum                       satir/olay  toplam satir  yanlis tani
  A surec listesi                      24           432           11/18
  B iplik ayrintisi                    96          1728           11/18
  C A + bekleme sutunu                 24           432            5/18
  D uc sistem olcusu                    3            54            2/18
  E ayni uc olcu , takas once           3            54            0/18
```

## Çıktının Söylediği ile Sistemin Gerçeği

Üç sayı yan yana durur. **Kâhin:** on sekiz olayın dördü işlemci, dördü girdi/çıktı, onu
bellek kaynaklıdır. **Araç çıktısı:** görüntüler sırasıyla 432, 1728, 432, 54 ve 54 satır
üretiyor. **Yanlış tanı:** 12, 12, 8, 2 ve 0.

Birinci satır ile ikinci satır karşılaştırıldığında iddia ödenmiş olur. B görüntüsü A'nın
tam **dört katı** satır üretiyor — 432 yerine 1728 — ve yanlış tanı sayısı **hiç
değişmiyor**: on ikide kalıyor. Ayrıntı düzeyini yükseltmek okunacak metni büyüttü, tanıyı
zerre kadar düzeltmedi. Sebep açıktır: iş parçacığı kırılımı aynı ölçünün daha ince
dilimlenmiş hâlidir ve bir ölçünün daha ince dilimlenmesi, o ölçünün göremediği şeyi
göremez.

Üçüncü satır ayrımı yapan şeyi gösterir. C görüntüsü B'nin dörtte biri kadar satır üretir —
A ile aynı, 432 — ama yanlış tanı 12'den **8'e** iner. Kazancı sağlayan şey satır sayısı
değil, listeye eklenen **tek bir sütundur**: bekleme payı. Dört yanlış tanının düzelmesi,
girdi/çıktı darboğazlarının işlemci darboğazından ayrılabilmesinden gelir.

Dördüncü satır bunu uca taşır. D görüntüsü **54 satır** üretir; B'nin otuz ikide biri.
Yanlış tanı **2'ye** iner. Süreç başına hiçbir ayrıntı taşımayan üç satır, süreç başına
doksan altı satır taşıyan görüntüden altı kat daha iyi tanı verir. Ölçünün adı budur:
**ayıran şey satır sayısı değil, hangi ölçüye bakıldığıdır.**

C ile D arasındaki fark ayrıca ölçeğin yerini gösterir. C süreç başına bakar ve "hangi
süreç" sorusunu yanıtlayabilir; D sistem geneline bakar ve o soruyu yanıtlayamaz. Yine de
D daha az yanılır, çünkü sorulan soru "hangi süreç" değil "hangi kaynak" sorusudur. İki
soru sık sık birbirine karıştırılır: yavaşlığın kaynağını bulmadan en çok kaynak tüketen
süreci aramak, çoğu zaman **kurbanı** bulmakla sonuçlanır. Bellek baskısı altındaki bir
makinede en çok bekleyen süreç, baskıyı yaratan süreç değildir; en çok etkilenendir.

Görüntü seçiminin bir de sıra sonucu vardır. Doğru sıralama önce sistem geneline, sonra
sürece bakmaktır: D "bellek" der, ardından süreç listesi belleğe göre sıralanır ve suçlu
aranır. Ters sıralama — önce süreç listesi, sonra sistem ölçüsü — ölçüde A satırıyla
temsil ediliyor ve on sekiz olayın on ikisinde yanlış yola sapıyor.

## Kalan İki Yanılgı ve Okuma Sırası

Beşinci satır kalan payı ödüyor. E görüntüsü D ile **birebir aynı üç ölçüyü** taşır; tek
fark, hangisinin önce sorulduğudur. D bekleme payına önce bakar ve yüksek beklemeyi
gördüğünde "girdi/çıktı" der. E takas hareketine önce bakar ve yüksek takası gördüğünde
"bellek" der. Yanlış tanı D'de 2, E'de **0**.

Farkı üreten olaylar, takası altmışın üzerine çıkan bellek darboğazlarıdır. Orada takas
hareketinin kendisi disk işi yarattığı için bekleme payı da yükselir; iki ölçü aynı anda
yüksektir ve hangisinin önce okunduğu tanıyı belirler. Bekleme payı bir **sonuçtur**, takas
hareketi bir **nedendir**; sonucu önce okuyan sıralama nedeni gölgeler.

Buradan işletim tarafında bir kural çıkar: aynı anda yüksek okunan iki ölçü arasında
nedensel yön bilinmiyorsa, ölçü kümesini büyütmek yetmez. Yalnız üç sayıya bakan bir
operatör bile, yanlış sırayla bakarsa on sekiz olayın ikisinde yanılır. Ölçü kümesi
tanının **tavanını** belirler; okuma sırası o tavana ulaşıp ulaşılmayacağını belirler.

Sıralamanın hangi ölçüyle başlayacağına karar vermenin genel bir yolu vardır: zincirde
**en yukarıdaki** ölçü önce okunur. Takas hareketi bellek baskısının doğrudan sonucudur ve
başka bir nedenden doğmaz; bekleme payı ise hem disk yavaşlığından hem takastan hem de
sıradan bir toplu okumadan doğabilir. Birden çok nedeni olan bir ölçü, tek nedeni olan bir
ölçüden **sonra** okunur. Bu kural kurguya özgü değildir; birbirini besleyen göstergelerin
bulunduğu her ölçü kümesinde işler.

Karar ağacının bir maliyeti de vardır. Üç ölçüyü sabit bir sırayla okuyan bir yordam,
gerçekte iki darboğazın **aynı anda** bulunduğu durumu tek bir nedene indirger; ilk eşleşen
dalda durur ve ikinci nedeni hiç raporlamaz. Ölçüde bu görünmez, çünkü kurguda her olayın
tek bir gerçek nedeni vardır. Gerçek bir makinede tanının tek bir ada indirgenmesi, kendisi
bir yanlış tanı türüdür.

Ölçünün sınırı da açıkça yazılmalıdır. E'nin sıfırı kurgunun tam ayrılabilir olmasından
gelir; gerçek bir makinede üç ölçünün her olayı ayırması beklenmez. Anlamlı olan sıfır
değil, **12'den 0'a inen sıradır**: satır sayısını dört katına çıkarmak hiçbir şey
kazandırmadı, doğru ölçüyü eklemek dört yanılgı, ölçü kümesini daraltıp doğrultmak on
yanılgı, sıralamayı düzeltmek kalan iki yanılgıyı kaldırdı.

## İkinci Tohum

İkinci tohumda olayların dağılımı değişir: yedi işlemci, altı girdi/çıktı, beş bellek. A ve
B görüntüleri yine **birbirinin aynı** sayıyı verir — on birer yanlış tanı — ve satır sayısı
farkı yine hiçbir şey değiştirmez. C **5'e**, D **2'ye**, E **0'a** iner. Mutlak sayılar
**kurguya bağlıdır**; kurguya bağlı olmayan şey, satır sayısını dört katına çıkarmanın
yanlış tanıyı hiç değiştirmemesi ve üç satırlık görüntünün doksan altı satırlık görüntüyü
her iki tohumda da geçmesidir.

## Özet

- Üç darboğaz türü aynı belirtiyi üretir; bellek baskısı takas yüzünden girdi/çıktı
  beklemesi de yaratır ve disk darboğazı gibi görünür.
- Satır sayısını dört katına çıkarmak (432'den 1728'e) yanlış tanı sayısını **hiç
  değiştirmiyor**: her iki tohumda da aynı kalıyor.
- Listeye tek bir doğru sütun eklemek yanlış tanıyı 12'den **8'e**, süreç ayrıntısını atıp
  üç sistem ölçüsüne inmek **2'ye** indiriyor.
- Aynı üç ölçünün okunma sırasını değiştirmek kalan iki yanılgıyı da kaldırıyor; bekleme
  payı bir sonuçtur, takas hareketi bir nedendir.
- Tanıyı belirleyen şey çıktının hacmi değil, ölçü kümesi ve o kümenin okunma sırasıdır.

## Sonraki Adım

Bu konu boyunca ölçülen şey, bir makinenin kendi hakkında ürettiği metnin ve sayının
gerçeği ne kadar taşıdığıydı: birim dosyasına bakan tanı altıda beş yanıldı, döndürme 86
hatanın 81'ini sildi, ortalanmış gösterge 54 saniyelik sıçramayı hiç göstermedi ve dört kat
çıktı hiçbir yanılgıyı düzeltmedi. Bütün bu ölçülerin sessiz varsayımı, verinin diske
yazılabildiğiydi. Sonraki konu o varsayımı kaldırır ve depolamaya iner: blok aygıtları,
bölümler, dosya sistemleri ve bir dosya sisteminin birbirinden bağımsız tükenen iki sınırı.
Orada disk yüzde bir dolu olduğu hâlde yazmanın başarısız olduğu durum sayıyla gösterilir.
