शीर्ष अर्थ में "बफ़ / कैश" और "उपलब्ध मेम" फ़ील्ड क्या हैं?


28

शीर्ष के आउटपुट में, दो फ़ील्ड हैं, "बफ़ / कैश" और मेमोरी और स्वैप उपयोग लाइनों में "उपलब्ध मेम" चिह्नित हैं:

यहाँ छवि विवरण दर्ज करें

इन दो क्षेत्रों का क्या मतलब है?

मैंने उन्हें Googling करने की कोशिश की है, लेकिन परिणाम केवल शीर्ष पर सामान्य लेख लाते हैं, और वे यह नहीं बताते कि ये क्षेत्र क्या संकेत देते हैं।

जवाबों:


31

topके मैनपेज क्षेत्रों का वर्णन नहीं है, लेकिन freeहै करता है:

बफ़र्स

कर्नेल बफ़र्स द्वारा उपयोग की जाने वाली मेमोरी ( Buffersमें/proc/meminfo )

कैश

मेमोरी पेज कैश और स्लैब द्वारा इस्तेमाल किया ( Cachedऔर SReclaimableमें/proc/meminfo )

शौकीन / कैश

बफ़र्स और कैश का योग

उपलब्ध

स्वैपिंग के बिना, नए एप्लिकेशन शुरू करने के लिए कितनी मेमोरी उपलब्ध है, इसका अनुमान। कैश या फ्री फ़ील्ड द्वारा दिए गए डेटा के विपरीत, यह फ़ील्ड खाता पृष्ठ कैश में ले जाती है और यह भी कि सभी पुनर्प्राप्त करने योग्य मेमोरी स्लैब को उपयोग में होने वाली वस्तुओं के कारण पुनः प्राप्त नहीं किया जाएगा MemAvailable/proc/meminfo , कर्नेल 3.14 पर उपलब्ध है, कर्नेल पर नकल करते 2.6.27+ , अन्यथा मुक्त के रूप में ही)

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


1
बफ़र्स / कैश को पर्याप्त समय उपलब्ध नहीं कराया जाता है ; वे मेमोरी सेगमेंट हैं जो तुरंत उपलब्ध हैं किसी भी प्रोग्राम को कुछ मेमोरी को एलोकेट करने की आवश्यकता होती है। यह भी देखें linuxatemyram.com
DopeGhoti

4

बस थोड़ा स्पष्ट करने के लिए, बफ़र्स उस डेटा को संदर्भित करता है जिसे लिखा जा रहा है - उस मेमोरी को पुनः प्राप्त नहीं किया जा सकता है जब तक कि लेखन पूरा न हो जाए।

कैश उस डेटा को संदर्भित करता है जिसे पढ़ा गया है - इसे लगभग उसी स्थिति में रखा जाता है जब इसे फिर से पढ़ने की आवश्यकता होती है, लेकिन इसे तुरंत पुनः प्राप्त किया जा सकता है क्योंकि इसे डिस्क से हमेशा पढ़ा जा सकता है।


वास्तव में इसका मतलब यहां नहीं है। विशेष रूप से के /proc/meminfoलिए एक क्षेत्र है Writeback। एक अलग क्षेत्र है Buffers, और जो दिखाया गया है वह हैbuffers है free -wBuffersस्मृति उपयोग का एक सामान्य कारण यहां दिखाया गया है: " 30% RAM" बफ़र्स "है। यह क्या है? "
sourcejedi

इस से ( access.redhat.com/solutions/406773 ) मैं यह लेता हूं कि राइटबैक बफ़र्स का वह हिस्सा है जिसे अभी तक डिस्क पर नहीं लिखा गया है। या आप कुछ और कह रहे हैं?
वॉलस्टप्रोग

यह वर्णन भ्रामक होगा। Buffersपेज कैश का एक हिस्सा है (अब); इसकी गिनती नहीं की जाती है Cached, लेकिन इसे इसके हिस्से के रूप में गिना जाता है Active(file) + Inactive(file)। स्टीफन किट के जवाब पर टिप्पणियाँ देखें। Dirtyपृष्ठ कैश का वह हिस्सा है जिसे लिखा गया है, और इसलिए अंततः डिस्क पर वापस लिखने की आवश्यकता है। Writebackइसमें शामिल नहीं हैDirty । इसलिए, Writebackके मूल्य का एक हिस्सा नहीं है Buffers
sourcejedi

क्या Buffersवास्तव में इसका मतलब है ब्लॉक डिवाइस से संबद्ध पेज कैश है। कुछ फाइलसिस्टम आंतरिक रूप से इसका उपयोग करते हैं; अन्य लोग इसका बिल्कुल उपयोग नहीं करते हैं। / "मेरे रैम का 30% बफ़र्स है" सवाल पर मेरे जवाब को ठीक करने के लिए जाता है।
sourcejedi

2

इस जानकारी का विहित स्रोत /usr/src/linux/Documentation/filesystems/proc.txt है

बफ़र्स : कच्ची डिस्क ब्लॉक के लिए अपेक्षाकृत अस्थायी भंडारण को बहुत बड़ा (20 एमबी या तो) कैश्ड नहीं होना चाहिए : डिस्क से पढ़ी गई फ़ाइलों के लिए मेमोरी कैश (पेज कैश)। SwapCached शामिल नहीं है।

आप यहां कुछ और विवरण भी पा सकते हैं

लिनक्स पेज कैश (" कैश्ड :" मेमिनफो से) अधिकांश सिस्टम पर रैम का सबसे बड़ा एकल उपभोक्ता है। जब भी आप डिस्क पर किसी फ़ाइल से रीड () करते हैं, तो वह डेटा मेमोरी में पढ़ा जाता है, और पेज कैश (1।) में चला जाता है।
बफ़र कैश (" बफ़र्स :" मेमिनोफ़ में) डेंट्री / इनोड कैश के एक करीबी रिश्तेदार है।

या इस तरह स्रोत कोड का विश्लेषण ।

buffersफ़ंक्शन की वापसी मान राशि हैnr_blockdev_pages(void)

long nr_blockdev_pages(void)
{
        struct block_device *bdev;
        long ret = 0;
        spin_lock(&bdev_lock);
        list_for_each_entry(bdev, &all_bdevs, bd_list) {
                ret += bdev->bd_inode->i_mapping->nrpages;
        }
        spin_unlock(&bdev_lock);
        return ret;
}

की राशि cached:

global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.