Pdflush, kjournald, swapd, इत्यादि कैसे करें?


17

हाल ही में एक सवाल देखा जिसने इस सोच को जन्म दिया। वास्तव में यहां या Google मशीन के माध्यम से उत्तर नहीं मिल सका। असल में, मुझे यह जानने में दिलचस्पी है कि कर्नेल I / O आर्किटेक्चर कैसे स्तरित है। उदाहरण के लिए, करता है kjournaldके लिए प्रेषण pdflushया दूसरी तरह के आसपास? मेरी धारणा यह है कि pdflush(अधिक बड़े पैमाने पर स्टोरेज I / O के लिए अधिक सामान्य होने के नाते) निचले स्तर पर बैठती है और SCSI / ATA / जो भी कमांड वास्तव में लिखने के लिए आवश्यक है, को ट्रिगर करती है और kjournaldलिखने से पहले उच्च स्तरीय फाइल सिस्टम डेटा संरचनाओं को संभालती है। मैं इसे दूसरे तरीके से भी देख सकता था, हालाँकि, kjournaldफाइल सिस्टम डेटा स्ट्रक्चर्स के साथ सीधे अंतर करने और pdflushहर अब और फिर जागने के माध्यम से डिवाइस पर गंदे पेजकेच पेज लिखने के लिएkjournald। यह भी संभव है कि दोनों किसी और कारण से बिल्कुल भी बातचीत न करें।

मूल रूप से: मुझे लिनक्स कर्नेल के भीतर बड़े पैमाने पर भंडारण के लिए I / O भेजने के लिए उपयोग किए जाने वाले मूल आर्किटेक्चर (ग्राफ़ या सिर्फ एक स्पष्टीकरण) की कल्पना करने के लिए किसी तरह की आवश्यकता है।


1
यह वही है जो आप खोज रहे हैं? oss.org.cn/ossdocs/linux/kernel/a1/index.html
SLM

1
: इसके अलावा इस प्रस्तुति है: में 7 स्लाइड slideshare.net/LukCzerner/local-file-systems-update
SLM

1
: इस चित्र मैं भी पाया है thomas-krenn.com/en/oss/linux-io-stack-diagram/...
SLM

1
: मैं इस इंटरैक्टिव गिरी नक्शा जो कैसे गिरी के विभिन्न घटकों को एक साथ जाना दिखाने के लिए मदद करता है पाया makelinux.net/kernel_map
SLM

1
एक और संसाधन, पृष्ठ 19-24: लिनक्स प्रदर्शन और ट्यूनिंग दिशानिर्देश । यह वही दिखता है जो आप देख रहे हैं।
स्लम

जवाबों:


21

इससे पहले कि हम के बारे में बारीकियों पर चर्चा करें pdflush, kjournald, andkswapd`, आइए सबसे पहले लिनक्स कर्नेल के संदर्भ में हम जो बात कर रहे हैं उसके संदर्भ में एक छोटी सी पृष्ठभूमि प्राप्त करें।

GNU / Linux आर्किटेक्चर

GNU / Linux की वास्तुकला को 2 स्थानों के रूप में सोचा जा सकता है:

  • उपयोगकर्ता
  • गुठली

यूजर स्पेस और कर्नेल स्पेस के बीच GNU C लाइब्रेरी ( glibc) बैठता है । यह सिस्टम कॉल इंटरफ़ेस प्रदान करता है जो कर्नेल को उपयोगकर्ता-स्पेस एप्लिकेशन से जोड़ता है।

कर्नेल स्पेस को 3 स्तरों में विभाजित किया जा सकता है:

  • सिस्टम कॉल इंटरफ़ेस
  • वास्तुकला स्वतंत्र कर्नेल कोड
  • वास्तुकला पर निर्भर कोड

सिस्टम कॉल इंटरफ़ेस, जैसा कि इसके नाम का अर्थ है, glibcकर्नेल के बीच एक इंटरफ़ेस प्रदान करता है । वास्तु स्वतंत्र कर्नेल कोड इस तरह के वीएफएस (वर्चुअल फ़ाइल प्रणाली) और VMM (वर्चुअल मेमोरी प्रबंधन) के रूप में तार्किक इकाई के शामिल है। वास्तु निर्भर कोड घटक है कि किसी दिए गए हार्डवेयर वास्तुकला के लिए प्रोसेसर और प्लेटफ़ॉर्म-विशिष्ट कोड हो रहा है।

GNU / Linux आर्किटेक्चर का आरेख

                                 gn / linux आर्च के ss।

इस लेख के बाकी हिस्सों के लिए, हम कर्नेल स्पेस के भीतर VFS और VMM तार्किक इकाइयों पर अपना ध्यान केंद्रित करेंगे।

GNU / Linux कर्नेल के सबसिस्टम

                                    कर्नेल कॉम के एस.एस.

VFS सबसिस्टम

जीएनयू / लिनक्स कर्नेल को संरचित करने की एक उच्च स्तरीय अवधारणा के साथ हम वीएफएस सबसिस्टम में थोड़ी गहराई तक पहुंचा सकते हैं। यह घटक विभिन्न ब्लॉक स्टोरेज डिवाइस तक पहुंच प्रदान करने के लिए जिम्मेदार है, जो अंततः एक भौतिक उपकरण (HDD / etc) पर एक फाइलसिस्टम (ext3 / ext4 / etc।) के लिए नीचे मैप करता है।

VFS का आरेख

वीएफएस के एस.एस.

यह आरेख दिखाता है कि कैसे एक write()उपयोगकर्ता की प्रक्रिया वीएफएस का पता लगाती है और अंततः डिवाइस ड्राइवर पर अपना काम करती है जहां यह भौतिक भंडारण माध्यम को लिखा जाता है। यह पहला स्थान है जहां हमारा सामना होता है pdflush। यह एक डेमॉन है जो बैकग्राउंड माध्यम में गंदे डेटा और मेटाडेटा बफर ब्लॉक को फ्लश करने के लिए जिम्मेदार है। आरेख यह नहीं दिखाता है, लेकिन एक और डेमॉन है kjournald, जो pdflushडिस्क के साथ गंदे जर्नल ब्लॉक लिखने के समान कार्य करता है, जो एक साथ बैठता है । नोट: जर्नल ब्लॉक यह है कि ext4 और JFS जैसी फाइलसिस्टम डिस्क में होने वाले परिवर्तनों से पहले फाइल में डिस्क में बदलाव का ट्रैक रखती है।

उपरोक्त विवरण इस पत्र में आगे चर्चा की गई है ।

write()चरणों का अवलोकन

I / O sybsystem संचालन का एक सरल अवलोकन प्रदान करने के लिए, हम एक उदाहरण का उपयोग करेंगे जहां फ़ंक्शन write()को उपयोगकर्ता स्पेस एप्लिकेशन द्वारा बुलाया जाता है।

  1. एक प्रक्रिया write()सिस्टम कॉल के माध्यम से एक फ़ाइल लिखने का अनुरोध करती है ।
  2. कर्नेल फ़ाइल में मैप किए गए पेज कैश को अपडेट करता है।
  3. एक pdflush कर्नेल थ्रेड डिस्क पर पेज कैश फ्लश करने का ख्याल रखता है।
  4. फ़ाइल सिस्टम परत प्रत्येक ब्लॉक बफर को एक साथ bio struct( संदर्भ के लिए 1.4.3, "ब्लॉक परत" पृष्ठ 23 पर ) रखता है और ब्लॉक डिवाइस परत के लिए एक लिखित अनुरोध प्रस्तुत करता है।
  5. ब्लॉक डिवाइस लेयर को ऊपरी लेयर से रिक्वेस्ट मिलती है और I / O एलीवेटर ऑपरेशन करती है और रिक्वेस्ट I / O रिक्वेस्ट क्यू में डालती है।
  6. एक डिवाइस ड्राइवर जैसे SCSI या अन्य डिवाइस विशिष्ट ड्राइवर लेखन कार्रवाई का ध्यान रखेंगे।
  7. एक डिस्क डिवाइस फर्मवेयर हार्डवेयर ऑपरेशन जैसे सर, रोटेशन और सेक्टर पर डेटा ट्रांसफर करने के लिए करता है।

वीएमएम सबसिस्टम

अपने गहरे गोता को जारी रखते हुए, अब हम VMM उपतंत्र में देख सकते हैं। यह घटक मुख्य मेमोरी (रैम), स्वैप और भौतिक भंडारण माध्यम के बीच स्थिरता बनाए रखने के लिए जिम्मेदार है। स्थिरता बनाए रखने के लिए प्राथमिक तंत्र है bdflush। स्मृति के पन्नों को गंदा समझे जाने के लिए उन्हें संग्रहण माध्यम पर मौजूद डेटा के साथ सिंक्रनाइज़ करना होगा। संग्रहण माध्यम के साथ इस डेटा को सिंक्रनाइज़ करने के लिए डेमॉन के bdflushसाथ समन्वय करेगा pdflush

वीएमएम का आरेख

                वीएमएम के एस.एस.

विनिमय

जब सिस्टम मेमोरी दुर्लभ हो जाती है या कर्नेल स्वैप टाइमर समाप्त हो जाता है, तो kswapdडेमन पृष्ठों को मुक्त करने का प्रयास करेगा। इसलिए जब तक मुफ्त पेजों की संख्या ऊपर रहेगी free_pages_high, kswapdकुछ नहीं करेंगे। हालांकि, यदि नि: शुल्क पृष्ठों की संख्या नीचे गिरती है, तो kswapdपृष्ठ को पुन: शुरू करने की प्रक्रिया शुरू होगी। kswapdस्थानांतरण के लिए पृष्ठों को चिह्नित करने के बाद bdflush, pdflushडेमॉन के माध्यम से भंडारण माध्यम में किसी भी बकाया परिवर्तन को सिंक्रनाइज़ करने का ध्यान रखेगा ।

संदर्भ और आगे की रीडिंग


1
इससे पहले कि मैं इसे उत्तर के रूप में स्वीकार करता हूं और इनाम को पुरस्कृत करने से एक दिन पहले इंतजार कर रहा हूं ताकि यह "बाउंटी" पृष्ठ पर रहे। इस तरह जिस किसी ने भी इसे देखा है उसे नोटिस करने का मौका मिला है और अब इसका जवाब है।
ब्राचली

1
धन्यवाद फिर से, बीटीडब्ल्यू। आप वास्तव में इस पर शोध कर रहे थे।
ब्राचली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.