कर्नेल कितना रैम का उपयोग करता है?


46

यह सवाल मेरे सदमे से प्रेरित है जब मुझे पता चला कि मैक ओएस एक्स कर्नेल 750 एमबी रैम का उपयोग करता है

मैं 20 वर्षों से लिनक्स का उपयोग कर रहा हूं, और मुझे हमेशा "पता" था कि कर्नेल रैम का उपयोग एक्स द्वारा बौना है (क्या यह सच है? क्या यह कभी सच है?)।

इसलिए, कुछ गुगली करने के बाद, मैंने कोशिश की slabtopजिसने मुझे बताया:

Active / Total Size (% used)       : 68112.73K / 72009.73K (94.6%)

क्या इसका मतलब है कि मेरा कर्नेल अब ~ 72MB RAM का उपयोग कर रहा है?

(यह देखते हुए कि RSS की topरिपोर्ट Xorg17M के रूप में है, कर्नेल अब बौना है, अन्य तरीके से नहीं)।

लैपटॉप के लिए "सामान्य" कर्नेल रैम उपयोग (रेंज) क्या है?

MacOS लिनक्स से अधिक RAM के परिमाण के क्रम का उपयोग क्यों करता है?

पुनश्च। यहाँ कोई उत्तर अंतिम प्रश्न को संबोधित नहीं करता है, इसलिए कृपया संबंधित प्रश्न देखें:


मेरी मशीन पर, यह लगभग 2GB की रिपोर्ट करता है ... लेकिन जब आप विवरणों को देखते हैं, तो यह सभी फाइलसिस्टम कैश से संबंधित होता है।
derobert 15

2
दरअसल, अगर मैं ए करता हूं echo 3 > /proc/sys/vm/drop_caches, तो मेरे पास केवल 80 एमबी का उपयोग है।
derobert

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

जवाबों:


38

कर्नेल एक मिथ्या नाम का एक सा है। लिनक्स कर्नेल में कई प्रॉसेस / थ्रेड्स + मॉड्यूल शामिल होते हैं ( lsmodइसलिए) एक पूरी तस्वीर पाने के लिए आपको पूरी बॉल को देखना होगा न कि केवल एक कंपोनेंट को।

संयोग से मेरा शो slabtop:

 Active / Total Size (% used)       : 173428.30K / 204497.61K (84.8%)

यह slabtopकहने के लिए मैन पेज भी था:

स्लैबटॉप स्टेटिस्टिक हेडर ट्रैक कर रहा है कि स्लैब के कितने बाइट्स का उपयोग किया जा रहा है और यह भौतिक मेमोरी का माप नहीं है। / Proc / meminfo फ़ाइल में 'स्लैब' फ़ील्ड उपयोग की गई स्लैब भौतिक मेमोरी के बारे में जानकारी ट्रैक कर रही है।

गिरते हुए कैश

मेरे प्रश्न के तहत टिप्पणियों में सुझाए गए @derobert के रूप में मेरे कैश को छोड़ना मेरे लिए निम्नलिखित है:

$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$

 Active / Total Size (% used)       : 61858.78K / 90524.77K (68.3%)

एक 3 भेजना निम्न कार्य करता है: मुफ्त पेजचेस, डेंट्री और इनोड्स। मैं इस U & L Q & A शीर्षक में इस पर अधिक चर्चा करता हूं: क्या मेमोरी कैश और बफर को डंप करने का कोई तरीका या उपकरण हैं? "। तो मेरे अंतरिक्ष के 110MB का इस्तेमाल सिर्फ पेजचे, डेंट्री और इनोड्स के बारे में जानकारी बनाए रखने के लिए किया जा रहा था।

अतिरिक्त जानकारी

  • यदि आप रुचि रखते हैं तो मुझे यह ब्लॉग पोस्ट मिला slabtop, जो थोड़ा और विवरण में चर्चा करता है। इसका शीर्षक है: दिन का लिनक्स कमांड: स्लैबटॉप
  • स्लैब कैश की चर्चा यहां विकिपीडिया पर अधिक विस्तार से की गई है, जिसका शीर्षक है: स्लैब आवंटन

तो कितना RAM मेरा कर्नेल उपयोग कर रहा है?

यह तस्वीर मेरे लिए थोड़ी अजीब है, लेकिन यहां वे चीजें हैं जो मुझे लगता है कि हम जानते हैं।

पत्थर की पटिया

हम इस तकनीक का उपयोग करके स्लैब के उपयोग का एक स्नैपशॉट प्राप्त कर सकते हैं। अनिवार्य रूप से हम इस जानकारी को बाहर निकाल सकते हैं /proc/meminfo

$ grep Slab /proc/meminfo
Slab:             100728 kB

मॉड्यूल

इसके अलावा, हम कर्नेल मॉड्यूल के लिए एक आकार मान प्राप्त कर सकते हैं (यह स्पष्ट नहीं है कि यह डिस्क पर उनके आकार या रैम में कब है) /proc/modules:

$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758

Slabinfo

इस खरीद संरचना में SLAB के बारे में अधिकांश विवरण सुलभ हैं /proc/slabinfo:

$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000      0      0    320   25    2 : tunables    0    0    0 : slabdata      0      0      0
fuse_request         100    125    632   25    4 : tunables    0    0    0 : slabdata      5      5      0
fuse_inode            21     21    768   21    4 : tunables    0    0    0 : slabdata      1      1      0

dmesg

जब आपका सिस्टम बूट होता है तो एक लाइन होती है जो लोड होने के बाद लिनक्स कर्नेल के मेमोरी उपयोग की रिपोर्ट करती है।

$ dmesg |grep Memory:
[    0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)

संदर्भ


1
वैसे भी पूरी तस्वीर पाने के लिए है?
गाइल्स

@ गिल्स - उपयोग में कितनी यादें, सही? मुझे लगता है कि इससे पहले कि आप के बारे में एक क्यू याद है?
SLM

@Gilles - मुझे लगता है कि यह आप के बारे में क्या कह रहे हैं के करीब है: grep Slab /proc/meminfo
SLM

@ गिल्स - यह भी है: /proc/slabinfoजो स्रोत के लिए लगता है slabtop, इसलिए एक अधिक सटीक कुल गणना के लिए यहां से मात्राओं की गणना कर सकता है।
SLM

1
स्तंभ 2 के /proc/modulesऑन-डिस्क मॉड्यूल के रूप में मेमोरी में लोड किए गए मॉड्यूल आकार की संभावना अधिक होती है क्योंकि सामान्य रूप से संकुचित होते हैं (जैसे फेडोरा 27 यह xz पर), मैंने tg3एनआईसी ड्राइवर, डिस्क आकार (या तो संकुचित या मूल फ़ाइल आकार) पर जाँच की है। बाइट के आकार से मेल नहीं खाता /proc/modules
टेरी वांग

7

इस बारे में कैसा है:

Active / Total Size (% used)       : 4709.24K / 5062.03K

यह एक ताज़ा बूट पर है, एक सामान्य कर्नेल के साथ बहुत छोटी मशीन चल रही है इसलिए इसकी ज्यादा आवश्यकता नहीं है।

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


4

सोलारिस पर चलने वाले 512 जीबी रैम सर्वर पर कर्नेल 25 जीबी का उपयोग करता है:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    3210102             25078    5%
Anon                     15266226            119267   23%
Exec and libs               41457               323    0%
Page cache                3539331             27651    5%
Free (cachelist)         13799571            107809   21%
Free (freelist)          30093164            235102   46%

Total                    65949851            515233
Physical                 65927406            515057

उस छोटे से कर्नेल द्वारा उपयोग की जाने वाली रैम का आधे से अधिक हिस्सा है:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    2149699             16794   52%
Anon                       517016              4039   13%
Exec and libs               15420               120    0%
Page cache                  21840               170    1%
Free (cachelist)             8768                68    0%
Free (freelist)           1404862             10975   34%

Total                     4117605             32168
Physical                  4096002             32000

चिंता की कोई बात नहीं है, अप्रयुक्त रैम वैसे भी रैम बर्बाद है।


1
कृपया वर्णन करें कि आपने अपना आउटपुट कैसे प्राप्त किया।
मौस

@ echo ::memstat | mdb -kकुछ सोलारिस 10 प्रोडक्शन सर्वरों पर चलने से जो कि 10/09 अपडेट करते हैं।
15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.