एक 2.6.31-302 x86-64 कर्नेल पर उबंटू चलाना। समग्र समस्या यह है कि मेरे पास 'कैश्ड' श्रेणी में स्मृति है जो ऊपर जाती रहती है और जब हमारे आवेदन को इसकी आवश्यकता होती है तब भी इसे मुक्त या उपयोग नहीं किया जाएगा।
तो यहाँ 'फ्री' कमांड से जो मिलता है। इसमें से कोई भी पहली नज़र में साधारण नहीं दिखता।
# free
total used free shared buffers cached
Mem: 7358492 5750320 1608172 0 7848 1443820
-/+ buffers/cache: 4298652 3059840
Swap: 0 0 0
पहली बात जो किसी को कहने वाली है, "चिंता न करें, लिनक्स उस मेमोरी को स्वचालित रूप से प्रबंधित करता है।" हां, मुझे पता है कि मेमोरी मैनेजर को कैसे काम करना चाहिए; समस्या यह है कि यह सही काम नहीं कर रहा है। यहां "कैशेड" 1.4 जीबी आरक्षित और अनुपयोगी प्रतीत होता है।
लिनक्स के बारे में मेरा ज्ञान बताता है कि 3 जीबी "फ्री" है; लेकिन सिस्टम का व्यवहार अन्यथा कहता है। जब पीक उपयोग के दौरान 1.6 जीबी वास्तविक फ्री मेमोरी का उपयोग किया जाता है, जैसे ही अधिक मेमोरी की मांग की जाती है (और पहले कॉलम में 'फ्री' 0 पर पहुंच जाता है) ओओएम किलर को आमंत्रित किया जाता है, प्रक्रियाएं मार दी जाती हैं, और समस्याएं पैदा होती हैं भले ही '/' में 'फ्री' / / बफ़र्स / कैश पंक्ति में अभी भी लगभग 1.4 जीबी 'फ्री' है।
मैंने प्रमुख प्रक्रियाओं पर oom_adj मानों को ट्यून किया है ताकि यह सिस्टम को अपने घुटनों पर न लाए, लेकिन फिर भी महत्वपूर्ण प्रक्रियाओं को मार दिया जाएगा, और हम कभी भी उस बिंदु तक नहीं पहुंचना चाहते हैं। विशेष रूप से तब, जब सैद्धांतिक रूप से, 1.4GB अभी भी "मुक्त" है यदि यह केवल डिस्क कैश को बाहर निकाल देगा।
किसी को भी यहाँ क्या हो रहा है किसी भी विचार है? लिनक्स के 'फ्री' कमांड और "मेरे पास कोई मुफ्त मेमोरी क्यों नहीं है" के बारे में गूंगे सवालों से इंटरनेट भर गया है और इस वजह से मुझे इस मुद्दे पर कुछ भी नहीं मिल रहा है।
पहली चीज जो मेरे सिर में आती है, वह है अदला-बदली। हमारे पास एक sysadmin है जो इसके बारे में अडिग है; यदि वे बैकअप लेते हैं तो मैं स्पष्टीकरण के लिए खुला हूं। क्या इससे समस्याएँ हो सकती हैं?
यहां चलाने के बाद मुफ्त है echo 3 > /proc/sys/vm/drop_caches
:
# free
total used free shared buffers cached
Mem: 7358492 5731688 1626804 0 524 1406000
-/+ buffers/cache: 4325164 3033328
Swap: 0 0 0
जैसा कि आप देख सकते हैं, कैश की कुछ मामूली मात्रा वास्तव में मुक्त हो गई है, लेकिन लगभग 1.4 जीबी "अटक" लगता है। दूसरी समस्या यह है कि यह मूल्य समय के साथ बढ़ने लगता है। एक अन्य सर्वर पर 2.0 जीबी अटक गया है।
मैं वास्तव में इस मेमोरी को वापस चाहूंगा ... किसी भी मदद की सबसे अधिक सराहना की जाएगी।
यहाँ है cat /proc/meminfo
अगर यह कुछ भी लायक है:
# cat /proc/meminfo
MemTotal: 7358492 kB
MemFree: 1472180 kB
Buffers: 5328 kB
Cached: 1435456 kB
SwapCached: 0 kB
Active: 5524644 kB
Inactive: 41380 kB
Active(anon): 5492108 kB
Inactive(anon): 0 kB
Active(file): 32536 kB
Inactive(file): 41380 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 320 kB
Writeback: 0 kB
AnonPages: 4125252 kB
Mapped: 42536 kB
Slab: 29432 kB
SReclaimable: 13872 kB
SUnreclaim: 15560 kB
PageTables: 0 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3679244 kB
Committed_AS: 7223012 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7696 kB
VmallocChunk: 34359729675 kB
DirectMap4k: 7340032 kB
DirectMap2M: 0 kB