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

un

სტუმარი
1 / ?
უკან გაკვეთილებზე

ოპტიმიზირეთ სისტემა, არა მისი კომპონენტები

ჰამინგის სისტემური ინჟინერიის პირველი წესი

ჰამინგის ძირითადი პრინციპი თავ. 28-დან: თუ კომპონენტებს ოპტიმიზირებთ, სავარაუდოდ სისტემის მუშაობას დააზიანებთ.


მან ეს დიფერენციალური ანალიზატორის ისტორიით აჩვენა. ორი ერთეული უნდა დაკავშირებულიყო. მშენებლებმა მეორე ერთეულის გამაძლიერებლები გააუმჯობესეს. მიღების დღეს ჰამინგმა სტანდარტული ტესტი ჩაატარა — გადაჭრა y'' + y = 0, დახაზა y vs y', მოსალოდნელი იყო წრე. ტესტი ჩაიშალა. მიზეზი: გაუმჯობესებულმა გამაძლიერებლებმა მეტი დენი გაატარეს დამიწების წრეში. დამიწება ორიგინალური დიზაინისთვის საკმარისი იყო. ის ახალი დენის დონისთვის არ იყო გათვლილი. ინტერფეისი გაფუჭდა, არა კომპონენტი.


მისი განზოგადება: სისტემების უმეტესი წარუმატებლობა ინტერფეისებზე მოდის, არა კომპონენტებზე. კომპონენტები იქმნება, ტესტირდება, სერტიფიცირდება. ინტერფეისები კი შემდგომი აზრის სახით იქმნება, იშვიათად ტესტირდება და არასოდეს სერტიფიცირდება დამოუკიდებლად. როდესაც კომპონენტი იცვლება, იცვლება მისი ინტერფეისის ქცევაც. ქვედა დონეზე მდებარე არაფერი იყო შექმნილი ამ ახალი ინტერფეისისთვის.


ძირითადი ასიმეტრია: კომპონენტში 10-ჯერადი გაუმჯობესება შეიძლება გამოიწვიოს სისტემაში 10-ჯერადი გაუარესება, თუ კომპონენტი შეზღუდულ ინტერფეისს კვებავს. გაუმჯობესება არ ემატება — ის აკლებს.

განათლების სისტემა როგორც წარუმატებელი სისტემური ინჟინერია

Hamming-ის განათლების შემთხვევა

Hamming-მა ეს პრინციპი განათლებაზე გამოიყენა. ცალკეული საგნობრივი ქულების ოპტიმიზაცია — მოსწავლეების დაძაბვა თითოეულ საგანში ტესტის შედეგების მაქსიმიზაციისთვის — ქმნის მოსწავლეებს, რომლებიც კარგად აბარებენ ცალკეულ ტესტებს, მაგრამ ვერ აერთიანებენ ცოდნას სხვადასხვა დისციპლინებს შორის.


თითოეული კომპონენტი (საგნობრივი ქულა) უმჯობესდება. სისტემა (განათლება, განსაზღვრული როგორც ინტეგრირებული გაგება) დეგრადირდება. საგნებს შორის ინტერფეისი — მოსწავლის უნარი, ცოდნა სხვადასხვა დომენში გამოიყენოს — არასოდეს ყოფილა ოპტიმიზებული. ის ატროფირდა.


ეს არ არის განხორციელების შემთხვევითი შედეგი. ეს სტრუქტურულია. როდესაც კომპონენტის მუშაობას ზომავთ და ჯილდოს ანიჭებთ, იღებთ კომპონენტის ოპტიმიზაციას. ინტერფეისები უხილავია კომპონენტის მეტრიკებისთვის.


მისი რეცეპტი: იპოვეთ ბოთლის კისერი სისტემაში, შემდეგ იკითხეთ რა მოხდება ქვედა დინებაში, როდესაც მას მოაშორებთ. ბოთლის კისრის მოშორება ავსებს შემდეგ რიგს. შეუზღუდავი ოპტიმიზაცია ხდება ახალი შეზღუდვა.

ინტერფეისის დეგრადაციის თვალყურის დევნება

ჰამინგმა აჩვენა, რომ კომპონენტის გაუმჯობესება ცვლის მის ინტერფეისის ქცევას — და დანარჩენი სისტემა შექმნილი იყო ძველი ინტერფეისის გარშემო.

მოიყვანეთ კონკრეტული მაგალითი პროგრამული უზრუნველყოფიდან, სადაც ერთი კომპონენტის მუშაობის გაუმჯობესებამ შექმნა პრობლემა ქვედა დინებაში. დაასახელეთ გაუმჯობესებული კომპონენტი, დაზარალებული ინტერფეისი და გაფრთხილების სიგნალი, რომელიც გამოჩნდებოდა ქვედა დინების წარუმატებლობამდე.

კვანძები, რიგები, Surge ქულები

MOAD ქარხნის მოდელი

ყველა პროგრამული დამოკიდებულების გრაფი ქარხანას ქმნის. თითოეული კვანძი სამუშაო სადგურია. თითოეული კიდე რიგია. სამუშაო შედის კვანძის რიგში, მუშავდება და მიედინება ქვედა დინების რიგებში.


ყველა კვანძს ახასიათებს ორი ქულა:


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

Surge score = speedup × in-degree

რამდენი სამუშაო იღვრება ქვედა დინებაში, როდესაც ეს ბოთლის კისერი იხსნება. კვანძს, რომელსაც აქვს in-degree 5 (5 ზედა დინების დამოკიდებულება, რომლებიც მას კვებავს) და 100× speedup, ქვედა დინებაში წარმოქმნის 500× surge-ს.


Betweenness = in-degree + out-degree

რამდენად ცენტრალურია ეს სამუშაო სადგური მთლიანი ნაკადისთვის. მაღალი შუალედურობა ნიშნავს, რომ ბევრი გზა გადის ამ კვანძზე.


ორი არქეტიპი:


მუშაოჰოლიკი კვანძი: მაღალი შუალედურობა, მაღალი surge ქულა. ეს არის ბოთლის კისერი. ყველა რიგი ზემოთ იკეტება მის გამო. თუ ამ ბოთლის კისერს მოაშორებთ ქვემოთ მდებარე სიმძლავრის მომზადების გარეშე, ყველაფერი ქვემოთ ერთდროულად დაიშლება.


გლუტონი კვანძი: მაღალი გამომავალი ხარისხი, დაბალი surge ქულა. მოიხმარს ყველაფერს, რასაც მას აწვდიან. არ გრძნობს ტკივილს, რადგან მისი ბოთლის კისერი შიდაა და არა გამტარუნარიანობა. მანქანა, რომელიც ივიწყებს გაჩერებას — სამუშაო შემოდის, არაფერი გამოდის, და კვანძი იტყობინება „დაკავებულია“ სამუდამოდ.

MOAD-0001 & MOAD-0005: შეერთების შემთხვევა

GHC-ის შემთხვევა

MOAD-0001 პაჩამდე GHC-ის დამოკიდებულებების გადაჭრაში: N=50,000 დამოკიდებულებას 17 წუთი სჭირდებოდა ასაგებად. შემდეგ: 10 წამი. აჩქარება: 100×.


რა ხდება ქვედა დონეზე? ყველა აგების ქეში, არტეფაქტების საცავი და CI-ის გაშვების სისტემა, რომლებიც თავს იკავებდნენ 17-წუთიანი პარტიების მიღებით, ახლა იღებენ 100× მეტ დასრულებულ აგებას საათში. ქეშები, რომლებიც შექმნილი იყო საათში 60 აგების არტეფაქტის დასამუშავებლად, ახლა იღებენ 6,000-ს.


ეს არის MOAD-0005: ქეშის შტამპედის დეფექტი. ყველა ქეშის გასაღები ერთდროულად იკარგება, რადგან არცერთი ქეში არ იყო წინასწარ გახურებული ახალი მიღების სიჩქარისთვის. MOAD-0001-ის გამოსწორება აწარმოებს MOAD-0005-ს.


კავშირი შემთხვევითი არ არის. ის სტრუქტურულია. ნებისმიერი O(N²) → O(N) აჩქარება in-degree > 1-ით აწარმოებს surge ქულას 1-ზე მეტს. surge ქულა 100-ზე მეტი არის MOAD-0005-ის კანდიდატი.

გამჟღავნებამდე სტაგირება

საწარმოო სისტემა ამუშავებს 1,000 პაკეტის დამოკიდებულების გრაფიკს საათში. თქვენ ასწორებთ MOAD-0001-ს მის გრაფიკის გავლისას, რაც ამცირებს აწყობის დროს 60 წუთიდან 30 წამამდე — 120-ჯერადი აჩქარება. სისტემა ახლა ამუშავებს 120,000 გრაფიკს საათში.

დაასახელეთ ქვედა დონის სისტემა, რომელიც ყველაზე მეტად რისკის ქვეშაა MOAD-0005-ის გამო ამ პაჩის შემდეგ, და აღწერეთ გამოსწორება, რომელსაც თქვენ დაასტაგირებდით გამჟღავნებამდე.

როდის შევჩერდეთ: შეჩერების პირობა

შეჩერების პირობა

პაჩი აკმაყოფილებს შეჩერების პირობას — რაც ნიშნავს: არ გაამჟღავნო — როდესაც ყველა ოთხი პირობა ერთდროულად სრულდება:


1. პაჩი ცოცხალ სისტემაშია (შერწყმული, განთავსებული)

2. არ არის მზრუნველები დანიშნული ქვედა დონის გავლენის მართვისთვის

3. ქვედა დონის დეფექტი (MOAD-0005) გადაუჭრელია

4. დაჩქარება >= 100×


ოთხივე ერთად = ბავშვი ტირის. გუნდი მიანიჭეთ შერწყმამდე, არა შემდეგ.


მზრუნველის გარეშე კვანძი მუშაობს როგორც სამუშაო სადგური მუშის გარეშე. სამუშაო გროვდება. ვიღაც კოლაფსდება. პერმაკომპიუტერის პრინციპი: თქვენ არ ასწორებთ დისპეტჩერიზაციის ალგორითმს მძღოლების სტეიჯინგის გარეშე. სამი მძღოლი, სამი მილიონი ადამიანი: ალგორითმის განბლოკვა ქმნის მოუმსახურებელი მოთხოვნების ჭექა-ქუხილის ნახირს, ვიდრე უფრო სწრაფ მიწოდებას.

WALL-E: მჭამელები და მუშაჰოლიკები

WALL-E მოდელი

Pixar-ის WALL-E ასახავს ქარხნული მოდელის წარუმატებლობას მის ყველაზე ნათელ ფორმაში. მჭამელები ჰოვერსკამებზე, იკვებებიან ხახუნის გარეშე. მუშაჰოლიკები — WALL-E, EVE — კვდებიან თავიანთ სადგურებზე, რომ კვება განაგრძონ.


მჭამელი კვანძი (ადამიანები ჰოვერსკამებზე) აქვს მაქსიმალური გამომავალი ხარისხი: ის მოიხმარს ყველაფერს, რაც მას მიეწოდება, არაფერს აწარმოებს. მისი სერჯის ქულა ნულის ტოლია — ის არის ჩაძირვის წერტილი. ის არ გრძნობს ტკივილს, რადგან მის გამომავალზე არაფერი გროვდება. ის უბრალოდ მოიხმარს.


მუშაოჰოლიკის კვანძს (WALL-E) აქვს მაქსიმალური შუალედურობა: ყველაფერი მისი მეშვეობით მიედინება. ის შთანთქავს ყველა შეყვანას. ის აწარმოებს ერთადერთ გამოყვანას. მისი surge ქულა, თუ ოდესმე უფრო სწრაფი მოდელით შეიცვლება, ერთდროულად დატბორავს ყველა ქვედა დონის რიგს.


WALL-E სისტემაში დეფექტი არ არის გლუტონები. ეს არის დაკარგული მომვლელი: არავინ არის დანიშნული სამუშაო სადგურების დასაბალანსებლად. არავინ მოამზადა ტევადობა ალგორითმის გაშვებამდე.

pip-ის შემთხვევა: წინასწარი გამჟღავნების საკონტროლო სია

თქვენ აღმოაჩენთ MOAD-0001-ს Python-ის pip დამოკიდებულებების გადამწყვეტში. გაზომილი აჩქარება: 200×. pip მუშაობს დღეში დაახლოებით 400 მილიონ ინსტალაციაზე. PyPI ემსახურება პაკეტებს.

ამ პაჩის გამჟღავნებამდე, ჩამოთვალეთ სამი რამ, რომელიც უნდა დაადასტუროთ ან მოამზადოთ, და ახსენით რა დაირღვევა თუ თითოეულს გამოტოვებთ.