English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

konuk
1 / ?
derslere geri dön

Sistemi Optimize Et, Bileşenlerini Değil

Hamming'in Sistem Mühendisliği İlk Kuralı

Hamming'in Ch. 28'den temel prensibi: Bileşenleri optimize ederseniz, büyük ihtimalle sistem performansını mahvedersiniz.


Bunu diferansiyel analizör hikâyesiyle anlattı. İki ünite birbirine bağlanacaktı. Yapımcılar ikinci ünitedeki amplifikatörleri iyileştirdi. Kabul günü Hamming standart testi çalıştırdı — y'' + y = 0 denklemini çöz, y'ye karşı y' grafiğini çiz, bir daire bekle. Test başarısız oldu. Sebep: İyileştirilmiş amplifikatörler topraklama devresinden daha fazla akım çekiyordu. Topraklama orijinal tasarım için yeterliydi. Yeni akım seviyesi için derecelendirilmemişti. Arayüz bozuldu, bileşen değil.


Genellemesi: çoğu sistem arızası bileşenlerden değil, arayüzlerden kaynaklanır. Bileşenler tasarlanır, test edilir, sertifikalandırılır. Arayüzler ise sonradan düşünülerek tasarlanır, nadiren test edilir ve bağımsız olarak hiçbir zaman sertifikalandırılmaz. Bir bileşen değiştiğinde, arayüz davranışı da değişir. Aşağı akıştaki hiçbir şey bu yeni arayüz için tasarlanmamıştır.


Temel asimetri: bir bileşende 10 kat iyileşme, bileşen kısıtlı bir arayüze besleniyorsa sistemde 10 kat bozulmaya yol açabilir. İyileşme eklenmez — çıkarır.

Başarısız Sistem Mühendisliği Olarak Eğitim Sistemi

Hamming'in Eğitim Örneği

Hamming bu prensibi eğitime uyguladı. Bireysel ders puanlarını optimize etmek — öğrencileri her derste test performansını maksimize edecek şekilde çalıştırmak — bireysel testlerde iyi puan alan ancak disiplinler arası bilgi entegrasyonu yapamayan öğrenciler üretir.


Her bileşen (ders puanı) iyileşir. Sistem (eğitim, entegre anlayış olarak tanımlanır) bozulur. Konular arasındaki arayüz — öğrencinin bilgiyi alanlar arasında uygulama yeteneği — hiçbir zaman optimize edilmemiştir. Körelmiştir.


Bu, uygulama hatası değildir. Yapısaldır. Bileşen performansını ölçüp ödüllendirdiğinizde, bileşen optimizasyonu elde edersiniz. Arayüzler, bileşen metriklerine görünmez.


Onun reçetesi: sistemdeki darboğazı bulun, ardından onu kaldırdığınızda akış aşağısında ne olacağını sorun. Darboğazın kaldırılması, bir sonraki kuyruğu doldurur. Kısıtlanmamış bir optimizasyon, yeni bir kısıt haline gelir.

Arayüz Bozulmasının İzlenmesi

Hamming, bir bileşeni iyileştirmenin onun arayüz davranışını değiştirdiğini ve sistemin geri kalanının eski arayüz etrafında tasarlandığını gösterdi.

Yazılımdan, bir bileşenin performansını iyileştirmenin akış aşağısında sorun yarattığı somut bir örnek verin. İyileştirilen bileşeni, etkilenen arayüzü ve akış aşağısındaki başarısızlıktan önce ortaya çıkacak uyarı sinyalini adlandırın.

Düğümler, Kuyruklar, Yükselme Puanları

Bir MOAD Fabrika Modeli

Her yazılım bağımlılık grafiği bir fabrika oluşturur. Her düğüm bir iş istasyonudur. Her kenar bir kuyruktur. İş, bir düğümün kuyruğuna girer, işlenir ve aşağı akış kuyruklarına akar.


Her düğümü iki skor karakterize eder:


Factory Model DAG: workaholic node (high betweenness + surge) and glutton node (high out-degree)

Surge skoru = hızlanma × giriş derecesi

Bu darboğaz açıldığında aşağı yöne ne kadar iş akacağını gösterir. Giriş derecesi 5 (5 üst akış bağımlılığının hepsi ona besleniyor) ve 100× hızlanma olan bir düğüm, aşağı yöne 500× surge üretir.


Betweenness = giriş derecesi + çıkış derecesi

Bu iş istasyonunun toplam akışa ne kadar merkezi olduğu. Yüksek betweenness, birçok yolun bu düğümden geçtiği anlamına gelir.


İki arketip:


İşkolik düğüm: yüksek betweenness, yüksek surge skoru. Bu, darboğazdır. Yukarı akıştaki her kuyruk, bu yüzden birikir. Bu darboğazı, aşağı akış kapasitesini hazırlamadan kaldırırsanız, aşağı akıştaki her şey aynı anda çöker.


Obur düğüm: yüksek out-degree, düşük surge skoru. Kendisine beslenen her şeyi tüketir. Darboğazı içsel olduğu için acı hissetmez, verimlilikle ilgili değildir. Durmayı unutmuş makine — iş girer, hiçbir şey çıkmaz ve düğüm sürekli 'meşgul' rapor eder.

MOAD-0001 & MOAD-0005: Bir Bağlantı Örneği

GHC Örneği

GHC'nin bağımlılık çözümleyicisinde MOAD-0001 yaması öncesinde: N=50.000 bağımlılık 17 dakikada derleniyordu. Sonrasında: 10 saniye. Hız artışı: 100×.


Aşağı akışta ne olur? Her derleme önbelleği, yapıt deposu ve CI çalıştırıcısı, 17 dakikalık toplu gelişlere göre kendini ayarlamışken şimdi saatte 100× daha fazla tamamlanmış derleme alır. Saatte 60 derleme yapıtını işleyecek şekilde tasarlanmış önbellekler artık 6.000 yapıt alır.


Bu, MOAD-0005'tir: önbellek izdihamı kusuru. Her önbellek anahtarı aynı anda kaçırılır çünkü hiçbir önbellek yeni geliş hızı için önceden ısıtılmamıştır. MOAD-0001'in düzeltmesi MOAD-0005'i üretir.


Bu bağlantı tesadüfi değildir. Yapısaldır. İç derece > 1 olan herhangi bir O(N²) → O(N) hız artışı, 1'in üzerinde bir dalgalanma puanı üretir. 100'ün üzerindeki bir dalgalanma puanı MOAD-0005 adayıdır.

Staging Before Disclosure

Bir derleme sistemi saatte 1.000 paket bağımlılık grafiği işler. MOAD-0001'i grafik geçişinde yamalamak, derleme süresini 60 dakikadan 30 saniyeye düşürür — 120 kat hızlanma. Sistem artık saatte 120.000 grafik işleyebiliyor.

Bu yamadan sonra MOAD-0005 açısından en fazla risk altında olan aşağı akış sistemini adlandırın ve açıklamadan önce hazırlayacağınız düzeltmeyi tarif edin.

Ne Zaman Durmalı: Halt Condition

Durma Koşulu

Bir yama durma koşulunu sağlar — yani: ifşa etme — ancak ve ancak aşağıdaki dört koşul aynı anda sağlandığında:


1. Yama canlı bir sistemde yer alır (birleştirilmiş, dağıtılmış)

2. Aşağı akış etkisini üstlenecek hiçbir bakımcı atanmamış

3. Aşağı akış kusuru (MOAD-0005) çözülmemiş

4. Hız artışı >= 100×


Dörtü birden = bebek ağlar. Takımı birleştirmeden önce atayın, sonra değil.


Bakıcısı olmayan bir düğüm, işçisi olmayan bir iş istasyonu gibi çalışır. İş birikir. Birileri çöker. Permabilgisayar prensibi: sürücüleri sahnelemeden dağıtım algoritmasını düzeltemezsiniz. Üç sürücü, üç milyon kişi: algoritmayı açmak, daha hızlı teslimat yerine hizmet edilmemiş isteklerin gümbürtülü sürüsünü yaratır.

WALL-E: Oburlar & İşkolikler

WALL-E Modeli

Pixar’ın WALL-E’si, fabrika modeli başarısızlığını en net biçimde gösterir. Hover sandalyelerdeki oburlar, sürtünmesiz beslenir. İşkolikler — WALL-E, EVE — beslemeyi sürdürmek için istasyonlarında ölür.


Obur düğüm (hover sandalyelerdeki insanlar) maksimum çıkış derecesine sahiptir: kendisine beslenen her şeyi tüketir, hiçbir şey üretmez. Artış puanı sıfırdır — bir yutaktır. Çıkışında hiçbir şey birikmediği için acı hissetmez. Sadece tüketir.


İşkolik düğüm (WALL-E) maksimum betweenness değerine sahiptir: her şey onun üzerinden akar. Tüm girdiyi emer. Tek çıktıyı üretir. Daha hızlı bir modelle değiştirilirse, surge skoru tüm aşağı akış kuyruklarını aynı anda dolduracaktır.


WALL-E sistemindeki kusur oburlar değildir. Eksik olan bakıcıdır: iş istasyonlarını dengeleyecek kimse atanmamıştır. Algoritma çalıştırılmadan önce kapasite hazırlanmamıştır.

Pip Vakası: Açıklama Öncesi Kontrol Listesi

Python'ın pip bağımlılık çözümleyicisinde MOAD-0001'i keşfediyorsunuz. Ölçülen hız artışı: 200×. pip günde yaklaşık 400 milyon kurulumda çalışır. PyPI paketleri sunar.

Bu yamayı açıklamadan önce, doğrulamak veya hazırlamak zorunda olduğunuz üç şeyi listeleyin ve her birini atladığınızda neyin bozulacağını açıklayın.