Hacker News

Go Runtime අවබෝධ කර ගැනීම: Scheduler

අදහස්

2 min read Via internals-for-interns.com

Mewayz Team

Editorial Team

Hacker News

හැඳින්වීම: ඔබේ Go යෙදුම්වල අදෘශ්‍යමාන සන්නායකය

ඔබ Go වැඩසටහනක් ලියන විට, ඔබ තර්කනය, කාර්යයන් සහ නාලිකා කෙරෙහි අවධානය යොමු කරයි. ඔබ 'go myFunction()' ටයිප් කර ඔබේ කේතය බාධාවකින් තොරව ක්‍රියාත්මක වේ. නමුත් මතුපිටට යටින්, අදෘශ්‍යමාන සන්නායකයක් කාර්ය සාධනය සංවිධානය කරයි, ඔබේ සමගාමී චර්යාවන් සුමටව සහ කාර්යක්ෂමව ක්‍රියාත්මක වන බව සහතික කරයි. මෙම Maestro යනු Go ධාවන කාල උපලේඛනයයි. එය ක්‍රියාත්මක වන ආකාරය අවබෝධ කර ගැනීම ශාස්ත්‍රීය අභ්‍යාසයක් පමණක් නොවේ; ඉහළ කාර්ය සාධනයක් ඇති, පරිමාණය කළ හැකි මෘදුකාංග ලිවීම සඳහා එය ඉතා වැදගත් වේ. සංකීර්ණ, මොඩියුලර් ව්‍යාපාර ක්‍රියාවලි සමගාමීව හැසිරවීමට ගොඩනගා ඇති Mewayz වැනි වේදිකා සඳහා, ව්‍යාපාර සඳහා ප්‍රතිචාරාත්මක සහ විශ්වාසනීය මෙහෙයුම් පද්ධතියක් ලබා දීම සඳහා උපලේඛකයාගේ ශක්තීන් උත්තේජනය කිරීම මූලික වේ.

Go Scheduler යනු කුමක්ද සහ අපට එය අවශ්‍ය වන්නේ ඇයි?

Go goroutines මත පදනම් වූ එහි සරල සහ බලවත් සමගාමී ආකෘතිය සඳහා ප්‍රසිද්ධය. Goroutines යනු මෙහෙයුම් පද්ධතිය නොව Go ධාවන කාලය මගින් කළමනාකරණය කරන සැහැල්ලු "හරිත නූල්" වේ. ඒවා දහස් ගණනක් නිර්මාණය කිරීම මතකය සහ උඩිස් පිරිවැය අනුව ලාභදායී වේ. කෙසේ වෙතත්, මෙම goroutines අවසානයේ දී ධාවනය කිරීමට අවශ්‍ය වන්නේ භෞතික OS නූල් මත වන අතර, ඒවා වඩා බර සහ සංඛ්‍යාවෙන් සීමා වේ. Go උපලේඛකය යනු OS නූල් වල කුඩා සංචිතයක් මත විභව විශාල goroutines සංඛ්‍යාවක් සිතියම් ගත කරන බුද්ධිමත් ස්ථරයයි. එහි මූලික කාර්යය වන්නේ සමගාමීත්වය කාර්යක්ෂම හා ප්‍රායෝගික කරමින් වැඩ බර බෙදා හැරීමයි. එය නොමැතිව, අපි OS නූල් සෘජුවම කළමනාකරණය කිරීමට හිර වනු ඇත, එය Go හි බොහෝ සමගාමී වාසිය ප්‍රතික්ෂේප කරන සංකීර්ණ සහ දෝෂ සහිත කාර්යයකි.

GMP ආකෘතිය: Scheduler's Core Architecture

Go උපලේඛකයා බොහෝ විට GMP ලෙස හඳුන්වන ආකෘතියක් මත ක්‍රියා කරයි, එය Goroutines, OS Threads (Machines) සහ Processors සඳහා වේ. මෙම තිදෙනා ඔබගේ කේතය ක්‍රියාත්මක කිරීමට ඒකාබද්ධව ක්‍රියා කරයි.

  • G (Goroutine): මෙය සමගාමී ක්‍රියාත්මක කිරීමේ මූලික ඒකකයයි. එහි ශ්‍රිතයක් ක්‍රියාත්මක කිරීමට අවශ්‍ය අට්ටිය, උපදෙස් දර්ශකය සහ අනෙකුත් තොරතුරු අඩංගු වේ.
  • M (යන්ත්‍රය): M එකක් OS නූලක් නියෝජනය කරයි. එය CPU හරයක් මත ක්‍රියාත්මක වීමට මෙහෙයුම් පද්ධතිය විසින් කාලසටහන්ගත කරනු ලබන සත්‍ය ආයතනයයි.
  • P (ප්‍රොසෙසරය): A P යනු තාර්කික ප්‍රොසෙසරයක් හෝ කාලසටහන්ගත කිරීම සඳහා වූ සන්දර්භයකි. එය Go කේතය ක්‍රියාත්මක කිරීමට අවශ්‍ය සම්පත් නියෝජනය කරයි. සෑම P එකක්ම ධාවනය කිරීමට සුදානම් goroutines (Gs) දේශීය ධාවන පෝලිමක් ඇත. Ps ගණන සාමාන්‍යයෙන් පවතින CPU මධ්‍ය ගණනට සකසා ඇත (GOMAXPROCS).

සම්බන්ධතාවය ප්‍රධාන වේ: Go කේතය ක්‍රියාත්මක කිරීමට M එකකට P එකක් ඇමිණිය යුතු අතර M පසුව P හි ප්‍රාදේශීය පෝලිමේ සිට goroutines ක්‍රියාත්මක කරයි. මෙම සාරාංශය ලබා ගත හැකි CPU මධ්‍ය හරහා වැඩ බෙදා හැරීම කාර්යක්ෂමව කළමනාකරණය කිරීමට උපලේඛකයාට ඉඩ සලසයි.

Scheduler Mechanics: වැඩ බෙදා හරින ආකාරය

කාලසටහන්කරුගේ බුද්ධිය පවතින්නේ එය පෝලිම් සහ M-P සම්බන්ධතා කළමනාකරණය කරන ආකාරය මතය. එය පූර්වගාමී උපලේඛකයකි, එයින් අදහස් වන්නේ එය ධාවනය වන ගෝරූටිනයකට බාධා කළ හැකි අතර අනෙක් අයට ක්‍රියාත්මක කිරීමට අවස්ථාවක් ලබා දිය හැකිය. මෙමගින් තනි goroutine කෙනෙක් P එකක් දින නියමයක් නොමැතිව hogging කිරීමෙන් වලක්වයි. ප්රධාන යාන්ත්රණයන් ඇතුළත් වේ:

වැඩ-සොරකම් කිරීම: P එහි ප්‍රාදේශීය පෝලිමේ ගොරෝටීන් අවසන් වූ විට, එය නිෂ්ක්‍රීයව වාඩිවන්නේ නැත. ඒ වෙනුවට, එය තවත් P ගේ ධාවන පෝලිමකින් ගොරෝටින්වලින් අඩක් "සොරකම්" කිරීමට උත්සාහ කරයි. එය අසාර්ථක වුවහොත්, එය ගෝලීය ධාවන පෝලිම පරීක්ෂා කරයි. පද්ධතියේ ඕනෑම තැනක වැඩ කිරීමට ඇති තාක් සියලු CPU කාර්යබහුලව තබා ගැනීම මෙය සහතික කරයි.

පද්ධති ඇමතුම්: goroutine විසින් අවහිර කිරීමේ පද්ධති ඇමතුමක් කරන විට (උදා: ගොනුවක් කියවීම), උපලේඛකයා විසින් භාරදීමක් සිදු කරයි. ඇමතුම ක්‍රියාත්මක කරන නූල් (M) අවහිර වී ඇත, නමුත් එය අමුණා ඇති P එක අතරමං නොවේ. උපලේඛකයා P ඉවත් කර නිෂ්ක්‍රීය M එකක් සොයා ගනී හෝ P වෙත ඇමිණීම සඳහා නව එකක් නිර්මාණය කරයි, එබැවින් එයට අනෙකුත් goroutines ක්‍රියාත්මක කිරීම දිගටම කරගෙන යා හැක. පද්ධති ඇමතුම සම්පූර්ණ වූ විට, goroutine නැවත ධාවන පෝලිමක තබනු ලබන අතර, 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 උපලේඛකයාගේ වැඩ-සොරකම් කිරීමේ ඇල්ගොරිතම ඉංජිනේරු විද්‍යාවේ විශිෂ්ටතම කෘතියකි, තනි ප්‍රොසෙසර එකතුවක් සමස්ථ කාර්ය භාරයම කාර්යක්ෂමව සමතුලිත කරන සමුපකාර කණ්ඩායමක් බවට පරිවර්තනය කරයි.

Mewayz වැනි පරිමාණ කළ හැකි පද්ධති ගොඩනැගීම සඳහා ඇඟවුම්

Mwayz වැනි මොඩියුලර් ව්‍යාපාරික මෙහෙයුම් පද්ධතියක් සඳහා, විවිධ මොඩියුල-CRM සිට ඉන්වෙන්ටරි කළමනාකාරිත්වය දක්වා-ස්වාධීනව ක්‍රියාත්මක විය යුතු නමුත් සහජීවනයෙන්, Go උපලේඛකයාගේ සැලසුම සැලකිය යුතු වාසියකි. යෙදුම් තර්කය කුඩා, සමගාමී goroutines ගණනාවකට ව්‍යුහගත කිරීමෙන්, Mewayz හට ඉහළ ප්‍රතිදානයක් ලබා ගත හැක. උපලේඛකයා මෙම කාර්යයන් පවතින සියලුම CPU හරයන් හරහා ස්වයංක්‍රීයව බෙදා හරින අතර, අධික බරක් යටතේ වුවද පද්ධතිය ප්‍රතිචාරාත්මකව පවතින බව සහතික කරයි. Mewayz මත ගොඩනඟන සංවර්ධකයින්ට නූල් ක්ෂුද්‍ර කළමනාකරණයකින් තොරව පැහැදිලි, මොඩියුලර් කේතය ලිවීම කෙරෙහි අවධානය යොමු කළ හැකි අතර, යටින් පවතින ධාවන කාලය සමාන්තර ක්‍රියාත්මක කිරීමේ සංකීර්ණ කාර්යය කාර්යක්ෂමව හසුරුවනු ඇතැයි විශ්වාස කරයි. මෙය Mewayz හට නවීන ව්‍යාපාර ඔවුන්ගේ මූලික මෙහෙයුම් පද්ධති වලින් ඉල්ලා සිටින කාර්ය සාධනය සහ පරිමාණය ලබා දීමට ඉඩ සලසයි.

නිතර අසන ප්‍රශ්න

හැඳින්වීම: ඔබේ Go යෙදුම්වල අදෘශ්‍යමාන සන්නායකය

ඔබ Go වැඩසටහනක් ලියන විට, ඔබ තර්කනය, කාර්යයන් සහ නාලිකා කෙරෙහි අවධානය යොමු කරයි. ඔබ 'go myFunction()' ටයිප් කර ඔබේ කේතය බාධාවකින් තොරව ක්‍රියාත්මක වේ. නමුත් මතුපිටට යටින්, අදෘශ්‍යමාන සන්නායකයක් කාර්ය සාධනය සංවිධානය කරයි, ඔබේ සමගාමී චර්යාවන් සුමටව සහ කාර්යක්ෂමව ක්‍රියාත්මක වන බව සහතික කරයි. මෙම Maestro යනු Go ධාවන කාල උපලේඛනයයි. එය ක්‍රියාත්මක වන ආකාරය අවබෝධ කර ගැනීම ශාස්ත්‍රීය අභ්‍යාසයක් පමණක් නොවේ; ඉහළ කාර්ය සාධනයක් ඇති, පරිමාණය කළ හැකි මෘදුකාංග ලිවීම සඳහා එය ඉතා වැදගත් වේ. සංකීර්ණ, මොඩියුලර් ව්‍යාපාර ක්‍රියාවලි සමගාමීව හැසිරවීමට ගොඩනගා ඇති Mewayz වැනි වේදිකා සඳහා, ව්‍යාපාර සඳහා ප්‍රතිචාරාත්මක සහ විශ්වාසනීය මෙහෙයුම් පද්ධතියක් ලබා දීම සඳහා උපලේඛකයාගේ ශක්තීන් උත්තේජනය කිරීම මූලික වේ.

Go Scheduler යනු කුමක්ද සහ අපට එය අවශ්‍ය වන්නේ ඇයි?

Go goroutines මත පදනම් වූ එහි සරල සහ බලවත් සමගාමී ආකෘතිය සඳහා ප්‍රසිද්ධය. Goroutines යනු මෙහෙයුම් පද්ධතිය නොව Go ධාවන කාලය මගින් කළමනාකරණය කරන සැහැල්ලු "හරිත නූල්" වේ. ඒවා දහස් ගණනක් නිර්මාණය කිරීම මතකය සහ උඩිස් පිරිවැය අනුව ලාභදායී වේ. කෙසේ වෙතත්, මෙම goroutines අවසානයේ දී ධාවනය කිරීමට අවශ්‍ය වන්නේ භෞතික OS නූල් මත වන අතර, ඒවා වඩා බර සහ සංඛ්‍යාවෙන් සීමා වේ. Go උපලේඛකය යනු OS නූල් වල කුඩා සංචිතයක් මත විභව විශාල goroutines සංඛ්‍යාවක් සිතියම් ගත කරන බුද්ධිමත් ස්ථරයයි. එහි මූලික කාර්යය වන්නේ සමගාමීත්වය කාර්යක්ෂම හා ප්‍රායෝගික කරමින් වැඩ බර බෙදා හැරීමයි. එය නොමැතිව, අපි OS නූල් සෘජුවම කළමනාකරණය කිරීමට හිර වනු ඇත, එය Go හි බොහෝ සමගාමී වාසිය ප්‍රතික්ෂේප කරන සංකීර්ණ සහ දෝෂ සහිත කාර්යයකි.

GMP ආකෘතිය: Scheduler's Core Architecture

Go උපලේඛකයා බොහෝ විට GMP ලෙස හඳුන්වන ආකෘතියක් මත ක්‍රියා කරයි, එය Goroutines, OS Threads (Machines) සහ Processors සඳහා වේ. මෙම තිදෙනා ඔබගේ කේතය ක්‍රියාත්මක කිරීමට ඒකාබද්ධව ක්‍රියා කරයි.

Scheduler Mechanics: වැඩ බෙදා හරින ආකාරය

කාලසටහන්කරුගේ බුද්ධිය පවතින්නේ එය පෝලිම් සහ M-P සම්බන්ධතා කළමනාකරණය කරන ආකාරය මතය. එය පූර්වගාමී උපලේඛකයකි, එයින් අදහස් වන්නේ එය ධාවනය වන ගෝරූටිනයකට බාධා කළ හැකි අතර අනෙක් අයට ක්‍රියාත්මක කිරීමට අවස්ථාවක් ලබා දිය හැකිය. මෙමගින් තනි goroutine කෙනෙක් P එකක් දින නියමයක් නොමැතිව hogging කිරීමෙන් වලක්වයි. ප්රධාන යාන්ත්රණයන් ඇතුළත් වේ:

Mewayz වැනි පරිමාණ කළ හැකි පද්ධති ගොඩනැගීම සඳහා ඇඟවුම්

Mwayz වැනි මොඩියුලර් ව්‍යාපාරික මෙහෙයුම් පද්ධතියක් සඳහා, විවිධ මොඩියුල-CRM සිට ඉන්වෙන්ටරි කළමනාකාරිත්වය දක්වා-ස්වාධීනව ක්‍රියාත්මක විය යුතු නමුත් සහජීවනයෙන්, Go උපලේඛකයාගේ සැලසුම සැලකිය යුතු වාසියකි. යෙදුම් තර්කය කුඩා, සමගාමී goroutines ගණනාවකට ව්‍යුහගත කිරීමෙන්, Mewayz හට ඉහළ ප්‍රතිදානයක් ලබා ගත හැක. උපලේඛකයා මෙම කාර්යයන් පවතින සියලුම CPU හරයන් හරහා ස්වයංක්‍රීයව බෙදා හරින අතර, අධික බරක් යටතේ වුවද පද්ධතිය ප්‍රතිචාරාත්මකව පවතින බව සහතික කරයි. Mewayz මත ගොඩනඟන සංවර්ධකයින්ට නූල් ක්ෂුද්‍ර කළමනාකරණයකින් තොරව පැහැදිලි, මොඩියුලර් කේතය ලිවීම කෙරෙහි අවධානය යොමු කළ හැකි අතර, යටින් පවතින ධාවන කාලය සමාන්තර ක්‍රියාත්මක කිරීමේ සංකීර්ණ කාර්යය කාර්යක්ෂමව හසුරුවනු ඇතැයි විශ්වාස කරයි. මෙය Mewayz හට නවීන ව්‍යාපාර ඔවුන්ගේ මූලික මෙහෙයුම් පද්ධති වලින් ඉල්ලා සිටින කාර්ය සාධනය සහ පරිමාණය ලබා දීමට ඉඩ සලසයි.

ඔබේ සියලුම ව්‍යාපාරික මෙවලම් එක තැනක

විවිධ යෙදුම් ජුගුල් කිරීම නවත්වන්න. Mewayz මසකට ඩොලර් 49 කට මෙවලම් 208 ක් ඒකාබද්ධ කරයි - ඉන්වෙන්ටරියේ සිට HR දක්වා, වෙන්කරවා ගැනීම විශ්ලේෂණ දක්වා. ආරම්භ කිරීමට ණය කාඩ්පතක් අවශ්‍ය නොවේ.

නොමිලේ →za>උත්සාහ කරන්න

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ 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