Go Runtime ulertzea: Scheduler | Mewayz Blog Skip to main content
Hacker News

Go Runtime ulertzea: Scheduler

Iruzkinak

8 min read Via internals-for-interns.com

Mewayz Team

Editorial Team

Hacker News

Sarrera: Zure Go aplikazioen zuzendari ikusezina

Go programa bat idazten duzunean, logikan, funtzioetan eta kanaletan zentratzen zara. `go myFunction()` idazten duzu eta zure kodea ezin hobeto exekutatzen da. Baina gainazalean, zuzendari ikusezin bat antzezpena orkestratzen ari da, zure errutina aldiberekoek arin eta eraginkortasunez funtzionatzen dutela ziurtatuz. Maisu hau Go exekuzio-programatzailea da. Nola funtzionatzen duen ulertzea ez da ariketa akademiko bat soilik; funtsezkoa da errendimendu handiko software eskalagarria idazteko. Mewayz bezalako plataformentzat, negozio-prozesu konplexu eta modularrak aldi berean kudeatzeko eraikita daudenentzat, programatzailearen indarguneak aprobetxatzea funtsezkoa da enpresentzako sistema eragile sentikorra eta fidagarria emateko.

Zer da Go Scheduler eta zergatik behar dugu?

Go goroutinetan oinarritutako aldibereko eredu sinple eta indartsuagatik da ezaguna. Goroutines Go exekuzio-denborak kudeatzen dituen "hari berde" arinak dira, ez sistema eragileak. Horietako milaka sortzea merkea da memoria eta gastu orokorrak. Hala ere, goroutine hauek, azken finean, OS fisikoen harietan exekutatu behar dute, askoz astunagoak eta kopuruz mugatuak direnak. Go programatzailea goroutine kopuru potentzial handia mapatzen duen geruza adimenduna da OS hari multzo txiki batean. Bere zeregin nagusia lan karga banatzea da, aldiberekotasuna eraginkorra eta praktikoa eginez. Hori gabe, sistema eragilearen hariak zuzenean kudeatzen trabatuta geratuko ginateke, zeregin konplexu eta akatsetarako joera duena, Go-ren aldibereko abantaila asko ezeztatuko lituzkeena.

GMP eredua: Scheduler-en oinarrizko arkitektura

Go programatzaileak GMP deritzon eredu batean funtzionatzen du, hau da, Goroutines, OS Threads (Makina) eta Prozesadoreak. Hirukote honek elkarrekin lan egiten du zure kodea exekutatzeko.

  • G (Goroutine): Hau da aldibereko exekuzioaren oinarrizko unitatea. Funtzio bat exekutatzeko beharrezkoa den pila, instrukzio-erakuslea eta beste informazio batzuk ditu.
  • M (Makina): M batek OS haria adierazten du. Sistema eragileak CPU nukleo batean exekutatzeko programatzen duen benetako entitatea da.
  • P (Prozesadorea): A P prozesadore logikoa edo programaziorako testuingurua da. Go kodea exekutatzeko behar diren baliabideak adierazten ditu. P bakoitzak goroutinez osatutako (G) exekuzio-ilara lokal bat du exekutatzeko prest. Ps kopurua erabilgarri dauden CPU nukleoen (GOMAXPROCS) kopuruarekin ezartzen da normalean.

Erlazioa funtsezkoa da: P bat erantsi behar zaio M bati Go kodea exekutatzeko, eta, ondoren, M-ak goroutinak exekutatzen ditu Pren tokiko ilaratik. Abstrakzio honi esker, programatzaileak modu eraginkorrean kudeatu dezake lan-banaketa eskuragarri dauden CPU-nukleoetan.

Planifikazioaren mekanika: lana nola banatzen den

Antolatzailearen adimena ilarak eta M-P erlazioak kudeatzen dituenean datza. Antolatzaile prebentiboa da, hau da, exekutatzen ari den goroutine bat eten dezake besteei exekutatzeko aukera emateko. Honek goroutine bakar batek P bat mugagabean harrapatzea eragozten du. Funtsezko mekanismoak hauek dira:

Lana lapurtzea: P bat bere tokiko ilaran goroutinerik gabe geratzen denean, ez da inaktibo geratzen. Horren ordez, beste P-ren exekuzio-ilara batetik goroutinen erdia "lapurtzen" saiatzen da. Horrek huts egiten badu, exekuzio-ilara globala egiaztatzen du. Honek PUZ guztiak lanpetuta mantentzen direla ziurtatzen du sistemako edozein lekutan egiteko lana dagoen bitartean.

Sistema-deiak: goroutine batek sistema blokeatzeko dei bat egiten duenean (adibidez, fitxategi bat irakurtzen du), programatzaileak eskualdaketa bat egiten du. Deia exekutatzen duen haria (M) blokeatu egiten da, baina erantsita zegoen P-a ez da geldirik geratzen. Antolatzaileak P desaktibatzen du eta inaktibo M bat aurkitzen du edo beste bat sortzen du P-ra lotzeko, beste goroutin batzuk exekutatzen jarrai dezan. Sistema-deia amaitzen denean, goroutine exekuzio-ilara batean jartzen da berriro, eta M-a P bat aurkitzen saiatzen da exekutatzen jarraitzeko.

💡 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 scheduler-en lana lapurtzeko algoritmoa ingeniaritza maisulana da, banakako prozesadoreen bilduma lan-karga osoa eraginkortasunez orekatzen duen talde kooperatibo batean bihurtzen duena.

Mewayz bezalako sistema eskalagarriak eraikitzeko ondorioak

Mewayz bezalako negozio-OS modular baterako, non modulu ezberdinek (CRMtik hasi eta inbentarioen kudeaketara arte) modu independentean baina kohesionatu behar duten funtzionatu behar duten, Go scheduler-en diseinua abantaila nabarmena da. Aplikazio-logika goroutine txiki eta aldi berean egituratuz, Mewayz-ek errendimendu handia lor dezake. Antolatzaileak automatikoki banatzen ditu zeregin hauek erabilgarri dauden CPU nukleo guztietan, sistemak karga astunetan ere sentikorra izaten jarraitzen duela bermatuz. Mewayz-en oinarritutako garatzaileek kode argi eta modularra idaztera bideratu dezakete hari mikrokudeatu gabe, azpian dagoen exekuzio denborak exekuzio paraleloaren zeregin konplexua eraginkortasunez kudeatuko duela ziur. Horri esker, Mewayz-ek negozio modernoek beren oinarrizko sistema eragileetatik eskatzen duten errendimendua eta eskalagarritasuna eskaintzeko aukera ematen du.

Ohiko galderak

Sarrera: Zure Go aplikazioen zuzendari ikusezina

Go programa bat idazten duzunean, logikan, funtzioetan eta kanaletan zentratzen zara. `go myFunction()` idazten duzu eta zure kodea ezin hobeto exekutatzen da. Baina gainazalean, zuzendari ikusezin bat antzezpena orkestratzen ari da, zure errutina aldiberekoek arin eta eraginkortasunez funtzionatzen dutela ziurtatuz. Maisu hau Go exekuzio-programatzailea da. Nola funtzionatzen duen ulertzea ez da ariketa akademiko bat soilik; funtsezkoa da errendimendu handiko software eskalagarria idazteko. Mewayz bezalako plataformentzat, negozio-prozesu konplexu eta modularrak aldi berean kudeatzeko eraikita daudenentzat, programatzailearen indarguneak aprobetxatzea funtsezkoa da enpresentzako sistema eragile sentikorra eta fidagarria emateko.

Zer da Go Scheduler eta zergatik behar dugu?

Go goroutinetan oinarritutako aldibereko eredu sinple eta indartsuagatik da ezaguna. Goroutines Go exekuzio-denborak kudeatzen dituen "hari berde" arinak dira, ez sistema eragileak. Horietako milaka sortzea merkea da memoria eta gastu orokorrak. Hala ere, goroutine hauek, azken finean, OS fisikoen harietan exekutatu behar dute, askoz astunagoak eta kopuruz mugatuak direnak. Go programatzailea goroutine kopuru potentzial handia mapatzen duen geruza adimenduna da OS hari multzo txiki batean. Bere zeregin nagusia lan karga banatzea da, aldiberekotasuna eraginkorra eta praktikoa eginez. Hori gabe, sistema eragilearen hariak zuzenean kudeatzen trabatuta geratuko ginateke, zeregin konplexu eta akatsetarako joera duena, Go-ren aldibereko abantaila asko ezeztatuko lituzkeena.

GMP eredua: Scheduler-en oinarrizko arkitektura

Go programatzaileak GMP deritzon eredu batean funtzionatzen du, hau da, Goroutines, OS Threads (Makina) eta Prozesadoreak. Hirukote honek elkarrekin lan egiten du zure kodea exekutatzeko.

Programazio-mekanika: lana nola banatzen den

Antolatzailearen adimena ilarak eta M-P erlazioak kudeatzen dituenean datza. Antolatzaile prebentiboa da, hau da, exekutatzen ari den goroutine bat eten dezake besteei exekutatzeko aukera emateko. Honek goroutine bakar batek P bat mugagabean harrapatzea eragozten du. Funtsezko mekanismoak hauek dira:

Mewayz bezalako sistema eskalagarriak eraikitzeko ondorioak

Mewayz bezalako negozio-OS modular baterako, non modulu ezberdinek (CRMtik hasi eta inbentarioen kudeaketara arte) modu independentean baina kohesionatu behar duten funtzionatu behar duten, Go scheduler-en diseinua abantaila nabarmena da. Aplikazio-logika goroutine txiki eta aldi berean egituratuz, Mewayz-ek errendimendu handia lor dezake. Antolatzaileak automatikoki banatzen ditu zeregin hauek erabilgarri dauden CPU nukleo guztietan, sistemak karga astunetan ere sentikorra izaten jarraitzen duela bermatuz. Mewayz-en oinarritutako garatzaileek kode argi eta modularra idaztera bideratu dezakete hari mikrokudeatu gabe, azpian dagoen exekuzio denborak exekuzio paraleloaren zeregin konplexua eraginkortasunez kudeatuko duela ziur. Horri esker, Mewayz-ek negozio modernoek beren oinarrizko sistema eragileetatik eskatzen duten errendimendua eta eskalagarritasuna eskaintzeko aukera ematen du.

Zure negozio-tresna guztiak leku bakarrean

Utzi hainbat aplikazio malabareari. Mewayz-ek 208 tresna konbinatzen ditu hileko $ 49 soilik - inbentariotik hasi eta HR, erreserba eta analisietara. Ez da kreditu-txartelik behar hasteko.

Probatu Mewayz doan →