दिलचस्प पोस्ट
Bootstrap 3 के साथ bootstrap-theme.css का उपयोग कैसे करें? IE JavaScript त्रुटि पार्सिंग त्रुटि सी # विस्तार विधियों के साथ ऑपरेटर ओवरलोडिंग पायथन में कार्यात्मक रूप से प्रोग्राम क्यों? बैकबोन.जेएस – नाम बदलते समय ट्रिगर नहीं बदलते बिंग खोज एपीआई और नीला कैसे एक runnable जार फ़ाइल बनाने के लिए? कैसे एक जावा कार्यक्रम Daemonize करने के लिए? एडीटी एंड्रॉइड गतिविधि के निर्माण की अनुमति नहीं देगा I रीकैप्टा एपीआई v2 स्टाइलिंग "पूर्ववत करें" सुविधा के लिए सर्वश्रेष्ठ डिजाइन पैटर्न पृष्ठभूमि में आईओएस एप्लिकेशन क्रियान्वित कार्य एप्लिकेशन को फ़ोकस वाले ऐप के बिना जावा में ईवेंट श्रोता? (ग्लोबल कुंजीपटल पहचान) जावास्क्रिप्ट में तारीख अंतर (दिन के समय की अनदेखी) जावा-आधारित एप्लिकेशन के उपयोग के लिए लाइव वीडियो डिवाइस से छवियों को कैद करने का सबसे अच्छा तरीका क्या है?

लिनक्स में बफर बनाम कैश मेमोरी के बीच अंतर क्या है?

मुझे यह स्पष्ट नहीं है कि दो लिनक्स मेमोरी अवधारणा में क्या अंतर है: buffer और cache मैंने इस पोस्ट के माध्यम से पढ़ा है और मुझे लगता है कि उनके बीच का अंतर समाप्ति नीति है:

  1. बफर की नीति पहले-इन, प्रथम-आउट है
  2. कैश की नीति हाल ही में हाल ही में उपयोग की गई है।

क्या मैं सही हू?

विशेष रूप से, मैं दो आज्ञाओं को देख रहा हूं: free और vmstat

 james@utopia:~$ vmstat -SM procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- rb swpd free buff cache si so bi bo in cs us sy id wa 5 0 0 173 67 912 0 0 19 59 75 1087 24 4 71 1 james@utopia:~$ free -m total used free shared buffers cached Mem: 2007 1834 172 0 67 914 -/+ buffers/cache: 853 1153 Swap: 2859 0 2859 

Solutions Collecting From Web of "लिनक्स में बफर बनाम कैश मेमोरी के बीच अंतर क्या है?"

"बफ़र" कैश डिस्क ब्लॉक के लिए समर्पित रैम का कितना हिस्सा है। "कैश्ड" समान "बफ़र" की तरह है, केवल इस बार यह फ़ाइल पढ़ने से पृष्ठों को कैश करता है।

कोट फ़ॉर्म:

बफर एक विशिष्ट ब्लॉक डिवाइस के साथ जुड़े हुए हैं, और फाइल सिस्टम मेटाडेटा के साथ-साथ इन-फ़्लाइट पृष्ठों को कैशिंग भी शामिल करते हैं। कैश में केवल पार्केड फाइल डेटा शामिल है अर्थात्, बफ़र्स याद करते हैं कि निर्देशिका में क्या है, कौन से फाइल अनुमतियां हैं, और एक विशेष ब्लॉक डिवाइस के लिए स्मृति को किस प्रकार से लिखा जा रहा है या पढ़ा जा रहा है कैश में केवल फाइलों की सामग्री ही होती है

उद्धरण लिंक

उद्धृत उत्तर (संदर्भ के लिए):

संक्षिप्त जवाब: कैश्ड पृष्ठ कैश का आकार है। बफ़र्स इन-मेमोरी ब्लॉक I / O बफ़र्स के आकार का है। कैश्ड मामलों; बफर काफी हद तक अप्रासंगिक हैं

लम्बे उत्तर: कैश्ड लिनक्स पेज कैश का आकार है, स्वैप कैश में स्मृति को घटाएं, जो कि स्वैप कैच द्वारा दर्शाया गया है (इस प्रकार कुल पृष्ठ कैश साइज कैश्ड + स्वैप कैच है)। लिनक्स पृष्ठ कैश के माध्यम से सभी फाइल I / O को निष्पादित करता है I लिखे गए पृष्ठ को कैश में अनुक्रमित पृष्ठों को गंदे रूप में चिह्नित करने के रूप में कार्यान्वित किया जाता है; flusher धागे तो समय-समय पर किसी भी गंदी पृष्ठों डिस्क डिस्कवर वापस। पेज कैश से डेटा लौटाए गए द्वारा पढ़ाया जाता है; अगर डेटा कैश में अभी तक नहीं है, तो यह पहली बार आबादी वाला है। आधुनिक लिनक्स प्रणाली पर, कैश्ड आसानी से कई गीगाबाइट हो सकते हैं। यह केवल स्मृति दबाव के जवाब में सिकुड़ जाएगा सिस्टम आवश्यक रूप से अधिक मेमोरी उपलब्ध कराने के लिए डिस्क को आउट करने के लिए डेटा को गमागमन के साथ पृष्ठ कैश को शुद्ध करेगा।

बफर इन-मेमोरी ब्लॉक आई / ओ बफर हैं। वे अपेक्षाकृत अल्पकालिक रहते हैं लिनक्स कर्नेल संस्करण 2.4 से पहले, लिनक्स के अलग पृष्ठ और बफर कैश थे। 2.4 के बाद से, पृष्ठ और बफ़र कैश एकीकृत होते हैं और बफर को पृष्ठ कैश में प्रदर्शित कच्चे डिस्क ब्लॉक नहीं होते-अर्थात, फ़ाइल डेटा नहीं। बफर मीट्रिक इस प्रकार न्यूनतम महत्व का है। ज्यादातर सिस्टम पर, बफ़र्स अक्सर मेगाबाइट्स के केवल दसियों होते हैं

यह 'काफी' के रूप में इस रूप में सरल नहीं है, लेकिन यह समझने में मदद कर सकता है:

बफ़र फ़ाइल मेटाडेटा (अनुमतियां, स्थान, आदि) को संग्रहीत करने के लिए है। हर मेमोरी पेज को यहाँ का ट्रैक रखा गया है।

कैश वास्तविक फाइल सामग्री को संग्रहित करने के लिए है

बफर और कैश

एक बफर ऐसा कुछ है जो अभी तक डिस्क पर "लिखित" नहीं है।

एक कैश डिस्क से "पढ़ा गया" है और बाद में उपयोग के लिए संग्रहीत है।

मुझे लगता है कि यह पृष्ठ बफर और कैश के बीच अंतर को गहराई से समझने में मदद करेगा। http://www.tldp.org/LDP/sag/html/buffer-cache.html

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

चूंकि स्मृति है, दुर्भाग्य से, एक परिमित, अस्वीकार, दुर्लभ संसाधन, बफर कैश आमतौर पर बड़ा नहीं हो सकता (यह उन सभी डेटा को नहीं रख सकता जो कभी भी उपयोग करना चाहता है)। जब कैश भर जाता है, तो डेटा जो सबसे लंबे समय तक उपयोग नहीं किया जाता है, को त्याग दिया जाता है और इस तरह मुक्त होने वाला मेमोरी नए डेटा के लिए उपयोग किया जाता है।

डिस्क बफरिंग के लिए भी लिखता है एक तरफ, जो डेटा लिखा गया है वह अक्सर जल्दी ही पढ़ा जाता है (उदाहरण के लिए, एक स्रोत कोड फाइल को फाइल में सहेज ली जाती है, फिर कंपाइलर द्वारा पढ़ा जाता है), इसलिए कैश में लिखी गई जानकारी डालना एक अच्छा विचार है दूसरी तरफ, केवल डेटा को कैश में डालने से, डिस्क पर इसे एक बार लिखकर नहीं, उस प्रोग्राम को लिखता है जो तेज चलता है। लिखते फिर पृष्ठभूमि में किया जा सकता है, अन्य कार्यक्रमों को धीमा किए बिना।

बफ़र में मेटाडेटा होता है जो लिखित प्रदर्शन को बेहतर बनाने में मदद करता है कैश में फ़ाइल सामग्री ही होती है (कभी-कभी डिस्क पर लिखने के लिए अभी तक) जो कि पढ़ने के प्रदर्शन को बेहतर बनाता है

सेठ रॉबर्टसन के लिंक 2 ने कहा, "उन शब्दों की पूरी तरह से समझने के लिए, रॉबर्ट एम। लव द्वारा लिनक्स कर्नेल विकास जैसी लिनक्स कर्नेल बुक को देखें।"

मुझे पुस्तक के दूसरे संस्करण में 'बफर' के बारे में कुछ सामग्री मिली।

हालांकि भौतिक डिवाइस खुद सेक्टर स्तर पर पता है, कर्नेल ब्लॉकों के मामले में सभी डिस्क परिचालन करता है।

जब एक ब्लॉक मेमोरी में संग्रहीत होता है (कहते हैं, पढ़ने के बाद या किसी लिखे लंबित), तो उसे 'बफर' में रखा जाता है प्रत्येक 'बफर' बिल्कुल एक ब्लॉक से जुड़ा हुआ है। 'बफर' ऑब्जेक्ट के रूप में कार्य करता है जो स्मृति में एक डिस्क ब्लॉक का प्रतिनिधित्व करता है।

एक 'बफर' एक भौतिक डिस्क ब्लॉक के इन-मेमोरी का प्रतिनिधित्व है।

ब्लॉक I / O परिचालन एक समय में एक डिस्क ब्लॉक को हेरफेर करता है। एक आम ब्लॉक I / O ऑपरेशन पढ़ना और लिखना है I कर्नेल डिस्क से एक ब्लॉक के निम्न स्तर के पढ़ने के लिए ब्रेड () फ़ंक्शन प्रदान करता है। 'बफ़र्स' के द्वारा, डिस्क ब्लॉकों को उनके संबंधित इन-मेमोरी पेजों पर मैप किया जाता है। "

RedHat द्वारा समझाया गया:

कैश पृष्ठ:

एक कैश मेमोरी का एक हिस्सा होता है जो डेटा को पारदर्शी रूप से संग्रहित करता है ताकि भविष्य के उन अनुरोधों के अनुरोधों को तेज़ी से पेश किया जा सके। यह मेमोरी कर्नेल डिस्क डिस्क कैश द्वारा उपयोग की जाती है और आई / ओ प्रदर्शन को बेहतर करती है।

लिनक्स कर्नेल इस तरह से बनाया गया है कि यह आपकी रैम के रूप में उपयोग करेगा, क्योंकि यह आपकी स्थानीय और दूरस्थ फाइल सिस्टम और डिस्क से जानकारी को कैश करता है। जैसा कि विभिन्न पाठों और लिखते समय गुजरता है सिस्टम पर, कर्नेल मेमोरी में विभिन्न प्रक्रियाओं के लिए संग्रहीत डेटा रखने की कोशिश करता है जो सिस्टम पर चल रहे हैं या संबंधित प्रक्रियाओं के डेटा जो कि निकट भविष्य में उपयोग किया जाएगा। कैश को उस समय पुनः प्राप्त नहीं किया जाता है जब प्रक्रिया बंद हो जाती है / बाहर निकलती है, लेकिन जब अन्य प्रक्रियाओं को अधिक मेमोरी की आवश्यकता होती है तो मुफ्त उपलब्ध मेमोरी, कर्नेल कैरिज डेटा को संग्रहीत करके और नई प्रक्रिया को उस स्मृति को आवंटित करके मेमोरी को पुनः प्राप्त करने के लिए हेरिस्टिक्स चलाएगा।

जब किसी भी प्रकार की फ़ाइल / डेटा का अनुरोध किया जाता है तो कर्नेल उस फ़ाइल के भाग की एक प्रति की खोज करेगा जो प्रयोक्ता कार्य कर रहा है, और, यदि ऐसा कोई प्रति मौजूद नहीं है, तो वह कैश मेमोरी के एक नए पेज को आवंटित करेगा और इसे भर देगा उचित सामग्री डिस्क से बाहर पढ़ा।

कैश में संग्रहीत डेटा मूल्य हो सकता है जो कि पहले की गणना की गई थी या मूल मानों के डुप्लिकेट थे जो कि डिस्क में कहीं और जमा किए जाते हैं। जब कुछ डेटा का अनुरोध किया जाता है, कैश को पहले यह देखने के लिए चेक किया जाता है कि इसमें डेटा शामिल है या नहीं। डेटा को अपने स्रोत मूल से कैश से अधिक तेज़ी से पुनर्प्राप्त किया जा सकता है

SysV साझा मेमोरी सेगमेंट को कैश के रूप में भी हिसाब किया जाता है, हालांकि वे डिस्क पर किसी भी डेटा का प्रतिनिधित्व नहीं करते हैं। कोई भी साझा स्मृति खंड आईपीसीएस-एम कमांड का उपयोग करके और बाइट्स कॉलम को चेक कर सकता है।

बफ़र्स:

बफ़र्स डेटा कैश के तहत संग्रहीत डेटा के डिस्क ब्लॉक प्रतिनिधित्व हैं। बफ़रों में फ़ाइल कैश के नीचे स्थित फाइल / डेटा का मेटाडेटा होता है। उदाहरण: जब किसी भी डेटा का अनुरोध किया जाता है जो पृष्ठ कैश में मौजूद होता है, तो पहले कर्नेल बफ़र्स में डेटा की जांच करता है जिसमें मेटाडेटा होता है जो पृष्ठ कैश में मौजूद वास्तविक फ़ाइलों / डेटा को इंगित करता है। मेटाडाटा से एक बार फ़ाइल का वास्तविक ब्लॉक पता ज्ञात होता है, इसे प्रसंस्करण के लिए कर्नेल द्वारा उठाया जाता है।

एक बफर स्मृति का एक क्षेत्र है जिसे अस्थायी रूप से एक कंप्यूटर से दूसरे स्थान पर स्थानांतरित किया जाता है। एक कैश एक अस्थायी भंडारण क्षेत्र है जहां अक्सर एक्सेस किए गए डेटा को तेजी से पहुंच के लिए रखा जा सकता है। एक बार डेटा को कैशे में संग्रहीत किया जाता है, भविष्य के उपयोग को मूल डेटा को फिर से लाने की बजाय कैश्ड प्रति का उपयोग करके बनाया जा सकता है, ताकि औसत पहुंच का समय कम हो।