गो रनटाइम बुझ्दै: समय तालिका | Mewayz Blog Skip to main content
Hacker News

गो रनटाइम बुझ्दै: समय तालिका

टिप्पणीहरू

1 min read Via internals-for-interns.com

Mewayz Team

Editorial Team

Hacker News

परिचय: योर गो एप्लिकेसनहरूको अदृश्य कन्डक्टर

जब तपाइँ गो कार्यक्रम लेख्नुहुन्छ, तपाइँ तर्क, प्रकार्य र च्यानलहरूमा ध्यान केन्द्रित गर्नुहुन्छ। तपाईले `go myFunction()` टाइप गर्नुहुन्छ र तपाईको कोड निर्बाध रूपमा कार्यान्वयन हुन्छ। तर सतह मुनि, एक अदृश्य कन्डक्टरले कार्यसम्पादनलाई अर्केस्ट्रेट गर्दैछ, तपाईंको समवर्ती दिनचर्याहरू सहज र प्रभावकारी रूपमा चल्ने सुनिश्चित गर्दै। यो मास्टर गो रनटाइम शेड्यूलर हो। यसले कसरी काम गर्छ भन्ने बुझ्नु केवल एक शैक्षिक अभ्यास मात्र होइन; उच्च प्रदर्शन, स्केलेबल सफ्टवेयर लेख्नको लागि यो महत्त्वपूर्ण छ। Mewayz जस्ता प्लेटफर्महरूका लागि, जुन जटिल, मोड्युलर व्यापार प्रक्रियाहरू एकैसाथ ह्यान्डल गर्नका लागि बनाइएको छ, अनुसूचकको शक्तिहरूको लाभ उठाउनु भनेको व्यवसायहरूको लागि उत्तरदायी र भरपर्दो अपरेटिङ सिस्टम प्रदान गर्नको लागि आधारभूत हो।

गो शेड्युलर के हो र हामीलाई यो किन चाहिन्छ?

Go यसको सरल र शक्तिशाली कन्करेन्सी मोडेलका लागि गोराउटिनहरूमा आधारित छ। Goroutines लाइटवेट "हरियो थ्रेडहरू" हुन् जुन Go रनटाइमद्वारा व्यवस्थित गरिन्छ, अपरेटिङ सिस्टमले होइन। ती हजारौं सिर्जना गर्नु मेमोरी र ओभरहेडको सर्तमा सस्तो छ। यद्यपि, यी गोराउटिनहरू अन्ततः भौतिक OS थ्रेडहरूमा चल्न आवश्यक छ, जुन धेरै भारी र संख्यामा सीमित छन्। गो शेड्युलर एक बौद्धिक तह हो जसले OS थ्रेडहरूको सानो पूलमा सम्भावित रूपमा ठूलो संख्यामा गोराउटिनहरू नक्सा गर्छ। यसको प्राथमिक काम कार्यभार बाँडफाँड गर्नु हो, एकरूपतालाई प्रभावकारी र व्यावहारिक बनाउनु हो। यो बिना, हामी OS थ्रेडहरू सीधा प्रबन्ध गर्न अडिग हुनेछौं, एक जटिल र त्रुटि-प्रवण कार्य जसले Go को धेरै concurrency फाइदालाई अस्वीकार गर्नेछ।

GMP मोडेल: अनुसूचकको मूल वास्तुकला

गो शेड्युलरले प्रायः GMP भनिने मोडेलमा काम गर्छ, जसको अर्थ Goroutines, OS थ्रेडहरू (मेसिनहरू) र प्रोसेसरहरू हुन्। तपाईंको कोड कार्यान्वयन गर्नको लागि यो तीनो कन्सर्टमा काम गर्दछ।

  • G (Goroutine): यो समवर्ती कार्यान्वयनको आधारभूत एकाइ हो। यसले स्ट्याक, निर्देशन सूचक, र प्रकार्य चलाउन आवश्यक अन्य जानकारी समावेश गर्दछ।
  • M (मेसिन): एक M ले OS थ्रेडलाई प्रतिनिधित्व गर्दछ। यो वास्तविक इकाई हो जुन अपरेटिङ सिस्टम द्वारा CPU कोरमा चलाउनको लागि निर्धारित हुन्छ।
  • P (प्रोसेसर): A P एक तार्किक प्रोसेसर वा समय तालिकाको सन्दर्भ हो। यसले Go कोड कार्यान्वयन गर्न आवश्यक स्रोतहरू प्रतिनिधित्व गर्दछ। प्रत्येक P मा चल्नको लागि तयार गोराउटिनहरू (Gs) को स्थानीय रन कतार छ। Ps को संख्या सामान्यतया उपलब्ध CPU कोर (GOMAXPROCS) को संख्यामा सेट गरिन्छ।

सम्बन्ध कुञ्जी हो: Go कोड कार्यान्वयन गर्नको लागि M मा P संलग्न हुनुपर्छ, र M ले P को स्थानीय लामबाट गोराउटिनहरू कार्यान्वयन गर्छ। यो अमूर्तताले अनुसूचकलाई उपलब्ध CPU कोरहरूमा कार्य वितरण कुशलतापूर्वक व्यवस्थापन गर्न अनुमति दिन्छ।

शेड्युलर मेकानिक्स: कसरी काम वितरण गरिन्छ

अनुसूचकको बुद्धिमत्ता उसले लामहरू र M-P सम्बन्धहरूलाई कसरी व्यवस्थापन गर्छ भन्ने कुरामा निहित हुन्छ। यो एक पूर्वनिर्धारित अनुसूचक हो, यसको मतलब यसले अरूलाई कार्यान्वयन गर्ने मौका दिनको लागि चलिरहेको गोराउटिनलाई अवरोध गर्न सक्छ। यसले एकल गोराउटिनलाई अनिश्चित कालका लागि P हगिङ गर्नबाट रोक्छ। मुख्य संयन्त्रहरू समावेश छन्:

काम-चोरी: जब P ले यसको स्थानीय लाममा गोराउटिनहरू समाप्त हुन्छ, यो निष्क्रिय बस्दैन। यसको सट्टा, यसले अर्को P को रन लाइनबाट आधा गोराउटिनहरू "चोरी" गर्ने प्रयास गर्दछ। यदि त्यो असफल भयो भने, यसले विश्वव्यापी रन लाइन जाँच गर्दछ। यसले सुनिश्चित गर्छ कि सबै CPU हरू व्यस्त रहन्छन् जबसम्म त्यहाँ प्रणालीमा कुनै पनि काम गर्न बाँकी छ।

प्रणाली कलहरू: जब गोराउटिनले ब्लकिङ सिस्टम कल गर्छ (जस्तै, फाइल पढ्दै), शेड्युलरले ह्यान्डअफ गर्छ। कल कार्यान्वयन गर्ने थ्रेड (M) अवरुद्ध हुन्छ, तर P मा यो जोडिएको छाडिएको छैन। अनुसूचकले P लाई अलग गर्छ र निष्क्रिय M फेला पार्छ वा P मा संलग्न गर्नको लागि नयाँ सिर्जना गर्दछ, त्यसैले यसले अन्य गोराउटिनहरू कार्यान्वयन गर्न जारी राख्न सक्छ। जब प्रणाली कल पूरा हुन्छ, गोराउटिनलाई रन लाइनमा फिर्ता राखिन्छ, र 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 →
गो शेड्युलरको कार्य-चोरी एल्गोरिथ्म इन्जिनियरिङको उत्कृष्ट कृति हो, व्यक्तिगत प्रोसेसरहरूको संग्रहलाई सहकारी टोलीमा रूपान्तरण गर्ने जसले सम्पूर्ण कार्यभारलाई कुशलतापूर्वक सन्तुलनमा राख्छ।

मेवेज जस्ता स्केलेबल प्रणालीहरू निर्माण गर्नका लागि प्रभावहरू

Mewayz जस्ता मोड्युलर व्यवसाय OS को लागि, जहाँ विभिन्न मोड्युलहरू - CRM देखि सूची व्यवस्थापन सम्म-स्वतन्त्र तर एकजुट रूपमा सञ्चालन गर्नुपर्छ, Go शेड्युलरको डिजाइन महत्त्वपूर्ण फाइदा हो। धेरै साना, समवर्ती गोराउटिनहरूमा एप्लिकेसन तर्कको संरचना गरेर, मेवेजले उच्च थ्रुपुट प्राप्त गर्न सक्छ। अनुसूचकले स्वचालित रूपमा यी कार्यहरू सबै उपलब्ध CPU कोरहरूमा वितरण गर्दछ, यो सुनिश्चित गर्दै कि प्रणाली भारी लोडमा पनि उत्तरदायी रहन्छ। मेवेजमा निर्माण गर्ने विकासकर्ताहरूले सूक्ष्म प्रबन्धन थ्रेडहरू बिना स्पष्ट, मोड्युलर कोड लेख्नमा ध्यान केन्द्रित गर्न सक्छन्, विश्वस्त छन् कि अन्तर्निहित रनटाइमले समानान्तर कार्यान्वयनको जटिल कार्यलाई कुशलतापूर्वक ह्यान्डल गर्नेछ। यसले Mewayz लाई प्रदर्शन र स्केलेबिलिटी प्रदान गर्न अनुमति दिन्छ जुन आधुनिक व्यवसायहरूले उनीहरूको कोर अपरेटिङ सिस्टमबाट माग गर्दछ।

बारम्बार सोधिने प्रश्नहरू

परिचय: योर गो एप्लिकेसनहरूको अदृश्य कन्डक्टर

जब तपाइँ गो कार्यक्रम लेख्नुहुन्छ, तपाइँ तर्क, प्रकार्य र च्यानलहरूमा ध्यान केन्द्रित गर्नुहुन्छ। तपाईले `go myFunction()` टाइप गर्नुहुन्छ र तपाईको कोड निर्बाध रूपमा कार्यान्वयन हुन्छ। तर सतह मुनि, एक अदृश्य कन्डक्टरले कार्यसम्पादनलाई अर्केस्ट्रेट गर्दैछ, तपाईंको समवर्ती दिनचर्याहरू सहज र प्रभावकारी रूपमा चल्ने सुनिश्चित गर्दै। यो मास्टर गो रनटाइम शेड्यूलर हो। यसले कसरी काम गर्छ भन्ने बुझ्नु केवल एक शैक्षिक अभ्यास मात्र होइन; उच्च प्रदर्शन, स्केलेबल सफ्टवेयर लेख्नको लागि यो महत्त्वपूर्ण छ। Mewayz जस्ता प्लेटफर्महरूका लागि, जुन जटिल, मोड्युलर व्यापार प्रक्रियाहरू एकैसाथ ह्यान्डल गर्नका लागि बनाइएको छ, अनुसूचकको शक्तिहरूको लाभ उठाउनु भनेको व्यवसायहरूको लागि उत्तरदायी र भरपर्दो अपरेटिङ सिस्टम प्रदान गर्नको लागि आधारभूत हो।

गो शेड्युलर के हो र हामीलाई यो किन चाहिन्छ?

Go यसको सरल र शक्तिशाली कन्करेन्सी मोडेलका लागि गोराउटिनहरूमा आधारित छ। Goroutines लाइटवेट "हरियो थ्रेडहरू" हुन् जुन Go रनटाइमद्वारा व्यवस्थित गरिन्छ, अपरेटिङ सिस्टमले होइन। ती हजारौं सिर्जना गर्नु मेमोरी र ओभरहेडको सर्तमा सस्तो छ। यद्यपि, यी गोराउटिनहरू अन्ततः भौतिक OS थ्रेडहरूमा चल्न आवश्यक छ, जुन धेरै भारी र संख्यामा सीमित छन्। गो शेड्युलर एक बौद्धिक तह हो जसले OS थ्रेडहरूको सानो पूलमा सम्भावित रूपमा ठूलो संख्यामा गोराउटिनहरू नक्सा गर्छ। यसको प्राथमिक काम कार्यभार बाँडफाँड गर्नु हो, एकरूपतालाई प्रभावकारी र व्यावहारिक बनाउनु हो। यो बिना, हामी OS थ्रेडहरू सीधा प्रबन्ध गर्न अडिग हुनेछौं, एक जटिल र त्रुटि-प्रवण कार्य जसले Go को धेरै concurrency फाइदालाई अस्वीकार गर्नेछ।

GMP मोडेल: अनुसूचकको मूल वास्तुकला

गो शेड्युलरले प्रायः GMP भनिने मोडेलमा काम गर्छ, जसको अर्थ Goroutines, OS थ्रेडहरू (मेसिनहरू) र प्रोसेसरहरू हुन्। तपाईंको कोड कार्यान्वयन गर्नको लागि यो तीनो कन्सर्टमा काम गर्दछ।

शेड्युलर मेकानिक्स: कसरी काम वितरण गरिन्छ

अनुसूचकको बुद्धिमत्ता उसले लामहरू र M-P सम्बन्धहरूलाई कसरी व्यवस्थापन गर्छ भन्ने कुरामा निहित हुन्छ। यो एक पूर्वनिर्धारित अनुसूचक हो, यसको मतलब यसले अरूलाई कार्यान्वयन गर्ने मौका दिनको लागि चलिरहेको गोराउटिनलाई अवरोध गर्न सक्छ। यसले एकल गोराउटिनलाई अनिश्चित कालका लागि P हगिङ गर्नबाट रोक्छ। मुख्य संयन्त्रहरू समावेश छन्:

मेवेज जस्ता स्केलेबल प्रणालीहरू निर्माण गर्नका लागि प्रभावहरू

Mewayz जस्ता मोड्युलर व्यवसाय OS को लागि, जहाँ विभिन्न मोड्युलहरू - CRM देखि सूची व्यवस्थापन सम्म-स्वतन्त्र तर एकजुट रूपमा सञ्चालन गर्नुपर्छ, Go शेड्युलरको डिजाइन महत्त्वपूर्ण फाइदा हो। धेरै साना, समवर्ती गोराउटिनहरूमा एप्लिकेसन तर्कको संरचना गरेर, मेवेजले उच्च थ्रुपुट प्राप्त गर्न सक्छ। अनुसूचकले स्वचालित रूपमा यी कार्यहरू सबै उपलब्ध CPU कोरहरूमा वितरण गर्दछ, यो सुनिश्चित गर्दै कि प्रणाली भारी लोडमा पनि उत्तरदायी रहन्छ। मेवेजमा निर्माण गर्ने विकासकर्ताहरूले सूक्ष्म प्रबन्धन थ्रेडहरू बिना स्पष्ट, मोड्युलर कोड लेख्नमा ध्यान केन्द्रित गर्न सक्छन्, विश्वस्त छन् कि अन्तर्निहित रनटाइमले समानान्तर कार्यान्वयनको जटिल कार्यलाई कुशलतापूर्वक ह्यान्डल गर्नेछ। यसले Mewayz लाई प्रदर्शन र स्केलेबिलिटी प्रदान गर्न अनुमति दिन्छ जुन आधुनिक व्यवसायहरूले उनीहरूको कोर अपरेटिङ सिस्टमबाट माग गर्दछ।

तपाईंका सबै व्यापारिक उपकरणहरू एकै ठाउँमा

बहु एपहरू जुगल गर्न रोक्नुहोस्। Mewayz ले 208 उपकरणहरू मात्र $49/महिनामा जोड्दछ — सूचीबाट HR, बुकिङदेखि एनालिटिक्ससम्म। सुरु गर्न कुनै क्रेडिट कार्ड आवश्यक छैन।

Mewayaz नि:शुल्क प्रयास गर्नुहोस्

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