लिनक्स मेमोरी उपयोग


3

हम अपने कुछ सर्वरों पर कुछ लिनक्स मेमोरी उपयोग की समस्याएँ रखते हैं। मुक्त, शीर्ष, ps और vmstat सभी 1G (~ 25%) से मुक्त 261M दिखा रहे हैं। हालाँकि, प्रति प्रक्रिया में दिखाए गए मेमोरी की मात्रा को जोड़ने से पता चलता है कि हमें बहुत कम मेमोरी का उपयोग करना चाहिए। कैश में बफर में केवल 48M और 0K है, जिससे कुल मेमोरी 309M उपलब्ध हो जाती है, फिर भी हमारे पास जितना होना चाहिए, उससे काफी कम है। मैंने http://www.workxpress.com/sites/default/files/top.png (स्मृति द्वारा क्रमबद्ध) में हमारे शीर्ष आउटपुट का एक स्क्रीन शॉट शामिल किया है। यह सर्वरफोल पर मेरी पहली पोस्ट है इसलिए मैं अपनी पोस्ट में छवि शामिल नहीं कर सका :-P

कई Google खोजों को आज़माने के बाद, मैं वह नहीं हूं जहां मैं आगे था। अधिकांश परिणामों ने मुझे एक ही बात बताई, मेमोरी का उपयोग कैश और बफ़र्स (जो मुझे पहले से ही पता था) के लिए किया जा रहा है। लेकिन शीर्ष और मुक्त स्पष्ट रूप से यह नहीं दिखाते हैं। कोई भी मदद बहुत ही सराहनीय होगी।

धन्यवाद,
जेम्सआर्म्स

अपडेट:
मैं इस मुद्दे की अधिक हाल की घटना से हमारे / proc / meminfo सहित हूं:

MemTotal:      1028636 kB
MemFree:         30056 kB
Buffers:             0 kB
Cached:          28732 kB
SwapCached:     154684 kB
Active:         265328 kB
Inactive:        19416 kB
SwapTotal:     2097144 kB
SwapFree:      1758196 kB
Dirty:              36 kB
Writeback:           0 kB
AnonPages:      240260 kB
Mapped:          11996 kB
Slab:            23008 kB
SReclaimable:    11976 kB
SUnreclaim:      11032 kB
PageTables:       5636 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   2611460 kB
Committed_AS:  1099080 kB
VmallocTotal: 34359738367 kB
VmallocUsed:      7204 kB
VmallocChunk: 34359731091 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
HugePages_Surp:      0
Hugepagesize:     2048 kB

नीचे हमारी /etc/sysctl.conf है (सभी टिप्पणी की गई पंक्तियों के साथ):

kernel.printk = 4 4 1 7                            
kernel.maps_protect = 1                                            
fs.inotify.max_user_watches = 524288
vm.mmap_min_addr = 65536
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

आशा है कि ये आपकी मदद करेगा।


1
बस आप जानते हैं, मुझे तीन महीने पहले VMware सर्वर के साथ यह समस्या थी। हमने इसे मेमोरी की सीमा को बंद करके तय किया। मेरा सुझाव है कि आप वीएमवेयर मेमोरी को कैसे संभालते हैं, इसके बारे में पढ़ते हैं। जो हो रहा है वह अपेक्षित है। यदि आप वीसीआई के प्रदर्शन / मेमोरी टैब में "मेमोरी बैलून एवरेज" देखने के लिए अपना ईएसएक्स एडमिन प्राप्त करते हैं, तो यह दिखाएगा कि आपकी "लापता" मेमोरी कहां है।
शवोवन

जवाबों:


3

चूँकि मैं vmware-guestd को देख रहा हूं, इसलिए मैं मान लूंगा कि यह VM है। ईएसएक्स को मानते हुए, वीआईसी में जाएं और मशीन पर राइट-क्लिक करें। टैब पर क्लिक करें Edit Settings...और चुनें Resources। क्लिक करें Memoryऔर सुनिश्चित करें कि के Unlimitedतहत जाँच है Limit

क्या होने की संभावना है कि आपके पास मेमोरी पर सीमा है, और जब मशीन बहुत सारी मेमोरी का उपयोग करती है (सीमा से अधिक पहुंचती है या सीमा पार करती है), तो vmware अतिथि उपकरण मेमोरी को "इस्तेमाल" करते हैं बजाय इसे ईएसएक्स पर वापस भेजे, इसकी फिर से जरूरत है।

अपडेट करें:

"सर्वर आपको केवल वर्चुअल मशीन पर बिजली की अनुमति देता है यदि सीपीयू और मेमोरी आरक्षण उपलब्ध है ... जब संसाधनों का उपयोग नहीं किया जाता है, तो ईएसएक्स सर्वर होस्ट उन्हें अन्य वर्चुअल मशीनों के लिए उपलब्ध कराता है।"

http://www.vmware.com/pdf/vi3_esx_resource_mgmt.pdf

यह "गुब्बारा" चालक (वीएमएमएक्टेल) के माध्यम से करता है जो अतिथि साधनों का हिस्सा है। मान लें कि आपकी मशीन 100MB RAM का उपयोग कर रही है, तो आप कुछ प्रोग्राम चलाते हैं और यह 500MB तक का उपयोग करता है। अब आप उस प्रोग्राम को बंद कर देते हैं और उम्मीद करते हैं कि RAM 100MB तक नीचे जाएगी। हालाँकि, यह नहीं है। ऐसा इसलिए है, क्योंकि ESXi के लिए अतिथि OS से मेमोरी को पुनः प्राप्त करने के लिए (जो आरक्षण होने पर भी ऐसा करता है) उसे गुब्बारा चालक का उपयोग करना चाहिए। OS को "एक्ट" बनाने के लिए, हालाँकि इसमें मेमोरी कम है, गुब्बारा चालक "मेमोरी" का उपयोग करता है जो ESXi चाहता है, ताकि OS इसका उपयोग न कर सके।

IOW, आरक्षण के साथ भी अतिथि केवल उतना ही होस्ट RAM का उपयोग कर रहा है जितना वह उपयोग कर रहा है। जब यह अधिक उपयोग करता है, तो ESX अधिक होस्ट रैम आवंटित करता है जो अतिथि अब सोचता है कि यह हमेशा उपलब्ध है। अतिथि को "समझाने" के लिए कि नया राम फिर से चला गया है, गुब्बारा चालक इसका उपयोग करता है। आरक्षण का सीधा सा मतलब है कि "VM को शुरू न करें जब तक कि भौतिक मशीन में अतिथि को लोड करने के लिए 1GB मुफ्त न हो" और "अतिथि को 1GB न दें कि वह इसका उपयोग करता है या नहीं।"


आप अपनी धारणा में सही हैं कि हम ESX (सटीक होने के लिए ESXi) का उपयोग कर रहे हैं। इस मशीन के लिए हमारे पास VIC तक पहुंच नहीं है, लेकिन हम जानते हैं कि इस मशीन के लिए सीमा 1G के 1G रिजर्व के साथ है। एक दूसरी मशीन है जो सीमित है और मशीन पर जो बचा है उसका अधिकांश हिस्सा सुरक्षित रखता है।
जेम्स एरम्स

हमने सीमा को हटा दिया और इससे कोई फर्क नहीं पड़ा। हालाँकि, हमने पाया कि गुब्बारा, औसतन, स्मृति की उतनी ही मात्रा ले रहा था जितना कि हम गायब थे। आपके द्वारा लिंक किए गए दस्तावेज़ के लिए धन्यवाद, हमने पाया कि हम एक विशिष्ट मशीन के लिए गुब्बारा को बंद कर सकते हैं। अनुसूची.m.m.mmemctl को 0. पर सेट करके। ऐसा करने से, हम इस समस्या को हल करने में सक्षम थे। हालांकि मैं सामान्य रूप से इसकी सिफारिश नहीं करूंगा, लेकिन यह मशीन जिस ESX सर्वर पर है वह दो VMs को समर्पित है।
जेम्सआर्स

1

प्रयत्न, कोशिश:

cat /proc/meminfo

यह मेमोरी के उपयोग का अधिक विवरण देता है।


हमने यह कोशिश की, लेकिन यह हमें कहीं नहीं ले गया।
जेम्सआर्स


0

आपके पास कर्नेल मेमोरी रिज़र्वेशन हो सकता है। विशेष रूप से, / proc / meminfo में बड़े पैमाने पर मापदंडों की जाँच करें।

और कृपया अपना /etc/sysctl.conf पोस्ट करें यदि यह सुझाव मदद नहीं करता है।


हमारे Hugepagesize को 2048K के रूप में सूचीबद्ध किया गया है। मैंने अपनी पोस्ट को दोनों / proc / meminfo और /etc/sysctl.conf को शामिल करने के लिए अपडेट किया है।
जेम्सअर्स

जंगली अनुमान: max_user_watches को कम करें।
मैक्स एल्गिनिन

@ynguldyn हम inotify का उपयोग नहीं करते हैं इसलिए मुझे कोई आइडिया नहीं है कि इसके लिए उचित मूल्य क्या होगा। क्या तुम्हारे पास कोई सुझाव है?
जेम्स एरम्स

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