Go Runtime ကို နားလည်ခြင်း- အစီအစဉ်ဆွဲသူ | Mewayz Blog Skip to main content
Hacker News

Go Runtime ကို နားလည်ခြင်း- အစီအစဉ်ဆွဲသူ

မှတ်ချက်များ

2 min read Via internals-for-interns.com

Mewayz Team

Editorial Team

Hacker News

နိဒါန်း- သင်၏ Go အပလီကေးရှင်းများ၏ မမြင်နိုင်သော လျှပ်ကူးပစ္စည်း

သင် Go ပရိုဂရမ်တစ်ခုကို ရေးသောအခါတွင် သင်သည် ယုတ္တိဗေဒ၊ လုပ်ဆောင်ချက်များ နှင့် ချန်နယ်များကို အာရုံစိုက်သည်။ သင်သည် `go myFunction()` ဟုရိုက်ထည့်လိုက်သည်နှင့် သင့်ကုဒ်သည် ချောမွေ့စွာလုပ်ဆောင်ပါသည်။ သို့သော် မျက်နှာပြင်အောက်တွင် မမြင်နိုင်သောလျှပ်ကူးပစ္စည်းသည် စွမ်းဆောင်ရည်ကို စီစဥ်ထားပြီး သင်၏တစ်ပြိုင်တည်းလုပ်ရိုးလုပ်စဉ်များကို ချောမွေ့ပြီး ထိရောက်မှုရှိစေရန် သေချာစေပါသည်။ ဤ maestro သည် Go runtime အစီအစဉ်ဆွဲသူဖြစ်သည်။ မည်ကဲ့သို့ အလုပ်လုပ်သည်ကို နားလည်ခြင်းသည် ပညာရပ်ဆိုင်ရာ လေ့ကျင့်ခန်းတစ်ခုမျှသာ မဟုတ်ပါ။ စွမ်းဆောင်ရည်မြင့်၍ အရွယ်တင်နိုင်သော ဆော့ဖ်ဝဲကို ရေးသားရန်အတွက် အရေးကြီးပါသည်။ Mewayz ကဲ့သို့သော ပလပ်ဖောင်းများအတွက် ရှုပ်ထွေးပြီး မော်ဂျူလာလုပ်ငန်း လုပ်ငန်းစဉ်များကို တစ်ပြိုင်နက်တည်း ကိုင်တွယ်ရန် တည်ဆောက်ထားသော၊ အချိန်ဇယားဆွဲသူ၏ အားသာချက်များကို အသုံးချခြင်းသည် စီးပွားရေးလုပ်ငန်းများအတွက် တုံ့ပြန်မှုနှင့် ယုံကြည်စိတ်ချရသော လည်ပတ်မှုစနစ်ကို ပေးအပ်ရန်အတွက် အခြေခံကျပါသည်။

Go Scheduler ဆိုတာ ဘာလဲ၊ ဘာကြောင့် လိုအပ်တာလဲ။

Go သည် goroutines များကို အခြေခံ၍ ၎င်း၏ရိုးရှင်းပြီး အစွမ်းထက်သော ပေါင်းစပ်ငွေကြေးပုံစံကြောင့် ကျော်ကြားသည်။ Goroutines များသည် လည်ပတ်မှုစနစ်မဟုတ်ဘဲ Go runtime မှ စီမံခန့်ခွဲသော ပေါ့ပါးသော "အစိမ်းရောင်ချည်များ" ဖြစ်သည်။ ၎င်းတို့ထောင်ပေါင်းများစွာကို ဖန်တီးခြင်းသည် မှတ်ဉာဏ်နှင့် စရိတ်စကအားဖြင့် စျေးပေါသည်။ သို့သော်၊ ဤ goroutines များသည် နောက်ဆုံးတွင် ပိုမိုလေးလံပြီး အရေအတွက်ကန့်သတ်ထားသော ရုပ်ပိုင်းဆိုင်ရာ OS လိုင်းများပေါ်တွင် လုပ်ဆောင်ရန် လိုအပ်ပါသည်။ Go scheduler သည် OS thread ပေါင်းစုငယ်တစ်ခုပေါ်တွင် ဖြစ်နိုင်ချေရှိသော gooutines အများအပြားကို မြေပုံညွှန်းပေးသည့် အသိဉာဏ်ရှိသော အလွှာဖြစ်သည်။ ၎င်း၏အဓိကအလုပ်မှာ ဆက်စပ်ငွေကြေးကို ထိရောက်ပြီး လက်တွေ့ကျစေရန်ဖြစ်ပြီး လုပ်ငန်းတာဝန်များကို ဖြန့်ဝေရန်ဖြစ်သည်။ ၎င်းသာမရှိပါက၊ ကျွန်ုပ်တို့သည် Go ၏ ပေါင်းစပ်ငွေကြေးဆိုင်ရာ အကျိုးကျေးဇူးများစွာကို ပယ်ဖျက်ပေးမည့် ရှုပ်ထွေးပြီး အမှားအယွင်းများတတ်သည့် အလုပ်ဖြစ်သော OS လိုင်းများကို တိုက်ရိုက်စီမံခန့်ခွဲခြင်းတွင် ပိတ်မိနေမည်ဖြစ်သည်။

GMP မော်ဒယ်- စီစဉ်သူ၏ အခြေခံဗိသုကာ

Go scheduler သည် Goroutines၊ OS Threads (Machines) နှင့် ပရိုဆက်ဆာများကို ကိုယ်စားပြုသည့် GMP ဟု မကြာခဏရည်ညွှန်းသော မော်ဒယ်တစ်ခုပေါ်တွင် လုပ်ဆောင်သည်။ သင့်ကုဒ်ကို လုပ်ဆောင်ရန် ဤသုံးမျိုးစလုံးသည် ဖျော်ဖြေပွဲများတွင် အလုပ်လုပ်ပါသည်။

  • G (Goroutine): ၎င်းသည် တစ်ပြိုင်တည်းလုပ်ဆောင်ခြင်း၏ အခြေခံယူနစ်ဖြစ်သည်။ ၎င်းတွင် လုပ်ဆောင်ချက်တစ်ခုကို လုပ်ဆောင်ရန် လိုအပ်သော stack၊ လမ်းညွှန်ညွှန်ပြချက်နှင့် အခြားအချက်အလက်များ ပါဝင်ပါသည်။
  • M (စက်): M သည် OS လိုင်းတစ်ခုကို ကိုယ်စားပြုသည်။ ၎င်းသည် CPU core တစ်ခုပေါ်တွင်လည်ပတ်ရန် operating system မှစီစဉ်ထားသည့်အမှန်တကယ်အဖွဲ့အစည်းဖြစ်သည်။
  • P (ပရိုဆက်ဆာ): P သည် ယုတ္တိရှိသော ပရိုဆက်ဆာ သို့မဟုတ် အချိန်ဇယားဆွဲခြင်းအတွက် အကြောင်းအရာတစ်ခုဖြစ်သည်။ Go ကုဒ်ကို လုပ်ဆောင်ရန် လိုအပ်သော အရင်းအမြစ်များကို ကိုယ်စားပြုသည်။ P တစ်ခုစီတွင် လုပ်ဆောင်ရန် အဆင်သင့်ဖြစ်သည့် goroutines (Gs) ရှိသည်။ Ps အရေအတွက်ကို ပုံမှန်အားဖြင့် ရရှိနိုင်သော CPU cores အရေအတွက် (GOMAXPROCS) သို့ သတ်မှတ်ထားသည်။

ဆက်နွယ်မှုမှာ သော့ဖြစ်ပါသည်- P သည် Go ကုဒ်ကို လုပ်ဆောင်ရန် M တွင် တွဲထားရမည်ဖြစ်ပြီး M သည် P ၏ ဒေသတွင်း အတန်းမှ gooutine များကို လုပ်ဆောင်သည်။ ဤ abstraction သည် အချိန်ဇယားရေးဆွဲသူအား ရရှိနိုင်သော CPU cores များတစ်လျှောက် အလုပ်ဖြန့်ဝေမှုကို ထိရောက်စွာစီမံခန့်ခွဲနိုင်စေပါသည်။

အချိန်ဇယားဆွဲသူ မက္ကင်းနစ်များ- အလုပ်အား ဖြန့်ဝေပုံ

အချိန်ဇယားရေးဆွဲသူ၏ ဉာဏ်ရည်ဉာဏ်သွေးသည် တန်းစီဇယားများကို စီမံခန့်ခွဲပုံနှင့် M-P ဆက်ဆံရေးများတွင် တည်ရှိပါသည်။ ၎င်းသည် အခြားသူများကို လုပ်ဆောင်ရန် အခွင့်အရေးပေးရန်အတွက် လည်ပတ်နေသော ဂိုရိုးထုံးစံကို အနှောင့်အယှက်ဖြစ်စေနိုင်သည်။ ၎င်းသည် ဂေါ်ရီရိုးရိုးတစ်ခုအား P ကို ​​ရက်အကန့်အသတ်မရှိ ချိတ်ခြင်းမှ တားဆီးသည်။ အဓိက ယန္တရားများ ပါဝင်သည်-

အလုပ်ခိုးယူခြင်း- P သည် ၎င်း၏စက်တွင်းတန်းစီတွင် ဂိုရိုးလုပ်ရိုးလုပ်စဉ်များကုန်သွားသောအခါ၊ ၎င်းသည် ဘာမှမလုပ်ပါ။ ယင်းအစား၊ ၎င်းသည် အခြား P ၏ လည်ပတ်မှုတန်းစီမှ ဂိုရိုးကျင့်စဉ်တစ်ဝက်ကို ခိုးယူရန် ကြိုးစားသည်။ အဆင်မပြေပါက၊ ၎င်းသည် ကမ္ဘာလုံးဆိုင်ရာ ပြေးတန်းစီကို စစ်ဆေးသည်။ ၎င်းသည် စနစ်တွင် မည်သည့်နေရာ၌မဆို လုပ်ဆောင်ရမည့် အလုပ်များရှိနေသရွေ့ CPU များအားလုံး အလုပ်ရှုပ်နေမည်ကို သေချာစေသည်။

စနစ်ခေါ်ဆိုမှုများ- goroutine သည် ပိတ်ဆို့ခြင်းစနစ်ခေါ်ဆိုမှုတစ်ခုပြုလုပ်သောအခါ (ဥပမာ၊ ဖိုင်တစ်ခုဖတ်ခြင်း)၊ အချိန်ဇယားဆွဲသူသည် လက်လွှဲလုပ်ဆောင်ပေးပါသည်။ ခေါ်ဆိုမှုကို လုပ်ဆောင်သည့် thread (M) သည် ပိတ်ဆို့သွားသော်လည်း ၎င်းနှင့်တွဲထားသည့် P သည် သောင်တင်နေမည်မဟုတ်ပေ။ အစီအစဉ်ဆွဲသူသည် P ကိုဖယ်ထုတ်ပြီး idle M ကိုရှာတွေ့သည် သို့မဟုတ် P တွင်တွဲရန်အသစ်တစ်ခုကိုဖန်တီးသည်၊ ထို့ကြောင့်အခြား gooutine များကိုဆက်လက်လုပ်ဆောင်နိုင်သည်။ စနစ်ခေါ်ဆိုမှုပြီးသွားသောအခါ၊ ဂိုရိုးတင်းကို အပြေးတန်းစီတွင် ပြန်ချထားပြီး M သည် ဆက်လက်လုပ်ဆောင်ရန် P ကို ရှာရန် ကြိုးစားသည်။

💡 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 ၏ အလုပ်ခိုးယူခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်သည် တစ်ဦးချင်း ပရိုဆက်ဆာများ အစုအဝေးကို အလုပ်တာဝန်တစ်ခုလုံးကို ထိထိရောက်ရောက် ထိန်းညှိပေးသည့် ပူးပေါင်းအဖွဲ့တစ်ခုအဖြစ် ပြောင်းလဲပေးသည့် အင်ဂျင်နီယာလက်ရာတစ်ခုဖြစ်သည်။

Mewayz ကဲ့သို့သော အတိုင်းအတာဖြင့် တည်ဆောက်နိုင်သော စနစ်များအတွက် သက်ရောက်မှုများ

CRM မှ စာရင်းစီမံခန့်ခွဲမှုအထိ ကွဲပြားခြားနားသော module များသည် Mewayz ကဲ့သို့ မော်ဂျူလာလုပ်ငန်း OS တစ်ခုအတွက်၊ အမှီအခိုကင်းသော်လည်း စည်းလုံးညီညွတ်စွာ လုပ်ဆောင်ရမည်ဖြစ်ပြီး Go scheduler ၏ ဒီဇိုင်းသည် သိသာထင်ရှားသော အားသာချက်တစ်ခုဖြစ်သည်။ အပလီကေးရှင်းလော့ဂျစ်ကို သေးငယ်ပြီး တစ်ပြိုင်နက်တည်း ဂေါ်ရီရိုးဇယားများအဖြစ် ဖွဲ့စည်းတည်ဆောက်ခြင်းဖြင့် Mewayz သည် မြင့်မားသောပမာဏကို ရရှိနိုင်သည်။ အချိန်ဇယားဆွဲသူသည် ရရှိနိုင်သော CPU cores များအားလုံးတွင် ဤလုပ်ငန်းဆောင်တာများကို အလိုအလျောက် ဖြန့်ဝေပေးကာ စနစ်သည် လေးလံသောဝန်အောက်တွင်ပင် တုံ့ပြန်မှုဆက်လက်ရှိနေကြောင်း သေချာစေပါသည်။ Mewayz တွင်တည်ဆောက်သူများသည် micromanaging threads များမလိုအပ်ဘဲ ရှင်းလင်းသော၊ modular ကုဒ်များရေးသားခြင်းကို အာရုံစိုက်နိုင်ပြီး၊ အရင်းခံ runtime သည် parallel execution ၏ရှုပ်ထွေးသောလုပ်ဆောင်မှုကိုထိရောက်စွာကိုင်တွယ်နိုင်မည်ဟုယုံကြည်သည်။ ၎င်းသည် Mewayz သည် ခေတ်မီစီးပွားရေးလုပ်ငန်းများမှ ၎င်းတို့၏ ပင်မလည်ပတ်မှုစနစ်များမှ တောင်းဆိုသည့် စွမ်းဆောင်ရည်နှင့် အရွယ်အစားကို ပေးအပ်နိုင်စေပါသည်။

အမေးများသောမေးခွန်းများ

နိဒါန်း- သင်၏ Go အပလီကေးရှင်းများ၏ မမြင်နိုင်သော လျှပ်ကူးပစ္စည်း

သင် Go ပရိုဂရမ်တစ်ခုကို ရေးသောအခါတွင် သင်သည် ယုတ္တိဗေဒ၊ လုပ်ဆောင်ချက်များ နှင့် ချန်နယ်များကို အာရုံစိုက်သည်။ သင်သည် `go myFunction()` ဟုရိုက်ထည့်လိုက်သည်နှင့် သင့်ကုဒ်သည် ချောမွေ့စွာလုပ်ဆောင်ပါသည်။ သို့သော် မျက်နှာပြင်အောက်တွင် မမြင်နိုင်သောလျှပ်ကူးပစ္စည်းသည် စွမ်းဆောင်ရည်ကို စီစဥ်ထားပြီး သင်၏တစ်ပြိုင်တည်းလုပ်ရိုးလုပ်စဉ်များကို ချောမွေ့ပြီး ထိရောက်မှုရှိစေရန် သေချာစေပါသည်။ ဤ maestro သည် Go runtime အစီအစဉ်ဆွဲသူဖြစ်သည်။ မည်ကဲ့သို့ အလုပ်လုပ်သည်ကို နားလည်ခြင်းသည် ပညာရပ်ဆိုင်ရာ လေ့ကျင့်ခန်းတစ်ခုမျှသာ မဟုတ်ပါ။ စွမ်းဆောင်ရည်မြင့်၍ အရွယ်တင်နိုင်သော ဆော့ဖ်ဝဲကို ရေးသားရန်အတွက် အရေးကြီးပါသည်။ Mewayz ကဲ့သို့သော ပလပ်ဖောင်းများအတွက် ရှုပ်ထွေးပြီး မော်ဂျူလာလုပ်ငန်း လုပ်ငန်းစဉ်များကို တစ်ပြိုင်နက်တည်း ကိုင်တွယ်ရန် တည်ဆောက်ထားသော၊ အချိန်ဇယားဆွဲသူ၏ အားသာချက်များကို အသုံးချခြင်းသည် စီးပွားရေးလုပ်ငန်းများအတွက် တုံ့ပြန်မှုနှင့် ယုံကြည်စိတ်ချရသော လည်ပတ်မှုစနစ်ကို ပေးအပ်ရန်အတွက် အခြေခံကျပါသည်။

Go Scheduler ဆိုတာ ဘာလဲ၊ ဘာကြောင့် လိုအပ်တာလဲ။

Go သည် goroutines များကို အခြေခံ၍ ၎င်း၏ရိုးရှင်းပြီး အစွမ်းထက်သော ပေါင်းစပ်ငွေကြေးပုံစံကြောင့် ကျော်ကြားသည်။ Goroutines များသည် လည်ပတ်မှုစနစ်မဟုတ်ဘဲ Go runtime မှ စီမံခန့်ခွဲသော ပေါ့ပါးသော "အစိမ်းရောင်ချည်များ" ဖြစ်သည်။ ၎င်းတို့ထောင်ပေါင်းများစွာကို ဖန်တီးခြင်းသည် မှတ်ဉာဏ်နှင့် စရိတ်စကအားဖြင့် စျေးပေါသည်။ သို့သော်၊ ဤ goroutines များသည် နောက်ဆုံးတွင် ပိုမိုလေးလံပြီး အရေအတွက်ကန့်သတ်ထားသော ရုပ်ပိုင်းဆိုင်ရာ OS လိုင်းများပေါ်တွင် လုပ်ဆောင်ရန် လိုအပ်ပါသည်။ Go scheduler သည် OS thread ပေါင်းစုငယ်တစ်ခုပေါ်တွင် ဖြစ်နိုင်ချေရှိသော gooutines အများအပြားကို မြေပုံညွှန်းပေးသည့် အသိဉာဏ်ရှိသော အလွှာဖြစ်သည်။ ၎င်း၏အဓိကအလုပ်မှာ ဆက်စပ်ငွေကြေးကို ထိရောက်ပြီး လက်တွေ့ကျစေရန်ဖြစ်ပြီး လုပ်ငန်းတာဝန်များကို ဖြန့်ဝေရန်ဖြစ်သည်။ ၎င်းသာမရှိပါက၊ ကျွန်ုပ်တို့သည် Go ၏ ပေါင်းစပ်ငွေကြေးဆိုင်ရာ အကျိုးကျေးဇူးများစွာကို ပယ်ဖျက်ပေးမည့် ရှုပ်ထွေးပြီး အမှားအယွင်းများတတ်သည့် အလုပ်ဖြစ်သော OS လိုင်းများကို တိုက်ရိုက်စီမံခန့်ခွဲခြင်းတွင် ပိတ်မိနေမည်ဖြစ်သည်။

GMP မော်ဒယ်- စီစဉ်သူ၏ အခြေခံဗိသုကာ

Go scheduler သည် Goroutines၊ OS Threads (Machines) နှင့် ပရိုဆက်ဆာများကို ကိုယ်စားပြုသည့် GMP ဟု မကြာခဏရည်ညွှန်းသော မော်ဒယ်တစ်ခုပေါ်တွင် လုပ်ဆောင်သည်။ သင့်ကုဒ်ကို လုပ်ဆောင်ရန် ဤသုံးမျိုးစလုံးသည် ဖျော်ဖြေပွဲများတွင် အလုပ်လုပ်ပါသည်။

အချိန်ဇယားဆွဲသူ မက္ကင်းနစ်များ- အလုပ်အား ဖြန့်ဝေပုံ

အချိန်ဇယားရေးဆွဲသူ၏ ဉာဏ်ရည်ဉာဏ်သွေးသည် တန်းစီဇယားများကို စီမံခန့်ခွဲပုံနှင့် M-P ဆက်ဆံရေးများတွင် တည်ရှိပါသည်။ ၎င်းသည် အခြားသူများကို လုပ်ဆောင်ရန် အခွင့်အရေးပေးရန်အတွက် လည်ပတ်နေသော ဂိုရိုးထုံးစံကို အနှောင့်အယှက်ဖြစ်စေနိုင်သည်။ ၎င်းသည် ဂေါ်ရီရိုးရိုးတစ်ခုအား P ကို ​​ရက်အကန့်အသတ်မရှိ ချိတ်ခြင်းမှ တားဆီးသည်။ အဓိက ယန္တရားများ ပါဝင်သည်-

Mewayz ကဲ့သို့သော အတိုင်းအတာဖြင့် တည်ဆောက်နိုင်သော စနစ်များအတွက် သက်ရောက်မှုများ

CRM မှ စာရင်းစီမံခန့်ခွဲမှုအထိ ကွဲပြားခြားနားသော module များသည် Mewayz ကဲ့သို့ မော်ဂျူလာလုပ်ငန်း OS တစ်ခုအတွက်၊ အမှီအခိုကင်းသော်လည်း စည်းလုံးညီညွတ်စွာ လုပ်ဆောင်ရမည်ဖြစ်ပြီး Go scheduler ၏ ဒီဇိုင်းသည် သိသာထင်ရှားသော အားသာချက်တစ်ခုဖြစ်သည်။ အပလီကေးရှင်းလော့ဂျစ်ကို သေးငယ်ပြီး တစ်ပြိုင်နက်တည်း ဂေါ်ရီရိုးဇယားများအဖြစ် ဖွဲ့စည်းတည်ဆောက်ခြင်းဖြင့် Mewayz သည် မြင့်မားသောပမာဏကို ရရှိနိုင်သည်။ အချိန်ဇယားဆွဲသူသည် ရရှိနိုင်သော CPU cores များအားလုံးတွင် ဤလုပ်ငန်းဆောင်တာများကို အလိုအလျောက် ဖြန့်ဝေပေးကာ စနစ်သည် လေးလံသောဝန်အောက်တွင်ပင် တုံ့ပြန်မှုဆက်လက်ရှိနေကြောင်း သေချာစေပါသည်။ Mewayz တွင်တည်ဆောက်သူများသည် micromanaging threads များမလိုအပ်ဘဲ ရှင်းလင်းသော၊ modular ကုဒ်များရေးသားခြင်းကို အာရုံစိုက်နိုင်ပြီး၊ အရင်းခံ runtime သည် parallel execution ၏ရှုပ်ထွေးသောလုပ်ဆောင်မှုကိုထိရောက်စွာကိုင်တွယ်နိုင်မည်ဟုယုံကြည်သည်။ ၎င်းသည် Mewayz သည် ခေတ်မီစီးပွားရေးလုပ်ငန်းများမှ ၎င်းတို့၏ ပင်မလည်ပတ်မှုစနစ်များမှ တောင်းဆိုသည့် စွမ်းဆောင်ရည်နှင့် အရွယ်အစားကို ပေးအပ်နိုင်စေပါသည်။

သင့်လုပ်ငန်းသုံးကိရိယာများအားလုံးကို တစ်နေရာတည်းတွင်

အက်ပ်များစွာကို ဆော့ကစားခြင်းကို ရပ်ပါ။ Mewayz သည် တစ်လလျှင် $49 ဖြင့် ကိရိယာ 208 ခုကို ပေါင်းစပ်ထားသည် — စာရင်းဇယားမှ HR အထိ၊ ခွဲခြမ်းစိတ်ဖြာမှုအထိ ကြိုတင်စာရင်းသွင်းထားသည်။ စတင်ရန် ခရက်ဒစ်ကတ် မလိုအပ်ပါ။

Mewayz အခမဲ့စမ်းသုံးကြည့်ပါ →

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