„Go Runtime“ supratimas: planuoklis | Mewayz Blog Skip to main content
Hacker News

„Go Runtime“ supratimas: planuoklis

komentarai

8 min read Via internals-for-interns.com

Mewayz Team

Editorial Team

Hacker News

Įvadas: nematomas jūsų „Go“ programų vedėjas

Kai rašote programą „Go“, daugiausia dėmesio skiriate logikai, funkcijoms ir kanalams. Įvedate „go myFunction()“ ir jūsų kodas bus vykdomas sklandžiai. Tačiau po paviršiumi nematomas dirigentas organizuoja pasirodymą ir užtikrina, kad jūsų vienu metu atliekamos procedūros vyktų sklandžiai ir efektyviai. Šis maestro yra „Go“ vykdymo laiko planavimo priemonė. Supratimas, kaip tai veikia, nėra tik akademinis pratimas; tai labai svarbu rašant didelio našumo, keičiamo dydžio programinę įrangą. Tokiose platformose kaip „Mewayz“, kurios sukurtos taip, kad vienu metu tvarkytų sudėtingus, modulinius verslo procesus, planuotojo pranašumų panaudojimas yra labai svarbus norint sukurti įmonėms reaguojančią ir patikimą operacinę sistemą.

Kas yra „Go Scheduler“ ir kodėl mums jo reikia?

Go garsėja savo paprastu ir galingu lygiagrečio modeliu, pagrįstu gorutinomis. „Goroutines“ yra lengvos „žalios gijos“, kurias valdo „Go“ vykdymo laikas, o ne operacinė sistema. Sukurti tūkstančius jų yra pigu atminties ir pridėtinių išlaidų atžvilgiu. Tačiau šios gorutinos galiausiai turi veikti fizinėse OS gijose, kurios yra daug sunkesnės ir riboto skaičiaus. „Go“ planavimo priemonė yra išmanusis sluoksnis, kuris potencialiai didžiulį gorutinų skaičių susieja į nedidelį OS gijų telkinį. Jos pagrindinė užduotis yra paskirstyti darbo krūvį, kad lygiagretumas būtų efektyvus ir praktiškas. Be jos įstrigtume tiesiogiai valdydami OS gijas. Tai sudėtinga ir dažnai klaidų reikalaujanti užduotis, kuri panaikintų didžiąją dalį Go lygiagrečio pranašumo.

GMP modelis: planuotojo pagrindinė architektūra

Go planuoklis veikia pagal modelį, dažnai vadinamą GMP, kuris reiškia Goroutines, OS Threads (Machines) ir Processors. Ši trijulė dirba kartu, kad vykdytų jūsų kodą.

  • G (Goroutine): tai pagrindinis vienu metu vykdomo vykdymo vienetas. Jame yra krūva, instrukcijų rodyklė ir kita informacija, reikalinga funkcijai vykdyti.
  • M (mašina): M reiškia OS giją. Tai tikrasis objektas, kurį operacinė sistema suplanuoja veikti procesoriaus branduolyje.
  • P (procesorius): A P yra loginis procesorius arba planavimo kontekstas. Tai reiškia išteklius, reikalingus Go kodui vykdyti. Kiekvienas P turi vietinę gorutinų (G) eilę, paruoštą paleisti. Ps skaičius paprastai nustatomas pagal galimų procesoriaus branduolių skaičių (GOMAXPROCS).

Ryšys yra esminis: P turi būti pridėtas prie M, kad būtų vykdomas Go kodas, o M tada vykdo gorutinas iš P vietinės eilės. Ši abstrakcija leidžia planuokliui efektyviai valdyti darbo paskirstymą turimuose procesoriaus branduoliuose.

Tvarkaraščio mechanika: kaip paskirstomas darbas

Planuotojo intelektas slypi tame, kaip jis valdo eiles ir M-P ryšius. Tai prevencinis planuoklis, o tai reiškia, kad jis gali nutraukti vykdomą gorutiną ir suteikti kitiems galimybę ją vykdyti. Tai neleidžia vienai gorutinai neribotą laiką sugauti P. Pagrindiniai mechanizmai:

Darbo vagystė: kai P baigiasi gorutinų vietinėje eilėje, jis nedirba. Vietoj to, jis bando „pavogti“ pusę gorutinų iš kitos P eilės eilės. Jei tai nepavyksta, jis patikrina visuotinę paleidimo eilę. Taip užtikrinama, kad visi centriniai procesoriai būtų užimti tol, kol bus atlikta darbo bet kurioje sistemos vietoje.

Sistemos skambučiai: kai gorutina atlieka blokuojančią sistemos iškvietimą (pvz., nuskaito failą), planuoklis atlieka perdavimą. Sriegis (M), vykdantis skambutį, užblokuojamas, bet P, prie kurio jis buvo prijungtas, nepalieka įtrūkęs. Planavimo priemonė atjungia P ir randa neveikiantį M arba sukuria naują, kad būtų galima prijungti prie P, kad galėtų toliau vykdyti kitas gorutinas. Kai sistemos iškvietimas baigiamas, gorutina grąžinama į vykdymo eilę, o M bando rasti P, kad galėtų tęsti vykdymą.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
„Go“ planuotojo darbo vagystės algoritmas yra inžinerijos šedevras, paverčiantis atskirų procesorių kolekciją į bendradarbiaujančią komandą, kuri efektyviai subalansuoja visą darbo krūvį.

Poveikis kuriant keičiamo dydžio sistemas, pvz., Mewayz

Modulinėje verslo OS, pvz., „Mewayz“, kur skirtingi moduliai – nuo ​​CRM iki atsargų valdymo – turi veikti nepriklausomai, tačiau nuosekliai, „Go“ planuotojo dizainas yra didelis pranašumas. Struktūrizuodamas programų logiką į daugybę mažų, vienu metu vykstančių gorutinų, Mewayz gali pasiekti didelį pralaidumą. Planuoklė automatiškai paskirsto šias užduotis visuose turimuose procesoriaus branduoliuose, užtikrindama, kad sistema reaguotų net esant didelei apkrovai. Kūrėjai, kuriantys „Mewayz“, gali sutelkti dėmesį į aiškaus, modulinio kodo rašymą be mikrovaldymo gijų, įsitikinę, kad pagrindinė vykdymo laikas efektyviai susidoros su sudėtinga lygiagretaus vykdymo užduotimi. Tai leidžia „Mewayz“ užtikrinti našumą ir mastelį, kurio šiuolaikinės įmonės reikalauja iš savo pagrindinių operacinių sistemų.

Dažniausiai užduodami klausimai

Įvadas: nematomas jūsų „Go“ programų vedėjas

Kai rašote programą „Go“, daugiausia dėmesio skiriate logikai, funkcijoms ir kanalams. Įvedate „go myFunction()“ ir jūsų kodas bus vykdomas sklandžiai. Tačiau po paviršiumi nematomas dirigentas organizuoja pasirodymą ir užtikrina, kad jūsų vienu metu atliekamos procedūros vyktų sklandžiai ir efektyviai. Šis maestro yra „Go“ vykdymo laiko planavimo priemonė. Supratimas, kaip tai veikia, nėra tik akademinis pratimas; tai labai svarbu rašant didelio našumo, keičiamo dydžio programinę įrangą. Tokiose platformose kaip „Mewayz“, kurios sukurtos taip, kad vienu metu tvarkytų sudėtingus, modulinius verslo procesus, planuotojo pranašumų panaudojimas yra labai svarbus norint sukurti įmonėms reaguojančią ir patikimą operacinę sistemą.

Kas yra „Go Scheduler“ ir kodėl mums jo reikia?

Go garsėja savo paprastu ir galingu lygiagrečio modeliu, pagrįstu gorutinomis. „Goroutines“ yra lengvos „žalios gijos“, kurias valdo „Go“ vykdymo laikas, o ne operacinė sistema. Sukurti tūkstančius jų yra pigu atminties ir pridėtinių išlaidų atžvilgiu. Tačiau šios gorutinos galiausiai turi veikti fizinėse OS gijose, kurios yra daug sunkesnės ir riboto skaičiaus. „Go“ planavimo priemonė yra išmanusis sluoksnis, kuris potencialiai didžiulį gorutinų skaičių susieja į nedidelį OS gijų telkinį. Jos pagrindinė užduotis yra paskirstyti darbo krūvį, kad lygiagretumas būtų efektyvus ir praktiškas. Be jos įstrigtume tiesiogiai valdydami OS gijas. Tai sudėtinga ir dažnai klaidų reikalaujanti užduotis, kuri panaikintų didžiąją dalį Go lygiagrečio pranašumo.

GMP modelis: planuotojo pagrindinė architektūra

Go planuoklis veikia pagal modelį, dažnai vadinamą GMP, kuris reiškia Goroutines, OS Threads (Machines) ir Processors. Ši trijulė dirba kartu, kad vykdytų jūsų kodą.

Tvarkaraščio mechanika: kaip paskirstomas darbas

Planuotojo intelektas slypi tame, kaip jis valdo eiles ir M-P ryšius. Tai prevencinis planuoklis, o tai reiškia, kad jis gali nutraukti vykdomą gorutiną ir suteikti kitiems galimybę ją vykdyti. Tai neleidžia vienai gorutinai neribotą laiką sugauti P. Pagrindiniai mechanizmai:

Poveikis kuriant keičiamo dydžio sistemas, tokias kaip „Mewayz“

Modulinėje verslo OS, pvz., „Mewayz“, kur skirtingi moduliai – nuo CRM iki atsargų valdymo – turi veikti nepriklausomai, tačiau nuosekliai, „Go“ planuotojo dizainas yra didelis pranašumas. Struktūrizuodamas programų logiką į daugybę mažų, vienu metu vykstančių gorutinų, Mewayz gali pasiekti didelį pralaidumą. Planuoklė automatiškai paskirsto šias užduotis visuose turimuose procesoriaus branduoliuose, užtikrindama, kad sistema reaguotų net esant didelei apkrovai. Kūrėjai, kuriantys „Mewayz“, gali sutelkti dėmesį į aiškaus, modulinio kodo rašymą be mikrovaldymo gijų, įsitikinę, kad pagrindinė vykdymo laikas efektyviai susidoros su sudėtinga lygiagretaus vykdymo užduotimi. Tai leidžia „Mewayz“ užtikrinti našumą ir mastelį, kurio šiuolaikinės įmonės reikalauja iš savo pagrindinių operacinių sistemų.

Visi jūsų verslo įrankiai vienoje vietoje

Nustokite žongliruoti keliomis programomis. „Mewayz“ sujungia 208 įrankius tik už 49 USD per mėnesį – nuo ​​inventoriaus iki HR, užsakymo iki analizės. Norint pradėti, nereikia kredito kortelės.

Išbandykite „Mewayz Free“ →

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 6,209+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,209+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime