2011-08-30 11 views
8

चला सकता हूं, मैं अपनी फ़ाइलों को लिखने के लिए/dev/shm tmpfs का उपयोग करने का प्रयास कर रहा हूं। डिफ़ॉल्ट रूप से बिना भौतिक RAM का आधा हिस्सा है। जब मैं इस माउंट के आकार से परे कुछ लिखता हूं, तो यह त्रुटि देता है "डिस्क पर कोई स्थान नहीं छोड़ा गया"।क्या मैं tmpfs आकार

मेरा सवाल है, क्या यह त्रुटि से बाहर स्वैप स्थान का उपयोग नहीं करना चाहिए? क्या कोई तरीका है कि मैं अपने आवेदन को tmpfs के लिए आवंटित किए गए स्थान से अधिक उपयोग कर सकता हूं, शायद एक विकल्प के माध्यम से?

क्या होता है यदि मेरी प्रक्रियाओं में से कोई एक चल रहा है और/dev/shm में लगभग सभी जगहों का उपयोग किया गया है और मेरे पास एक और प्रक्रिया चल रही है (/ dev/shm के बाहर) जो 50% से अधिक RAM का उपयोग करती है अंतरिक्ष? कौन सा बदल गया है?

उदाहरण के लिए, मान लें कि मेरी कुल भौतिक स्मृति 40 जीबी है और टीएमपीएफ 20 जीबी है। प्रक्रियाओं में से एक/dev/shm का उपयोग कर रहा है और लगभग 20 जीबी है। अब एक और प्रक्रिया चल रही है जिसमें लगभग 30 जीबी लगती है। प्रक्रियाओं में से कौन सा स्वैप आउट हो जाएगा? या यह निर्धारित नहीं किया जा सकता है?

उत्तर

17

tmpfs निरंतर होने पर स्वैप स्पेस का उपयोग करेगा (यह तब भी हो सकता है जब tmpfs आकार रैम आकार का आधा हो, क्योंकि अन्य चीजें रैम का भी उपयोग करती हैं) और 'आधा रैम' केवल डिफ़ॉल्ट आकार है (काफी सादा डिफॉल) फाइल सिस्टम के। आप इसे आप जो कुछ भी करना चाहते हैं निर्धारित कर सकते हैं, जबकि बढ़ते या 'आकार' तर्क का उपयोग यह remounting: tmpfs

size=nbytes 

    Override default maximum size of the filesystem. The size is 
    given in bytes, and rounded up to entire pages. The default is 
    half of the memory. The size parameter also accepts a suffix % 
    to limit this tmpfs instance to that percentage of your physical 
    RAM: the default, when neither size nor nr_blocks is specified, 
    is size=50% 

अपनी वितरण fstab का उपयोग करता है tmpfs आप कर सकते हैं माउंट करने के लिए

माउंट विकल्प उदाहरण जोड़ें 'आकार = 40 जी' वहाँ। आप इसे किसी भी समय उपयोग कर सकते हैं:

mount -o remount,size=40G /dev/shm 

सावधान रहें, हालांकि। यदि tmpfs पर फ़ाइलें आपकी वर्चुअल मेमोरी (रैम + स्वैप) में बहुत अधिक लेती हैं तो एप्लिकेशन मारे जा सकते हैं (ओओएम किलर द्वारा) और पूरी प्रणाली क्रैश हो सकती है।

अपने प्रश्नों के पीछे ...

मुझे नहीं लगता कि यह निर्धारित करने के लिए क्या लिनक्स सब कुछ (प्रक्रिया डेटा स्मृति, कैश किए गए डिस्क फाइल, mmaped डिस्क फ़ाइलों सहित के लिए उस स्तर पर बदली हो जाएगा, AFAIK के रूप में आसान है , tmpfs फ़ाइलें) वही 'वर्चुअल मेमोरी' है। लिनक्स कुछ पृष्ठों को अधिक महत्वपूर्ण (हाल ही में उपयोग किया जा सकता है), अन्य को स्वैप करने के लिए तैयार हो सकता है। तो यह tmpfs फ़ाइल का हिस्सा हो सकता है और दूसरी प्रक्रिया का एक हिस्सा बदल गया है।

+0

मैं आपकी टिप्पणी में http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/ जोड़ूंगा :) – Quamis