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

un

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

L = λ × W

კაპაციტეტის დაგეგმვის ყველაზე სასარგებლო განტოლება

ნებისმიერი სტაბილური რიგისთვის, მისი შიდა სტრუქტურის მიუხედავად: L = λ × W, სადაც:

- L = სისტემაში საშუალო ელემენტების რაოდენობა (მიმდინარე დამუშავებაში ან რიგში)

- λ (ლამბდა) = საშუალო მოსვლის სიხშირე (ელემენტები დროის ერთეულში)

- W = საშუალო დრო, რომელსაც თითოეული ელემენტი ატარებს სისტემაში

გეომეტრიული ინტერპრეტაცია: დახაზეთ λ ერთ ღერძზე და W მეორეზე. მათი ნამრავლი L არის მართკუთხედის ფართობი, რომელსაც ისინი ქმნიან. ტევადობის დაგეგმვა (capacity planning) სწორედ ამ მართკუთხედის შიგნით ცხოვრობს.

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

სამი კონკრეტული მაგალითი:

- ვებ-სერვისი обрабатывает 200 მოთხოვნას/წამში საშუალო ლატენციით 50 მწ (0.05 წ). L = 200 × 0.05 = 10 მოთხოვნა სისტემაში.

- ყავის მაღაზია ემსახურება 60 კლიენტს/საათში, საშუალო დროით შენობაში 15 წუთი (0.25 საათი). L = 60 × 0.25 = 15 კლიენტი შიგნით.

- ბэкენდის პული обрабатывает 1500 მოთხოვნას/წამში საშუალო ლატენციით 200 მწ (0.2 წ). L = 1500 × 0.2 = 300 მოთხოვნა სისტემაში.

ზომის განსაზღვრის შედეგი: ტიერის worker-ების რაოდენობა / თრედების რაოდენობა / კავშირების რაოდენობა უნდა იყოს მინიმუმ L, რომ სისტემამ გაუმკლავდეს დატვირთვას. ნაკლები რაოდენობა იწვევს რიგის (queue) ზრდას.

Little's Law როგორც ფართობი: λ x-ზე, W y-ზე, L = ფართობი

თქვენი API ტიერი обрабатывает 1,200 მოთხოვნას/წამში საშუალო ლატენტობით 80 მწ. გამოიყენეთ Little's Law და გამოთვალეთ L. შემდეგ ახსენით, რა შეიცვლება (ა) თუ ტრაფიკი გაორმაგდება 2,400 მოთხოვნამდე/წამში და ლატენტობა უცვლელი დარჩება, და (ბ) თუ ტრაფიკი დარჩება 1,200-ზე, მაგრამ ლატენტობა გაიზრდება 160 მწ-მდე. რომელი სცენარი იძლევა უფრო დიდ L-ს და რას ნიშნავს ეს ოპერაციულად?

რატომ იფეთქებს ლატენცია 80%-ზე მეტი გამოყენებისას

ოპერაციებში ყველაზე მნიშვნელოვანი მრუდი

დახაზეთ გამოყენება x-ღერძზე (0%-დან 100%-მდე) და საშუალო ლოდინის დრო y-ღერძზე. ამ მრუდის ფორმა ერთ-ერთი ყველაზე მნიშვნელოვანი მრუდია კაპაციტეტის დაგეგმვაში.

M/M/1 რიგის მოდელი: სისტემისთვის, სადაც მოთხოვნები პუასონურია (შემთხვევითი) და მომსახურების დრო ექსპონენციალურია (შემთხვევითი), საშუალო ლოდინის დრო:

W_q = ρ / (μ × (1 - ρ))

სადაც ρ არის გამოყენება (0-დან 1-მდე), ხოლო μ — მომსახურების სიჩქარე.

მრუდის ფორმა:

- ρ = 0.5 (50% გამოყენება) დროს ლოდინის დრო მცირეა (1 მომსახურების დროის ტოლი).

- ρ = 0.7 (70% გამოყენება) დროს, ლოდინის დროა ~2.3 მომსახურების დრო.

- ρ = 0.8 (80% გამოყენება) დროს, ლოდინის დროა ~4 მომსახურების დრო.

- ρ = 0.9 (90% გამოყენება) დროს, ლოდინის დროა ~9 მომსახურების დრო.

- ρ = 0.95 (95% გამოყენება) დროს, ლოდინის დროა ~19 მომსახურების დრო.

- ρ = 1.0 (100% გამოყენება) დროს, ლოდინის დრო უსასრულოა.

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

პრაქტიკული დასკვნა: სტაბილური მდგომარეობისთვის მიზნად ისახეთ 70% გამოყენება, არასდროს 100%. 30% „თავისუფალი ადგილი“ არ არის ფუჭი ხარჯი; ეს არის შეზღუდული ლატენციის ფასი.

Queueing curve with knee at 80% utilization

მუხლის გადაწყვეტილება (Sizing Across the Knee)

ორი სცენარი:

სცენარი A: 10 რეპლიკა მუშაობს 60% CPU-ზე. Latency p99 = 100 მს.

სცენარი B: იგივე ფლოტი მუშაობს 90% CPU-ზე ტრაფიკის ზრდის გამო. p99 = 600 მს.

იგივე ფლოტი, იგივე კოდი, შეიცვალა მხოლოდ გამოყენების დონე.

აუხსენი, რატომ არის სცენარ B-ის ლატენცია 6-ჯერ უარესი, თუმცა გამოყენება გაიზარდა მხოლოდ 1.5-ჯერ, ქვიურინგის მრუდის გეომეტრიული ფორმის გამოყენებით. შემდეგ შემოგთავაზე: რა გამოყენების დონეზე უნდა დაამატოს გუნდმა კაპაციტეტი და რატომ არის ეს ზღვარი უკეთესი, ვიდრე რეალური SLO-ს დარღვევის მოლოდინი?

ზომა და ტრიგერი ერთად

სინთეზი

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

გამოიყენეთ ორივე.

ბექენდის ტიერი ამუშავებს 2,000 req/s-ს საშუალო ლატენტობით 50 მს ერთ რეპლიკაზე, რომლის სიმძლავრეა 80 req/s 70%-იან CPU-ზე. საგანგებო ფაქტორი 2x; გსურთ გადაურჩოთ 3 ერთდროულ რეპლიკის გაუმართავობას.

გამოთვალეთ: (1) L Little-ის კანონით ბაზურ მდგომარეობაში; (2) რეპლიკების რაოდენობა გაკვეთილის ფორმულით (peak × surge / per-replica) + headroom; (3) რომელ დაკვირვებულ გამოყენებაზე უნდა გააქტიურდეს ავტომასშტაბირება მთელ ფლოტზე და დაასაბუთეთ ზღვარი რიგის მრუდის გამოყენებით.

თანმხვედრი შენიშვნები

თანმხვედრი შენიშვნები

ეს გეომეტრიის გაკვეთილი Stateless Horizontal Scaling-ის მთავარ გაკვეთილს რაოდენობრივ გეომეტრიად აქცევს.

შემდეგი თანამგზავრი, geometry_of_ingress_egress_separation, ქსელის საზღვრის გაყოფას ორმხრივ გრაფად აქცევს, რომელსაც აქვს საჭრელი წვერო, რომელსაც ეს გაყოფა აშორებს.

კარგად შეასრულეთ.