Küçük Nedenler, Büyük Sonuçlar: Kelebek Etkisinden Kritik Sistemlere

Küçük Nedenler, Büyük Sonuçlar: Kelebek Etkisinden Kritik Sistemlere

Kaos kuramı ve Lorenz çekicisinden eşik davranışı, sayısal hata, geri besleme ve hata yayılımına; Patriot, Mars, Ariane 5, Challenger, Çernobil ve modern bilişim sistemleri üzerinden küçük nedenlerin nasıl büyüdüğünü inceleyen mühendislik yazısı.

Bazı sonuçlar, onları başlatan nedenlerle karşılaştırıldığında şaşırtıcı derecede büyüktür. Gündelik düşünme biçimimiz çoğu zaman neden ile sonuç arasında yaklaşık bir orantı kurar: büyük sonuçların büyük nedenler gerektirdiğini, küçük değişikliklerin ise küçük sapmalar doğuracağını varsayarız. Bu yaklaşım birçok problemde işe yarar; ancak gerçek sistemlerin önemli bir bölümü doğrusal davranmaz.

Bir değişikliğin önemi yalnızca büyüklüğüne bağlı değildir. Sistemin neresinde oluştuğu, hangi bileşenlere bağlı olduğu, bir eşik değerini aşıp aşmadığı, geri besleme döngüsüne girip girmediği ve başka hataları tetikleyip tetiklemediği de sonucu belirler.

Yıllar içinde yazılım, gerçek zamanlı sistemler, ses işleme, yapay zekâ ve siber güvenlik üzerinde çalışırken aynı sorunun farklı biçimleriyle karşılaştım:

Küçük bir değişiklik sistem içinde nereye gider ve sistem onu neden büyütür?

Bu soru, kelebek etkisinden hata yayılımına, sayısal kararsızlıktan ardışık arızalara kadar birçok konuyu aynı çerçevede düşünmeyi sağlıyor.

Neden ile sonuç arasındaki orantı

Basit bir sistemi

y=f(x)

şeklinde gösterelim. Girişte küçük bir değişiklik olduğunda

x'=x+δ

ve çıktı

y'=f(x+δ)

olur. Çıktıdaki fark:

Δy=|f(x+δ)-f(x)|

olarak yazılabilir.

Doğrusal bir sistemde küçük bir giriş değişikliği genellikle küçük ve öngörülebilir bir çıktı değişikliği oluşturur. Örneğin

f(x)=2x

için

f(x+δ)-f(x)=2δ

olur.

Fakat bir eşik işin içine girdiğinde bu sezgi bozulabilir:

f(x) = 0,  x < T
       1,  x ≥ T

T-ε ile T+ε birbirine çok yakın iki giriş olmasına rağmen çıktı tamamen değişir.

Bu durum kelebek etkisi değildir. Bir karar sınırıdır.

Küçük değişikliklerin büyük sonuçlara ulaşması tek bir mekanizmayla açıklanamaz. Başlangıç koşullarına hassasiyet, eşik davranışı, sayısal hata birikimi, pozitif geri besleme, ortak nedenli arıza, hata yayılımı ve kritik bağımlılık farklı mekanizmalardır.

Genel yapı daha çok şöyledir:

küçük bozucu
→ büyütme mekanizması
→ yayılma
→ sistem sonucu

Mühendislik açısından asıl incelenmesi gereken, ortadaki mekanizmadır.

Kelebek etkisi ve öngörü sınırı

Edward Lorenz'in 1963 tarihli Deterministic Nonperiodic Flow çalışması, deterministik doğrusal olmayan sistemlerde birbirine çok yakın başlangıç durumlarının zamanla belirgin biçimde ayrışabileceğini gösteren temel çalışmalardan biridir.[1]

Uygun koşullarda başlangıçtaki küçük farkın büyümesi yaklaşık olarak

|Δ x(t)|≈ |Δ x(0)|e^(λt)

biçiminde ifade edilebilir. Pozitif en büyük Lyapunov üssü, yakın yörüngelerin ayrıştığı kaotik davranışın önemli göstergelerinden biridir.

Lorenz'in incelediği üç değişkenli doğrusal olmayan sistem bugün genellikle şu biçimde yazılır:

dx/dt=σ(y-x)
dy/dt=x(ρ-z)-y
dz/dt=xy-β z

Yaygın olarak kullanılan σ=10, ρ=28 ve β=8/3 değerlerinde çözüm, faz uzayında iki loblu, sınırlı fakat periyodik olmayan bir yapı çevresinde dolaşır. Bugün Lorenz çekicisi olarak adlandırılan bu yapı kaotik dinamiklerin en tanınan örneklerinden biridir.[1] Üç boyutlu faz uzayındaki yörüngenin iki boyutlu izdüşümü, kelebek kanatlarını çağrıştıran biçimiyle kolayca tanınır. Ancak şeklin kendisi kelebek etkisinin tanımı değildir. Asıl özellik, birbirine çok yakın başlangıç durumlarının aynı deterministik denklemler altında zamanla ayrışabilmesidir.

Lorenz çekicisini bir ikonla göstermek gerektiğinde iki loblu yörünge stilize edilebilir. Böyle bir çizim gerçek bir sayısal çözümün bire bir grafiği değil, faz uzayındaki davranışın görsel özetidir. Çekicinin fraktal geometrisi ve başlangıç koşullarına hassas bağımlılığı çizimin biçiminden değil, sistemin matematiksel dinamiğinden kaynaklanır.

Buradaki önemli ayrım şudur:

deterministik ≠ uzun vadede kolayca öngörülebilir

Bir sistemin kurallarının belirli olması, başlangıç durumunu sonsuz hassasiyetle bildiğimiz anlamına gelmez. Ölçüm belirsizliği ve hesaplama hassasiyeti, uzun vadeli öngörünün sınırına dönüşebilir.

Bununla birlikte mühendislikte karşılaştığımız her küçük neden-büyük sonuç ilişkisini kelebek etkisi olarak adlandırmak doğru değildir. Çoğu gerçek sistemde daha belirgin mekanizmalar vardır.

Çivi ve nal: büyüklükten çok bağımlılık

Küçük neden-büyük sonuç düşüncesinin eski anlatımlarından biri çivi ve nal üzerinden aktarılan özdeyiştir. Farklı dönemlerde farklı kişilere atfedilmiş biçimleri bulunduğu için belirli bir tarihsel kişiye doğrulanmış söz olarak bağlamak yerine neden-sonuç zincirinin eski bir anlatımı olarak görmek daha güvenlidir.

Mantığı basittir:

çivi
→ nal
→ at
→ görev
→ sonuç

Burada kaos bulunması gerekmez. Etkinin büyümesini sağlayan şey bağımlılık zinciridir.

Çivinin küçük olması önemli değildir; başka şeylerin ona bağlı olması önemlidir.

Modern mühendislik kazaları bunun çok daha somut örneklerini sunar.

Patriot: küçük sayısal hatanın zamanla birikmesi

25 Şubat 1991'de Suudi Arabistan'ın Dhahran kentinde görev yapan bir Patriot hava savunma sistemi gelen Scud füzesini izleyip önleyemedi. Füze bir Amerikan askerî kışlasına isabet etti ve 28 asker hayatını kaybetti. ABD Sayıştayı GAO'nun incelemesi, silah kontrol bilgisayarındaki yazılım probleminin izleme hesabında çalışma süresi uzadıkça büyüyen bir hataya yol açtığını belirledi. Sistem olay sırasında 100 saatten uzun süredir kesintisiz çalışıyordu.[2]

Zincir şöyle özetlenebilir:

küçük temsil hatası
→ zamanla birikme
→ zaman sapması
→ hedef konumunda hata
→ izleme başarısızlığı

Bu olayın benim için önemli tarafı, kısa süreli doğrulamanın uzun süreli kararlılığı kanıtlamamasıdır. Bir yazılım birkaç saat boyunca doğru çalışabilir; aynı yazılım uzun süre kesintisiz çalıştığında sayaç, zaman tabanı, kaynak kullanımı veya hata birikimi nedeniyle farklı davranabilir.

Kritik sistemlerde zaman da test değişkenidir.

Mars Climate Orbiter: sayı doğru, anlam yanlış

NASA'nın Mars Climate Orbiter aracı 23 Eylül 1999'da Mars yörüngesine giriş sırasında kaybedildi. NASA soruşturması kök nedeni, yer yazılımındaki Small Forces dosyasının beklenen metrik birimler yerine İngiliz ölçü birimleriyle üretilmesi olarak belirledi. Yazılım arayüz belgeleri metrik birim gerektiriyordu; yörünge hesaplarını yapan ekip de veriyi bu şekilde yorumladı.[3][4]

Sorun sayısal değerin biçiminden çok anlamındaydı.

değer + yanlış birim
→ yörünge hesabında sapma
→ yanlış yaklaşma
→ görev kaybı

Bir kuvvet değeri yalnızca sayı değildir:

10N ≠ 10lbf

Buradan çıkardığım ders, veri aktarımında biçimsel uyumluluğun yeterli olmadığıdır. Birim, ölçek, işaret konvansiyonu ve zaman tabanı gibi semantik özellikler de sözleşmenin parçasıdır.

Bugünkü yazılım mimarilerinde kullanılan teknoloji değişmiş olsa da sorun değişmemiştir: geçerli görünen veri yanlış anlam taşıyabilir.

Ariane 5: daha önce çalışmış kodun eski varsayımı

Ariane 5'in ilk uçuşu 4 Haziran 1996'da fırlatmadan yaklaşık 40 saniye sonra başarısız oldu. ESA soruşturması, uçuş kontrol ve kılavuzluk sistemindeki kaybın ataletsel referans sistemi yazılımındaki belirtim ve tasarım hatalarından kaynaklandığını bildirdi. İki ataletsel referans sistemi de aynı nedenle devre dışı kaldı.[5]

Ariane 4'ten taşınan yazılımın dayandığı bazı uçuş varsayımları Ariane 5 için geçerli değildi. Uçuş sırasında beklenenden büyük bir değer oluştu; dar bir tam sayı gösterimine dönüştürme sırasında istisna meydana geldi ve kılavuzluk bilgisi kaybedildi.

eski varsayım
→ yeni uçuş koşulları
→ aralık aşımı
→ yazılım istisnası
→ kılavuzluk kaybı

Olayın daha önemli yönlerinden biri yedekliliktir. İki ataletsel referans birimi bulunmasına rağmen ikisi de aynı tasarım ve yazılım varsayımını taşıyordu.

yedeklilik ≠ hata bağımsızlığı

Bu ayrımı yazılım sistemlerinde de önemli buluyorum. Aynı kusurlu yapılandırmayı, aynı yanlış veriyi veya aynı hatalı varsayımı paylaşan iki bileşen, sayısal olarak yedekli olsa da aynı anda başarısız olabilir.

Challenger: küçük parçadan sistem düzeyindeki riske

28 Ocak 1986'da Challenger uzay mekiği fırlatmadan 73 saniye sonra parçalandı. Rogers Komisyonu, sağ katı yakıtlı roket güçlendiricinin bağlantı tasarımındaki kusurların ve O-ring sızdırmazlık problemlerinin kazanın temelinde bulunduğunu belirledi. Komisyon ayrıca önceki uçuşlardan ve testlerden elde edilen bulgulara rağmen sorunun zaman içinde kabul edilebilir bir uçuş riski gibi ele alınmasını eleştirdi.[6][7]

O-ring bütün uzay aracına göre küçük bir parçaydı. Fakat kritiklik fiziksel büyüklükle ölçülmez.

küçük bileşen
⇏
küçük risk

Challenger'ın başka bir önemli yönü teknik sistem ile karar sistemi arasındaki bağdır. Mühendislik bulgusunun var olması tek başına sistemi korumaz. Bulguların doğru kişiye ulaşması, doğru yorumlanması ve karara dönüşmesi gerekir.

bulgu
→ iletişim
→ değerlendirme
→ karar

Bu zincir de sistem tasarımının bir parçasıdır.

Çernobil: tek neden değil, birbirini güçlendiren koşullar

26 Nisan 1986'daki Çernobil kazasını tek bir operatör hatası veya tek bir düğmeyle açıklamak mümkün değildir. IAEA'nın daha sonraki INSAG-7 değerlendirmesi, önceki açıklamalara göre vurguyu daha fazla reaktör tasarımı, kontrol çubukları, güvenlik sistemleri ve Sovyet nükleer güvenlik yönetimindeki eksikliklere kaydırdı.[8]

Konu açısından özellikle önemli olan özelliklerden biri, RBMK reaktörünün kaza koşullarındaki yüksek pozitif boşluk reaktivite katsayısıdır. Belirli koşullarda soğutucunun buharlaşmasının artması reaktiviteyi yükseltebilir; güç artışı da daha fazla buhar oluşmasına yol açabilir.[8]

buhar↑
→ reaktivite↑
→ güç↑
→ buhar↑

Bu bir pozitif geri besleme örneğidir.

Çernobil'i küçük bir hatanın büyümesi olarak değil, tasarım özellikleri, işletme durumu ve güvenlik yönetiminin birlikte güvenli çalışma bölgesini ortadan kaldırdığı bir sistem kazası olarak görmek daha doğrudur.

Mühendislik açısından burada önemli olan, bir sistemin bir sapmayı sönümlemek yerine kendi dinamiğiyle büyütebilmesidir.

Therac-25: yazılımın fiziksel sonuca dönüşmesi

1985 ile 1987 arasında Therac-25 radyoterapi cihazlarıyla bağlantılı altı bilinen ciddi aşırı doz olayı meydana geldi. Nancy Leveson ve Clark Turner'ın kapsamlı incelemesi, kazaların tek bir yazılım hatasına indirgenemeyeceğini; yazılım, sistem tasarımı, kullanıcı arayüzü, güvenlik mekanizmaları ve düzenleyici süreçlerin birlikte değerlendirilmesi gerektiğini gösterdi.[9]

Therac-25'in önemi, yazılım hatasının doğrudan fiziksel enerjiye dönüşebildiği bir sistem olmasıdır:

yazılım durumu
→ kontrol kararı
→ fiziksel çıktı
→ insan

Bir masaüstü uygulamasındaki yarış durumu ekranı bozabilir. Bir tıbbi cihazdaki yarış durumu fiziksel sonucu etkileyebilir. Aynı hata sınıfının riski uygulama bağlamına göre değişir.

Bu nedenle nadir hata, önemsiz hata anlamına gelmez.

Mars Polar Lander: sensör sinyali ile olayın ayrılması

Mars Polar Lander 3 Aralık 1999'da Mars'a varışı sırasında kaybedildi. Araçtan kazayı doğrudan açıklayacak telemetri alınamadığı için kesin neden belirlenemedi. NASA'nın özel inceleme kurulu, en olası senaryolardan biri olarak iniş ayaklarının açılması sırasında oluşan geçici sensör işaretlerinin yüzeye temas olarak yorumlanmasını ve bunun motorların erken kapatılmasına yol açmasını gösterdi.[10]

Bu nedenle burada kesinlik değil olasılık dili kullanmak gerekir.

Olası zincir:

mekanik hareket
→ geçici sensör işareti
→ yanlış durum yorumu
→ motorların erken kapanması
→ düşüş

Bu örnek, sensör verisi ile sistem durumunun aynı şey olmadığını gösterir.

Bir algılayıcı işaret üretir. Yazılım bu işarete anlam verir.

ölçüm ≠ durum

Gerçek zamanlı ses işleme sistemlerinde bu ayrım bana özellikle tanıdık geliyor. Bir konuşma etkinliği algılayıcısının eşik aşması ile sistemin gerçekten konuşmanın başladığı veya bittiği sonucuna varması aynı karar değildir.

Knight Capital: bir makinenin farklı durumda kalması

1 Ağustos 2012'de Knight Capital'ın otomatik hisse senedi yönlendirme sisteminde yapılan dağıtım hatası, yaklaşık 45 dakika içinde milyonlarca hatalı emrin piyasaya gönderilmesine yol açtı. SEC'in kararına göre sekiz SMARS sunucusundan biri yeni yazılımla güncellenmemişti. Eski Power Peg işlevi bu sunucuda yeniden etkinleşti. Knight, istenmeyen pozisyonlar nedeniyle 460 milyon doların üzerinde zarar etti.[11][12]

tek sunucuda farklı yazılım
→ farklı davranış
→ hatalı emirler
→ büyük finansal kayıp

Bu olay dağıtım işleminin yalnızca dosyaların kopyalanması olmadığını gösterir. Gerçek başarı, bütün çalışan düğümlerin beklenen sürüm ve yapılandırmada olduğunun doğrulanmasını gerektirir.

Tek bir farklı düğüm, sistemin tamamındaki davranış tutarlılığını bozabilir.

AT&T: toparlanma davranışının yayılma davranışına dönüşmesi

15 Ocak 1990'da AT&T'nin ABD uzun mesafe telefon ağı büyük bir kesinti yaşadı. Şirket daha sonra sorunun yazılımdaki bir mantık hatasından kaynaklandığını açıkladı. Bir anahtarın toparlanma süreci sırasında oluşan mesajlaşma başka elektronik anahtarlarda aynı hatalı koşulu tetikleyerek zincirleme yeniden başlatmalara yol açtı.[13]

A yeniden başlar
→ B etkilenir
→ B yeniden başlar
→ C etkilenir

Buradaki önemli fikir, hata sonrası toparlanma için tasarlanmış mekanizmanın hata yayılımının bir parçasına dönüşebilmesidir.

Bugünkü dağıtık yazılımlarda aynı matematiksel örüntü yeniden deneme mekanizmalarında görülebilir:

gecikme
→ zaman aşımı
→ yeniden deneme
→ ek yük
→ daha fazla gecikme

Koruma mekanizması geri besleme döngüsüne girdiğinde problemi azaltmak yerine büyütebilir.

2003 Kuzey Amerika elektrik kesintisi: sistem durumunu görememek

14 Ağustos 2003'te ABD ve Kanada'nın geniş bir bölümünü etkileyen elektrik kesintisi tek bir yazılım probleminden kaynaklanmadı. ABD-Kanada ortak görev gücü; şebekenin yeterince anlaşılmaması, ağaç teması, durum farkındalığı eksikliği ve alarm sistemlerinin doğru çalışmaması gibi birbiriyle ilişkili nedenler belirledi.[14][15]

Bu olayda yazılımın önemli etkilerinden biri operatörlerin sistemde kötüleşen durumu görmesini zorlaştırmasıydı.

Gerçek sistem durumu S, operatörün gördüğü durum Ŝ olsun:

S ≠ Ŝ

ise doğru karar için gerekli durum bilgisi yoktur.

Bu nedenle gözlemlenebilirliği yalnızca kayıt ve ölçüm toplama işi olarak görmüyorum. Kritik sistemlerde doğru sistem modelinin oluşturulması güvenilirliğin parçasıdır.

Tacoma Narrows: dış etki değil, sistemin cevabı

Tacoma Narrows Köprüsü 7 Kasım 1940'ta rüzgâr altında gelişen büyük burulma hareketlerinin ardından çöktü. Olay popüler anlatılarda sık sık basit rezonans örneği olarak verilir; daha doğru mühendislik açıklaması aeroelastik kararsızlık ve burulmalı çırpınma davranışını içerir.[16][17]

Burada önemli olan rüzgârın tek başına sonucu açıklamamasıdır:

sonuç=f(dış etki, sistem dinamiği)

Aynı büyüklükteki bozucu farklı bir yapıda aynı sonucu doğurmaz. Sistemin kendi dinamiği, dış etkinin sönümleneceğini mi yoksa büyütüleceğini mi belirler.

Bu düşünce işaret işlemede de tanıdıktır:

Y(f)=H(f)X(f)

Aynı giriş, farklı sistemlerde farklı sonuç verir.

Pentium FDIV: nadir hata ve temel güven varsayımı

1994'te bazı Intel Pentium işlemcilerde belirli kayan noktalı bölme işlemlerinin yanlış sonuç verdiği ortaya çıktı. Sorun nadir girdi çiftlerinde görülüyordu; ancak işlemcinin en temel sözleşmelerinden birini etkiliyordu: aritmetik işlemin beklenen doğrulukta yapılması.[18][19]

Burada soru yalnızca hatanın ne kadar sık ortaya çıktığı değildir.

Bir uygulama

a/b

işlemi yaptığında alttaki donanımın belirli doğruluk sınırlarına uyduğunu varsayar.

Katmanlı bir sistemde üst katmanlar alt katmanlara güvenerek çalışır:

uygulama
→ çalışma ortamı
→ işletim sistemi
→ işlemci
→ donanım

Alt katmandaki sessiz bir hata, yukarıdaki hesapların doğruluğunu da etkileyebilir.

Heartbleed: küçük doğrulama eksikliğinden bellek sızıntısına

2014'te açıklanan Heartbleed, OpenSSL'in TLS/DTLS heartbeat uzantısı uygulamasındaki sınır doğrulama eksikliğinden kaynaklanıyordu. İstemcinin bildirdiği veri uzunluğu yeterince doğrulanmadığında süreç belleğinin istenmeyen bölümleri karşı tarafa gönderilebiliyordu.[20]

Kavramsal problem basitti:

bildirilen uzunluk ≠ gerçek uzunluk

ve bu ilişkinin sınırları yeterince denetlenmiyordu.

Sonuç:

eksik doğrulama
→ sınır dışı okuma
→ süreç belleğinin açığa çıkması

oldu.

Kod miktarı ile güvenlik etkisi arasında doğrusal ilişki yoktur. Tek bir sınır denetiminin eksikliği geniş bir güven sınırını etkileyebilir.

Log4Shell: veri davranışa dönüştüğünde

2021'de açıklanan CVE-2021-44228, Apache Log4j 2'nin belirli sürümlerindeki JNDI özelliklerinin saldırgan tarafından kontrol edilen LDAP ve benzeri uç noktalar karşısında yeterince korunmamasından kaynaklanıyordu. Belirli koşullarda günlük iletilerini veya parametrelerini kontrol edebilen saldırgan uzaktan kod yürütmeye ulaşabiliyordu.[21][22]

Normal beklenti:

metin
→ günlük kaydı

iken güvenlik açığı veri ile davranış arasındaki sınırı bozuyordu.

Bu konu günümüz yapay zekâ sistemlerinde başka biçimde yeniden karşımıza çıkıyor. Doğal dil hem veri hem talimat taşıyabildiği için, güvenilmeyen içeriğin hangi noktada davranışa dönüşebildiğini açıkça sınırlandırmak gerekiyor.

Gerçek zamanlı ses işlemede küçük kararlar

Tarihsel örneklerden kendi çalışma alanlarıma geldiğimde aynı örüntüyü daha küçük ölçekte fakat sürekli görüyorum.

Gerçek zamanlı otomatik konuşma tanıma sistemi yalnızca

ses→ model→ metin

değildir. Uygulamada daha çok:

ses
→ ön işleme
→ konuşma etkinliği algılama
→ bölümleme
→ model
→ son işleme
→ metin

zinciri vardır.

Ses sinyalindeki küçük bir fark çoğu durumda önemsiz olmalıdır. Fakat değişiklik bir eşik noktasında gerçekleşirse bölümleme kararı değişebilir:

küçük fark
→ farklı bölümleme
→ farklı bağlam
→ farklı çözümleme
→ farklı metin

Burada klasik anlamda kaos yoktur. Eşik kaynaklı durum ayrışması vardır.

Modelin doğruluğunu tek başına incelemek bu nedenle yeterli değildir. Modelden önce alınan kararlar da modelin ne göreceğini belirler.

Durum makinelerinde ayrışma

Bir durum makinesi:

S_(n+1)=F(S_n,x_n)

şeklinde düşünülebilir.

Küçük bir giriş farkı farklı geçiş oluşturursa:

F(S_n,x_n)≠ F(S_n,x_n+ε)

iki yürütme artık farklı durumlardadır.

Sonraki girişler aynı olsa bile gelecekteki davranış farklılaşabilir. Gerçek zamanlı sistemlerde birkaç milisaniyelik zamanlama farkının beklenenden büyük sonuç üretmesinin nedenlerinden biri budur.

Yapay zekâda karar sınırları

Bir yapay zekâ modeli:

f(x)=A

sonucunu üretirken küçük bir değişiklikten sonra:

f(x+δ)=B

sonucuna geçebilir.

Bu durum özellikle çekişmeli örnek araştırmalarında görülür. İnsan açısından çok küçük olan değişiklikler bazı modellerin karar sınırını aşabilir.

Burada önemli soru yalnızca modelin ortalama doğruluğu değildir:

Model hata yaptığında bütün sistem ne kadar yanlış davranabilir?

Kritik bir sistemde model çıktısı başka kararları ve otomasyonları tetikliyorsa model hatasının yayılma yolu da değerlendirilmelidir.

Dağıtık sistemlerde küçük gecikmenin büyümesi

Yüksek trafikli yazılımlarda küçük nedenlerin büyümesini en sık gördüğüm yapılardan biri zaman aşımı ve yeniden deneme ilişkisidir.

gecikme↑
→ zaman aşımı
→ yeniden deneme
→ yük↑
→ gecikme↑

Başlangıçta birkaç yavaş işlem varken geri besleme başladıktan sonra bağlantı havuzları dolabilir, kuyruklar büyüyebilir ve sağlıklı istekler de zaman aşımına uğrayabilir.

Burada sistem kendi sorununu büyütür.

Bu nedenle ortalama gecikme tek başına yeterli değildir. Kuyruk uzunluğu, yüzdelik gecikmeler, kaynak doygunluğu, zaman aşımı oranı ve yeniden deneme davranışı birlikte değerlendirilmelidir.

Sayısal hesaplamada küçük farklar

Bilgisayarlar gerçek sayıları sonsuz hassasiyetle temsil edemez. Bu nedenle gerçek aritmetikte geçerli olan

(a+b)+c=a+(b+c)

eşitliği kayan noktalı hesaplamada işlem sırasına bağlı olarak bit düzeyinde aynı sonucu vermeyebilir:

fl(fl(a+b)+c)≠ fl(a+fl(b+c))

Çoğu zaman fark önemsizdir.

Fakat sonuç bir eşik değerine besleniyorsa:

y<T

ile

y+ε≥ T

iki farklı yürütme yolu oluşturabilir.

Böylece:

sayısal fark
→ eşik
→ durum ayrışması

ortaya çıkar.

CPU, GPU, farklı hassasiyet düzeyleri ve paralel hesaplama düzenleriyle çalışan sistemlerde önemli olan yalnızca sayısal farkın büyüklüğü değil, farkın hangi kararı etkilediğidir.

Siber güvenlikte çığ etkisi ve tek bit

Kriptografide küçük bir giriş farkının büyük çıktı farkı oluşturması bazen özellikle istenir. Çığ etkisi, girdideki küçük değişikliğin çıktı bitlerine geniş biçimde yayılmasını ifade eder.

1 bit değişikliği
→ çok sayıda çıktı bitinde değişim

Buradaki büyütme hata değil, güvenlik özelliğidir.

Aynı tek bit başka bir bağlamda hata olabilir. Bellekte veya işlemci durumunda oluşan bit bozulması:

bit değişimi
→ bozuk durum
→ yanlış karar

zincirini başlatabilir.

Küçük değişikliğin büyütülmesi bu nedenle tek başına iyi veya kötü değildir. Sistemin amacı ve büyütme mekanizması belirleyicidir.

Adli bilişim: zinciri ters yönde izlemek

Mühendislikte çoğunlukla:

neden→ sonuç

yönünde düşünürüz.

Adli bilişimde ise çoğu zaman sonuç elimizdedir:

sonuç
→ olay zinciri
→ başlangıç nedeni

Büyük arıza meydana geldiğinde yalnızca son hata mesajına bakmak yeterli değildir. Zamanlama değişiklikleri, sürüm farkları, loglar, kullanıcı eylemleri, kaynak tüketimi ve ağ davranışı birlikte değerlendirilir.

Çünkü büyük sonuç çoğu zaman son olayda değil, daha önce başlayan küçük sapmanın yayılımında saklıdır.

Küçük hata ile küçük etki aynı şey değildir

Bu örneklerin ortak noktası şudur:

küçük hata ≠ küçük etki

Bir olayın etkisini düşünsel olarak:

Etki
≈
Bozucu
×
Sistem Hassasiyeti
×
Yayılabilirlik

şeklinde ele alabiliriz.

Bu bir fizik yasası değil, sistemleri incelemek için yararlı bir çerçevedir.

Bir hata küçük olabilir ve sistem onu sönümleyebilir. Aynı büyüklükteki hata kritik bir eşikte, merkezi bir bağımlılıkta veya pozitif geri besleme döngüsünde çok daha büyük sonuç doğurabilir.

Dayanıklılık: küçük hatayı küçük tutabilmek

Gerçek sistemlerde bütün bozucuları yok etmek mümkün değildir.

Sensör gürültüsü olur. Ağ gecikir. Paket kaybolur. Disk yavaşlar. Kayan noktalı işlemler sonlu hassasiyetle yapılır. Yapay zekâ modelleri zaman zaman yanlış karar verir.

Bu nedenle gerçekçi hedef:

δ=0

değildir.

Hedef, δ≠0 iken sistemin etkisini kabul edilebilir sınırlar içinde tutabilmesidir.

Bunun için probleme göre hata yalıtımı, histerezis, geri basınç, yük atma, sınırlı yeniden deneme, devre kesici, bağımsız yedeklilik, idempotent işlemler, hata düzeltme ve sayısal olarak kararlı algoritmalar kullanılır.

Teknikler farklıdır; amaç aynıdır:

küçük hata
→ küçük etki

Sonuç

Kelebek etkisi küçük değişikliklerin büyük sonuçlara ulaşabileceğini düşünmek için güçlü bir başlangıçtır. Fakat mühendislikte daha yararlı soru şudur:

Sistem hangi küçük değişiklikleri neden büyütüyor?

Patriot'ta mekanizma zamanla büyüyen hesap hatasıydı.

Mars Climate Orbiter'da ölçü birimi uyuşmazlığıydı.

Ariane 5'te eski bir varsayımın yeni uçuş koşullarında geçersiz kalması ve aynı hatayı paylaşan yedek sistemlerdi.

Challenger'da kritik bağlantı tasarımı ile teknik ve örgütsel karar zinciri birlikte rol oynadı.

Çernobil'de reaktör fiziği, tasarım ve güvenlik yönetimi birbirini güçlendirdi.

Therac-25'te yazılım durumu fiziksel sonuca dönüştü.

Mars Polar Lander'da olası neden, geçici sensör işaretinin yanlış sistem durumuna dönüştürülmesiydi.

Knight Capital'da tek bir sunucunun farklı yazılım durumunda kalması finansal sisteme yayıldı.

AT&T'de toparlanma davranışı ağ boyunca hata yayılımına dönüştü.

2003 elektrik kesintisinde durum farkındalığının kaybı diğer fiziksel sorunlarla birleşti.

Tacoma Narrows'ta dış bozucunun etkisini yapının kendi dinamiği büyüttü.

Pentium FDIV temel bir donanım varsayımını bozdu.

Heartbleed küçük bir sınır doğrulama eksikliğinin geniş bir bilgi sızıntısına dönüşebileceğini gösterdi.

Log4Shell veri ile davranış arasındaki sınırın ne kadar kritik olabileceğini hatırlattı.

Gerçek zamanlı sistemlerde ise aynı örüntü bazen birkaç milisaniyelik zamanlama farkında, bir eşik değerinde veya tek bir durum geçişinde ortaya çıkıyor.

Büyük arızayı meydana geldikten sonra görmek kolaydır. Daha değerli olan, henüz küçükken hangi sapmanın büyüyebileceğini anlamaktır.

Mesele çivinin küçük olması değildir.

Hangi sistemi bir arada tuttuğudur.


Kaynakça

  1. Lorenz, E. N. (1963). “Deterministic Nonperiodic Flow.” Journal of the Atmospheric Sciences, 20(2), 130–141. American Meteorological Society. DOI: 10.1175/1520-0469(1963)020<0130:DNF>2.0.CO;2. [Kaynak](https://doi.org/10.1175/1520-0469(1963)020%3C0130:DNF%3E2.0.CO;2)
  2. U.S. General Accounting Office. (1992). Patriot Missile Defense: Software Problem Led to System Failure at Dhahran, Saudi Arabia (IMTEC-92-26). Kaynak
  3. NASA. (1999). Mars Climate Orbiter Mishap Investigation Board Phase I Report. Kaynak
  4. NASA Lessons Learned Information System. (1999). “Mars Climate Orbiter Mishap Investigation Board - Phase I Report,” Lesson 641. Kaynak
  5. European Space Agency. (1996). Ariane 501 — Presentation of Inquiry Board Report. Kaynak
  6. Presidential Commission on the Space Shuttle Challenger Accident. (1986). Report of the Presidential Commission on the Space Shuttle Challenger Accident. NASA. Kaynak
  7. NASA. (1986). Report of the Presidential Commission on the Space Shuttle Challenger Accident, Chapter VI: An Accident Rooted in History. Kaynak
  8. International Nuclear Safety Advisory Group / IAEA. (1992). The Chernobyl Accident: Updating of INSAG-1, Safety Series No. 75-INSAG-7. International Atomic Energy Agency. Kaynak
  9. Leveson, N. G., & Turner, C. S. (1993). “An Investigation of the Therac-25 Accidents.” IEEE Computer, 26(7), 18–41. Kaynak
  10. NASA / Jet Propulsion Laboratory. Report on the Loss of the Mars Polar Lander and Deep Space 2 Missions; ayrıca NASA Science, “Mars Polar Lander / Deep Space 2.” Kaynak
  11. U.S. Securities and Exchange Commission. (2013). In the Matter of Knight Capital Americas LLC, Administrative Proceeding File No. 3-15570. Kaynak
  12. U.S. Securities and Exchange Commission. (2013). “SEC Charges Knight Capital With Violations of Market Access Rule.” Kaynak
  13. Peter G. Neumann. (1990). “Cause of AT&T network failure.” The RISKS Digest, 9(62); dönemin AT&T teknik açıklamasını aktaran arşiv kaydı. Kaynak
  14. U.S.-Canada Power System Outage Task Force. (2004). Final Report on the August 14, 2003 Blackout in the United States and Canada: Causes and Recommendations. Federal Energy Regulatory Commission arşivi. Kaynak
  15. Federal Energy Regulatory Commission. Power Blackout — August 14, 2003 investigation and reports. Kaynak
  16. Federal Highway Administration. Framework for Improving Resilience of Bridge Design. Tacoma Narrows Bridge bölümünde 1940 çöküşünü ve yapısal/aerodinamik etkenleri değerlendirir. Kaynak
  17. Federal Highway Administration. “November 7 — Tacoma Narrows Bridge collapse.” Kaynak
  18. Nicely, T. R. (1994). İlk Pentium kayan noktalı bölme hatası bildirimleri; dönemin teknik yazışmaları ve arşivleri. Tarihsel kopyalar Google Groups ve Netlib arşivlerinde korunmaktadır. Kaynak
  19. Tim Coe, Terje Mathisen, Cleve Moler, Vaughan Pratt. (1995). “Computational Aspects of the Pentium Affair.” IEEE Computational Science & Engineering, 2(1), 18–30. DOI: 10.1109/99.372929.
  20. OpenSSL. (2014). CVE-2014-0160, TLS heartbeat read overrun (Heartbleed). Kaynak
  21. Apache Software Foundation. “Apache Log4j Security Vulnerabilities — CVE-2021-44228.” Kaynak
  22. National Institute of Standards and Technology, National Vulnerability Database. “CVE-2021-44228 Detail.” Kaynak
Bu sayfanın QR kodu