Ders 02 / 16
Yama Yönetimi
Yamanın ölçüsü pencere olarak alınır: 102 makinelik filoda 12 duyuru için yayımla uygulama arasındaki gün, o pencerede açık kalan 1038 tutunma noktasının nokta-günü karşılığı, acil yolun 48 sınama kaleminden 36'sını atlayarak ürettiği 939 plan dışı kesinti ve hiçbir düzende kapanmayan 12 nokta.
İçindekiler
Önceki ders dört makine sınıfında 44 tutunma noktasını kapatılamaz olarak bıraktı: işin kendisi onları gerektiriyor. Kapatılamayan bir nokta durduğu yerde eskimez, ama onu tanımlayan bileşen eskir. Bir servis tanımının arkasındaki ikilide kusur duyurulduğunda o nokta — kaldırılamadığı için — yama uygulanana kadar bilinen bir yolla kullanılabilir kalır.
Bu dersin ölçüsü penceredir: duyurunun yayımlandığı gün ile yamanın uygulandığı gün arasındaki süre. Pencere tek başına bir zaman aralığıdır; taşıdığı ağırlık, o aralıkta açık kalan nokta sayısıyla çarpıldığında çıkar. Birim nokta-günüdür.
Yama Neyi Kapatır
Bu ders bir ayrımla başlar, çünkü ayrım yapılmadığında sonraki bütün sayılar yanlış sütuna yazılır. Bir yama tutunma noktasını kaldırmaz. Yama uygulandıktan sonra servis tanımı yerinde durur, zamanlanmış görev yerinde durur, açılış girişi yerinde durur. Değişen tek şey, o noktanın tanımını yazmaya izin veren bilinen bir kusurun ortadan kalkmasıdır.
Bu, kursun iki sütunu açısından şu demektir: yamanın kapattığı nokta sayısı sıfırdır. Yamanın azalttığı şey, noktanın ulaşılabilir olduğu süredir. Önceki dersin ayıklaması 40 noktayı gerçekten kapattı; yama hiçbirini kapatmaz, yalnız kalan 44’ün ne kadar süreyle açık olduğunu belirler. İki iş birbirinin yerine geçmez ve birbirini de gereksiz kılmaz.
Kurulum sonrası açık yüzey ve yama penceresinin dört parçası Sunucu, Ağ ve Sertleştirme kursunda ölçüldü; burada tekrarlanmaz. Buradaki ölçü sunucu kalemi değil tutunma noktasıdır ve sayım filo üzerinde yapılır.
- SS7. 102 makinelik filo, dört sınıf ve 12 duyuru modeldir; gerçek bir yama indirilmiyor, gerçek bir filo taranmıyor. Sınıf başına kalan nokta sayısı (9, 12, 12, 11) önceki dersten gelir.
- SS8. Her tutunma noktasının tanımı tek bir bileşene ait sayılır. Gerçekte bir nokta birden çok bileşene bağlı olabilir; bu, sayıları büyütür, yönünü değiştirmez.
- SS9. Rastgelelik yok: duyuru günleri, bileşenler ve takvim modelde yazılıdır.
- SS10. Kusurlu yama ve geri alma modellenmiyor; ikisi de önceki kursta ölçüldü ve burada girdi olarak alınır.
- SS11. Bakım takvimi sabit aralıklıdır. Çevrimdışı olduğu için turu kaçıran makine sayısı sınıf başına sabittir ve o makineler bir sonraki turda yamalanır.
- SS12. Acil yol 1,5 günde uygular ve dört sınama kaleminin üçünü atlar; turu kaçıran makineler acil yolu da kaçırır.
// yama/model.mjs — pencere MODELIDIR: kurgu filoda duyuru gunu, uygulama gunu ve o araliktaki // acik tutunma noktasi. Gercek bir yama indirilmez, gercek bir filo taranmaz. // Sinif basina kalan nokta sayisi (9, 12, 12, 11) onceki dersten gelir. export const SINIF = [ // ad, makine, takvim araligi (gun), takvim ofseti, cevrimdisi kaldigi icin turu kaciran makine { ad: 'saha-dizustu', makine: 60, takvim: 21, ofs: 6, kacan: 9 }, { ad: 'sube-ucu', makine: 24, takvim: 14, ofs: 3, kacan: 1 }, { ad: 'toplayici', makine: 12, takvim: 7, ofs: 2, kacan: 0 }, { ad: 'islem-sunucusu', makine: 6, takvim: 30, ofs: 9, kacan: 0 }, ]; // Her bilesen, sinif basina kac tutunma noktasinin tanimini tasiyor; agir: makine yeniden baslar. export const BILESEN = { cekirdek: { nokta: [2, 2, 2, 2], agir: true }, 'sistem-kitapligi': { nokta: [1, 1, 1, 1], agir: true }, 'uzak-yonetim': { nokta: [0, 1, 1, 1], agir: false }, 'gozetim-ajani': { nokta: [2, 2, 2, 2], agir: false }, 'yama-ajani': { nokta: [2, 2, 2, 2], agir: false }, 'kimlik-eklentisi': { nokta: [0, 1, 1, 1], agir: false }, kabuk: { nokta: [2, 2, 2, 1], agir: false }, 'is-yazilimi': { nokta: [0, 1, 1, 1], agir: false }, }; export const DUYURU = [ // [gun, bilesen, acil mi] [4.0, 'sistem-kitapligi', false], [13.5, 'cekirdek', true], [21.0, 'kabuk', false], [28.5, 'gozetim-ajani', false], [34.0, 'uzak-yonetim', true], [42.5, 'sistem-kitapligi', false], [51.5, 'yama-ajani', false], [58.5, 'cekirdek', false], [66.0, 'is-yazilimi', false], [74.5, 'kimlik-eklentisi', true], [88.0, 'kabuk', false], [97.5, 'sistem-kitapligi', true], ]; export const UFUK = 120, ACIL_SURE = 1.5, SINAMA_KALEM = 4, ACIL_ATLANAN = 3; // Yamalanamayan kalem: alim hizmeti surum uyumlulugu nedeniyle yukseltilemiyor. export const YAMALANAMAZ = [['is-yazilimi', 'toplayici']]; export const yamalanir = (b, i) => !YAMALANAMAZ.some(([x, y]) => x === b && y === SINIF[i].ad); export const takvimGunu = (i, g) => { const s = SINIF[i]; return Math.ceil((g - s.ofs) / s.takvim) * s.takvim + s.ofs; }; export const TOPLAM_NOKTA = SINIF.reduce((a, s, i) => a + s.makine * Object.values(BILESEN).reduce((b, c) => b + c.nokta[i], 0), 0); // Bir duyurunun bir siniftaki penceresi ve nokta-gunu. duzen: 'takvim' | 'karma' | 'hepsi-acil' export function pencere(d, i, duzen) { const [g, b, acil] = d, n = BILESEN[b].nokta[i], s = SINIF[i]; const bos = { nokta: 0, noktaGun: 0, acikNoktaGun: 0, kesinti: 0, acikKalan: 0 }; if (n === 0) return bos; if (!yamalanir(b, i)) return { ...bos, nokta: n * s.makine, acikNoktaGun: n * s.makine * (UFUK - g), acikKalan: n * s.makine }; const acilYol = duzen === 'hepsi-acil' || (duzen === 'karma' && acil); const ilk = acilYol ? g + ACIL_SURE : takvimGunu(i, g); const sonra = takvimGunu(i, ilk + 0.001); // ilk turu kaciran makineler const zamaninda = s.makine - s.kacan; return { ...bos, nokta: n * s.makine, noktaGun: n * (zamaninda * (ilk - g) + s.kacan * (sonra - g)), kesinti: acilYol ? zamaninda : 0 }; } export function tara(duzen) { let noktaGun = 0, agirlik = 0, tam = 0, servis = 0, acik = 0, acikGun = 0, atlanan = 0; for (const d of DUYURU) { const acilYol = duzen === 'hepsi-acil' || (duzen === 'karma' && d[2]); if (acilYol) atlanan += ACIL_ATLANAN; for (let i = 0; i < SINIF.length; i += 1) { const p = pencere(d, i, duzen); noktaGun += p.noktaGun; acikGun += p.acikNoktaGun; acik += p.acikKalan; if (p.acikKalan === 0) agirlik += p.nokta; if (BILESEN[d[1]].agir) tam += p.kesinti; else servis += p.kesinti; } } return { ortPencere: noktaGun / agirlik, noktaGun, tam, servis, acik, acikGun, atlanan }; }
Duyuru Başına Pencere
// yama/olc.mjs — pencere, penceredeki acik nokta ve acil yamanin bedeli import { SINIF, BILESEN, DUYURU, UFUK, ACIL_SURE, SINAMA_KALEM, TOPLAM_NOKTA, YAMALANAMAZ, pencere, takvimGunu, tara } from './model.mjs'; const y = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join('').trimEnd()); const s2 = (x) => x.toFixed(1); console.log(`${SINIF.reduce((a, s) => a + s.makine, 0)} makine, ${TOPLAM_NOKTA} tutunma noktasi, ` + `${UFUK} gunde ${DUYURU.length} duyuru (${DUYURU.filter((d) => d[2]).length} acil isaretli)`); const A = [-18, 6, 8, 8, 11, 9, 12, 12]; console.log('\n1. takvim duzeninde duyuru basina pencere (gun) ve acik nokta'); y(A, 'duyuru', 'gun', 'saha', 'sube', 'toplayici', 'sunucu', 'acik nokta', 'nokta-gunu'); for (const d of DUYURU) { const p = SINIF.map((_, i) => pencere(d, i, 'takvim')); y(A, d[1], s2(d[0]), ...SINIF.map((s, i) => (BILESEN[d[1]].nokta[i] === 0 ? '-' : s2(takvimGunu(i, d[0]) - d[0]))), p.reduce((a, x) => a + x.nokta, 0), p.reduce((a, x) => a + x.noktaGun + x.acikNoktaGun, 0)); } const B = [-12, 14, 13, 10, 13, 14, 12]; console.log('\n2. uc duzen: pencere, nokta-gunu ve acil yamanin bedeli'); y(B, 'duzen', 'ort pencere', 'nokta-gunu', 'atlanan', 'tam kesinti', 'servis kes.', 'acik nokta'); for (const duzen of ['takvim', 'karma', 'hepsi-acil']) { const t = tara(duzen); y(B, duzen, s2(t.ortPencere), t.noktaGun, `${t.atlanan}/${SINAMA_KALEM * DUYURU.length}`, t.tam, t.servis, t.acik); } console.log('\n3. yamanin nokta sayisina etkisi'); const t = tara('karma'); y([-40, 12], 'yamadan onceki tutunma noktasi', TOPLAM_NOKTA); y([-40, 12], 'yamanin kapattigi nokta', 0); y([-40, 12], 'yamadan sonraki tutunma noktasi', TOPLAM_NOKTA); y([-40, 12], 'bilinen yolu kapanan nokta-gunu', t.noktaGun); for (const [b, sad] of YAMALANAMAZ) { const i = SINIF.findIndex((s) => s.ad === sad), d = DUYURU.find((x) => x[1] === b); y([-40, 12], `yamalanamayan ${b}/${sad}`, `${BILESEN[b].nokta[i] * SINIF[i].makine} nokta x ${s2(UFUK - d[0])} gun`); } y([-40, 12], 'acil yolun kisalttigi ortalama pencere', s2(tara('takvim').ortPencere - tara('hepsi-acil').ortPencere)); y([-40, 12], 'acil yolun uygulama suresi', `${s2(ACIL_SURE)} gun`);
102 makine, 1038 tutunma noktasi, 120 gunde 12 duyuru (4 acil isaretli) 1. takvim duzeninde duyuru basina pencere (gun) ve acik nokta duyuru gun saha sube toplayici sunucu acik nokta nokta-gunu sistem-kitapligi 4.0 2.0 13.0 5.0 5.0 102 725 cekirdek 13.5 13.5 3.5 2.5 25.5 204 2560 kabuk 21.0 6.0 10.0 2.0 18.0 198 1762 gozetim-ajani 28.5 19.5 2.5 1.5 10.5 204 3028 uzak-yonetim 34.0 - 11.0 3.0 5.0 42 344 sistem-kitapligi 42.5 5.5 2.5 1.5 26.5 102 770 yama-ajani 51.5 17.5 7.5 6.5 17.5 204 3232 cekirdek 58.5 10.5 0.5 6.5 10.5 204 1972 is-yazilimi 66.0 - 7.0 6.0 3.0 42 848 kimlik-eklentisi 74.5 - 12.5 4.5 24.5 42 515 kabuk 88.0 2.0 13.0 5.0 11.0 198 1456 sistem-kitapligi 97.5 13.5 3.5 2.5 1.5 102 1136 2. uc duzen: pencere, nokta-gunu ve acil yamanin bedeli duzen ort pencere nokta-gunu atlanan tam kesinti servis kes. acik nokta takvim 10.8 17700 0/48 0 0 12 karma 8.6 14080.5 12/48 184 82 12 hepsi-acil 2.3 3801 36/48 460 479 12 3. yamanin nokta sayisina etkisi yamadan onceki tutunma noktasi 1038 yamanin kapattigi nokta 0 yamadan sonraki tutunma noktasi 1038 bilinen yolu kapanan nokta-gunu 14080.5 yamalanamayan is-yazilimi/toplayici 12 nokta x 54.0 gun acil yolun kisalttigi ortalama pencere 8.5 acil yolun uygulama suresi 1.5 gun
Pencere Bileşenin Değil, Takvimin Ürünü
İlk tablonun satırları aynı duyuruyu dört ayrı pencere olarak gösteriyor. Yirmi birinci gündeki kabuk duyurusunda saha dizüstü bilgisayarında pencere 6 gün, şube ucunda 10, toplayıcı makinede 2 ve işleme sunucusunda 18. Aradaki fark bileşenden gelmiyor; duyurunun bakım takvimine göre nereye düştüğünden geliyor. Yedi günlük takvimi olan toplayıcı makinede en uzun pencere bile 6,5 günü geçmiyor; otuz günlük takvimi olan işleme sunucusunda 26,5 güne çıkabiliyor.
Bu, “yama ne kadar hızlı uygulanıyor” sorusunun tek bir sayıyla yanıtlanamayacağı anlamına gelir. Sunucu sınıfının takvimi en seyrek olandır ve gerekçesi vardır: yeniden başlatma iş kesintisi demektir, dolayısıyla değişiklik onayı gerekir. Aynı gerekçe pencereyi otuz güne kadar uzatır.
Nokta-günü sütunu duyuruları büyüklüğe göre yeniden sıralıyor ve sıralama gün sayısını izlemiyor. Elli birinci gündeki yama ajanı duyurusu 3232 nokta-günü taşıyor; kırk ikinci gündeki sistem kitaplığı duyurusu, dört sınıfın hepsinde çok kısa pencerelere denk geldiği için 770. Aradaki farkın bir bölümü etkilenen nokta sayısından geliyor (204’e karşı 102), bir bölümü takvim hizalanmasından. İki duyuru “aynı önem düzeyinde” işaretlense bile taşıdıkları ağırlık dört kat farklıdır ve fark ancak nokta-günü hesaplandığında görünür.
Üç Düzen ve Acil Yolun Bedeli
İkinci tablo üç düzeni karşılaştırıyor: her şey takvimle, yalnız acil işaretli duyurular acil yolla ve her şey acil yolla. Ortalama pencere 10,8 günden 8,6’ya, oradan 2,3 güne iniyor. Nokta-günü 17.700’den 3801’e düşüyor — beşte birden az.
Aynı satırlarda üç bedel sütunu var. Kırk sekiz sınama kaleminin (on iki duyuru, dört kalem) takvim düzeninde hiçbiri atlanmıyor; karma düzende 12’si, her şeyin acil yolla uygulandığı düzende 36’sı atlanıyor. Atlanan kalemler uyumluluk sınaması, geri alma provası ve kullanıcı bildirimidir; pilot grup her düzende korunuyor.
Kesinti sütunları asıl bedeli veriyor. Takvim düzeninde yeniden başlatmalar bakım penceresine denk geldiği için plan dışı kesinti sıfırdır. Karma düzende 184 makine plan dışı tam yeniden başlatma, 82 makine servis kesintisi yaşıyor. Her şey acil yolla uygulandığında bu sayılar 460 ve 479 oluyor: 120 günde 939 plan dışı kesinti, yüz iki makinelik bir filoda makine başına dokuzdan fazla. Sekiz buçuk günlük pencere kazancının karşılığı budur ve kararı veren kişinin iki sayıyı yan yana okuması gerekir.
Üçüncü blokta bir sayı bu bedeli sınırlıyor: acil yol 1,5 günde uyguluyor ama ortalama pencere 2,3 günde kalıyor. Aradaki 0,8 gün, sahada çevrimdışı olduğu için turu kaçıran dokuz dizüstü bilgisayardan ve bir şube ucundan geliyor. Bu on makine acil yolu da kaçırıyor ve bir sonraki takvim gününü bekliyor. Pencereyi kısaltmanın alt sınırı yamanın hazır olma süresi değil, filonun ulaşılabilirliğidir.
Kapanmayan Nokta
Üçüncü blok dersin ayrımını sayıya bağlıyor. Filodaki tutunma noktası sayısı yamadan önce 1038, sonra 1038. Yamanın kapattığı nokta sıfır. Kapanan şey 14.080,5 nokta-günüdür: noktaların bilinen bir yolla ulaşılabilir olduğu sürenin toplamı.
Son sütundaki 12 sayısı üç düzende de aynı kalıyor. Toplayıcı makinelerdeki alım hizmeti sürüm uyumluluğu nedeniyle yükseltilemiyor; duyurudan sonraki 54 gün boyunca 12 nokta açık kalıyor ve hiçbir takvim değişikliği bunu kapatmıyor. Bu kalem için pencere kavramı anlamını yitirir, çünkü pencerenin kapanacağı bir gün yoktur.
Yamalanamayan bir kalemin karşılığı yamada değil, önceki dersin sütunundadır: nokta kapatılamıyorsa en azından görünür kılınmalıdır. On iki noktanın tanımı taban çizgisine yazılır ve değişip değişmediği karşılaştırılır. Bu, kusuru gidermez; kusurun kullanıldığı anı kayda geçirilebilir kılar. İki sütun arasındaki fark tam olarak budur ve bu kalemde ikinci sütundan başkası yoktur.
Özet
- Yama bir tutunma noktasını kaldırmaz: filodaki nokta sayısı yamadan önce de sonra da 1038’dir. Yamanın azalttığı şey noktanın bilinen bir yolla ulaşılabilir olduğu süredir; kapattığı nokta sayısı sıfırdır.
- Pencere bileşenin değil takvimin ürünüdür: aynı duyuru yedi günlük takvimde 2, otuz günlük takvimde 18 gün açık kalır. Tek bir “ortalama yama süresi” bu farkı gizler.
- Nokta-günü duyuruları yeniden sıralar: 204 nokta etkileyen bir duyuru 3232, 102 nokta etkileyen bir başkası 770 nokta-günü taşır. Aynı önem düzeyi aynı ağırlık demek değildir.
- Acil yol ortalama pencereyi 10,8 günden 2,3 güne indirir; karşılığında 48 sınama kaleminin 36’sı atlanır ve 120 günde 939 plan dışı kesinti üretilir.
- Pencerenin alt sınırını yamanın hazır olma süresi değil filonun ulaşılabilirliği belirler: acil yol 1,5 günde uygulanır, ortalama 2,3 günde kalır, fark çevrimdışı 10 makineden gelir.
- Yamalanamayan kalem üç düzende de 12 nokta açık bırakır ve 54 gün boyunca kapanmaz; bu kalemin tek karşılığı ikinci sütundur — kapatma değil, taban çizgisine yazıp karşılaştırma.
Sonraki Adım
Buraya kadar iki iş yapıldı: gereksiz kalem ayıklandı ve kalanların bilinen kusurları kapatıldı. İkisinin de dayandığı liste bu iki derste elle yazıldı — hangi kalemin gerekli olduğuna ve hangi takvimin uygun olduğuna karar veren biri vardı ve kararların gerekçesi yazılmadı. Sonraki dersin konusu bu boşluktur: yapılandırma kıyaslama kılavuzları aynı kararları madde madde toplar ve bir taban çizgisi önerir. Ölçü, kılavuzun kaç madde içerdiği değil, o maddelerin bu ortamda ne yaptığıdır: kaç madde uçların taban çizgisiyle uyumsuz, kaç madde bu ortamda hiç uygulanamıyor ve kaç madde uygulandığında meşru bir işi durduruyor. Üçü ayrı sayılmadığında tek bir uyum yüzdesi kalır ve o yüzde, kapanan nokta sayısı hakkında hiçbir şey söylemez.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.