मुझे / dev / shm / का उपयोग कब करना चाहिए और कब / tmp / का उपयोग करना चाहिए?


139

मुझे कब उपयोग करना चाहिए /dev/shm/और मुझे कब उपयोग करना चाहिए /tmp/? क्या मैं हमेशा उन दोनों पर भरोसा कर सकता हूं जो यूनिटीज में हैं?

जवाबों:


101

/dev/shmएक अस्थायी फ़ाइल संग्रहण फ़ाइल सिस्टम है, अर्थात, tmpfs , जो बैकिंग स्टोर के लिए RAM का उपयोग करता है। यह एक साझा मेमोरी कार्यान्वयन के रूप में कार्य कर सकता है जो आईपीसी की सुविधा देता है ।

विकिपीडिया से :

हाल ही में 2.6 लिनक्स कर्नेल बिल्ड ने रैमडिस्क के रूप में साझा मेमोरी के रूप में / dev / shm की पेशकश करना शुरू कर दिया है, विशेष रूप से एक विश्व-योग्य निर्देशिका के रूप में जो कि / etc / default / default / tmpfs में परिभाषित सीमा के साथ मेमोरी में संग्रहित है।  / dev / shm समर्थन कर्नेल कॉन्फिग फ़ाइल के भीतर पूरी तरह से वैकल्पिक है।   यह फेडोरा और उबंटू दोनों वितरणों में डिफ़ॉल्ट रूप से शामिल है, जहां यह पल्सेडियो एप्लिकेशन द्वारा सबसे अधिक उपयोग किया जाता है।             (महत्व दिया।)

/tmpफाइलसिस्टम पदानुक्रम मानक में परिभाषित अस्थायी फ़ाइलों के लिए स्थान है , जो लगभग सभी यूनिक्स और लिनक्स वितरणों द्वारा पीछा किया जाता है।

चूंकि डिस्क भंडारण की तुलना में रैम काफी तेज है, इसलिए आप प्रदर्शन को बढ़ावा देने के लिए उपयोग/dev/shm/tmp कर सकते हैं , अगर आपकी प्रक्रिया I / O गहन और बड़े पैमाने पर अस्थायी फ़ाइलें है।

अपने सवालों के जवाब देने के लिए: नहीं, आप हमेशा /dev/shmमौजूद होने पर भरोसा नहीं कर सकते , निश्चित रूप से स्मृति के लिए बंधी मशीनों पर नहीं। आपको /tmpतब तक उपयोग करना चाहिए जब तक आपके पास उपयोग करने का एक बहुत अच्छा कारण न हो /dev/shm

याद रखें कि एक अलग माउंट के बजाय फाइलसिस्टम /tmpका हिस्सा हो सकता है /, और इसलिए आवश्यकतानुसार बढ़ सकता है। का आकार /dev/shmसिस्टम पर अतिरिक्त रैम द्वारा सीमित है, और इसलिए आप इस फाइल सिस्टम पर अंतरिक्ष से बाहर चलने की अधिक संभावना रखते हैं।


1
मैं इसका उपयोग कमांड के मानक त्रुटि आउटपुट से फ़ाइल में आउटपुट को पुनर्निर्देशित करने के लिए करूंगा। फिर मैं इस फाइल को पढ़ूंगा और इसे प्रोसेस करूंगा। मैं यह कई हजार बार कर रहा हूँ (यह एक पाश निर्माण की स्थिति का हिस्सा है)। मुझे लगा कि स्मृति इस मामले में अच्छी होंगी। लेकिन मैं यह भी चाहता हूं कि यह पोर्टेबल हो। मुझे लगता है कि अगर /dev/shmमौजूद है तो मैं इसकी जांच करूंगा , अगर यह करता है तो इसका उपयोग करें, या इसमें गिरावट आएगी /tmp। क्या यह अच्छा लगता है?
हटा दिया गया

1
मैं अनजाने में इसे भरने के खिलाफ गार्ड के न्यूनतम आकार और वर्तमान उपयोग स्तर / dev / shm के लिए एक चेक भी जोड़ूंगा।
नगुल

4
लिनक्स 2.6 के तहत और बाद में / देव / शम को काम करने के लिए POSIX साझा मेमोरी सिस्टम कॉल जैसे shm_open () के लिए माउंट किया जाना आवश्यक है। दूसरे शब्दों में, कुछ कार्यक्रम टूट जाएंगे यदि इसके माउंट नहीं किया गया है - तो यह होना चाहिए। यह सिर्फ एक रैम डिस्क नहीं है। तो आपको यह सुनिश्चित करना चाहिए कि कुछ / देव / शम स्वतंत्र है।
21

7
का उपयोग करके कोई प्रदर्शन को बढ़ावा नहीं है /dev/shm/dev/shmडिस्क (स्वैप) द्वारा समर्थित मेमोरी (tmpfs) है। /var/tmpमेमोरी (डिस्क कैश) डिस्क (ऑन-डिस्क फाइल सिस्टम) द्वारा समर्थित है। व्यवहार में, प्रदर्शन उसी के बारे में है (tmpfs के पास थोड़ी बढ़त है लेकिन बात के लिए पर्याप्त नहीं है)। /tmptmpfs हो सकता है या नहीं, यह इस पर निर्भर करता है कि व्यवस्थापक ने इसे कैसे कॉन्फ़िगर किया है। /dev/shmआपकी स्क्रिप्ट में उपयोग करने का कोई अच्छा कारण नहीं है ।
गिल्स

3
@GaretClaborn स्वैप द्वारा समर्थित मेमोरी का उपयोग करने के लिए बहुत सारे अच्छे कारण हैं, लेकिन इसे सामान्य प्रक्रिया मेमोरी कहा जाता है। यदि आप किसी फ़ाइल का उपयोग कर रहे हैं, तो इसे एक फाइल सिस्टम कहा जाता है, और सभी फाइल सिस्टम मेमोरी (कैश) होते हैं, जो कि स्वैप सिस्टम द्वारा समर्थित है यदि फाइलसिस्टम tmpfs जैसा कुछ है। स्वैप और अन्य भंडारण क्षेत्रों के बीच डिस्क स्थान आवंटित करना आमतौर पर व्यवस्थापक के वास्तविक में होता है। यदि कोई एप्लिकेशन उन फ़ाइलों को चाहता है जो RAM में बने रहते हैं, /tmpतो सामान्य स्थान है ( $TMPDIRओवरराइड के साथ )। /tmpस्वैप, अन्य डिस्क स्थान या कुछ भी नहीं द्वारा समर्थित बनाने का विकल्प व्यवस्थापक का है।
गिल्स

61

tmpfsसंभावना के अवरोही क्रम में :

┌───────────┬──────────────┬────────────────┐
│ /dev/shm  │ always tmpfs │ Linux specific │
├───────────┼──────────────┼────────────────┤
│ /tmp      │ can be tmpfs │ FHS 1.0        │
├───────────┼──────────────┼────────────────┤
│ /var/tmp  │ never tmpfs  │ FHS 1.0        │
└───────────┴──────────────┴────────────────┘

चूँकि आप एक लिनक्स विशिष्ट tmpfs माउंटपॉइंट बनाम एक विशिष्ट रूप से परिभाषित निर्देशिका के बारे में पूछ रहे हैं, जो tmpfs हो सकता है (आपके sysadmin के आधार पर और आपके डिस्ट्रो के लिए क्या डिफ़ॉल्ट है), आपके प्रश्न के दो पहलू हैं, जिन पर अन्य उत्तरों ने अलग से ज़ोर दिया है:

  1. अच्छे अभ्यास के आधार पर इन निर्देशिकाओं का उपयोग कब करें
  2. जब tmpfs का उपयोग करना उचित हो

अच्छे आचरण

रूढ़िवादी संस्करण ( FHS और आम उपयोग से सम्मेलनों का मिश्रण ):

  • जब संदेह में, उपयोग करें /tmp
  • /var/tmpबड़े डेटा के लिए उपयोग करें जो राम में आसानी से फिट नहीं हो सकते हैं।
  • /var/tmpडेटा के लिए उपयोग करें जो रिबूट (कैश की तरह) के पार रखने के लिए फायदेमंद है।
  • /dev/shmकॉलिंग के साइड-इफेक्ट के रूप में उपयोग करें shm_open()। इरादा दर्शकों को बफ़र से बांधा जाता है जो अंतहीन रूप से अधिलेखित होते हैं। तो यह लंबे समय तक रहने वाली फाइलों के लिए है जिनकी सामग्री अस्थिर है और बहुत बड़ी नहीं है।
  • यदि अभी भी संदेह है, तो उपयोगकर्ता को ओवरराइड करने का एक तरीका प्रदान करें। उदाहरण के लिए, mktempप्रोग्राम TMPDIRपर्यावरण चर का सम्मान करता है।

व्यावहारिक संस्करण:

का उपयोग करें /dev/shmजब यह tmpfs का उपयोग करने के लिए महत्वपूर्ण है, /var/tmpजब यह महत्वपूर्ण है कि नहीं /tmp

जहां tmpfs एक्सेल होते हैं

fsynctmpfs पर कोई ऑप नहीं है। यह syscall (IO) प्रदर्शन (और यदि आप उस बारे में परवाह करते हैं, तो फ्लैश दीर्घायु) का नंबर एक दुश्मन है, हालांकि अगर आप खुद को tmpfs (या eatmydata) का उपयोग करते हुए पाते हैं) बस fsync को हराने के लिए, तब आप (या श्रृंखला में कोई अन्य डेवलपर) कुछ गलत कर रहे हैं। इसका मतलब है कि भंडारण डिवाइस की ओर लेनदेन आपके उद्देश्य के लिए अनावश्यक रूप से ठीक है - आप प्रदर्शन के लिए कुछ बचत करने वाले को छोड़ने के लिए स्पष्ट रूप से तैयार हैं, क्योंकि अब आप उन सभी को तोड़फोड़ करने के चरम पर चले गए हैं - शायद ही कभी सबसे अच्छा समझौता। इसके अलावा, यह लेन-देन के प्रदर्शन की भूमि में है, जहां एसएसडी होने के कुछ सबसे बड़े लाभ हैं - कोई भी सभ्य एसएसडी इस दुनिया से बाहर प्रदर्शन करने जा रहा है जो कताई डिस्क संभवतः ले सकती है (7200 आरपीएम = 120 हर्ट्ज) , यदि कोई अन्य व्यक्ति इसे एक्सेस नहीं कर रहा है), फ्लैश मेमोरी कार्ड का उल्लेख नहीं करना है, जो इस मीट्रिक पर व्यापक रूप से भिन्न होता है (कम से कम क्योंकि यह अनुक्रमिक प्रदर्शन के साथ एक व्यापार है, जिसे वे द्वारा रेट किया गया है, उदाहरण के लिए एसडी कार्ड क्लास रेटिंग)। इसलिए सावधान रहें,

एक हास्यास्पद कहानी सुनना चाहते हो? मेरा पहला fsyncसबक: मेरे पास एक नौकरी थी जो कभी-कभी बदलते वर्तमान प्रारूप में सकलाइट डेटाबेस के एक समूह को "अपग्रेड" करती थी (जिसे टेस्टकेस के रूप में रखा गया था)। "अपग्रेड" ढांचा स्क्रिप्ट का एक गुच्छा चलाएगा, जिससे एक डेटाबेस को अपग्रेड किया जा सकेगा। बेशक, मैंने अपने डेटाबेस को समानांतर (8 समानांतर में) में अपग्रेड किया, क्योंकि मैं एक शक्तिशाली 8 कोर सीपीयू के साथ धन्य था। लेकिन जैसे-जैसे मुझे पता चला, वहाँ कोई बनता है speedup (बल्कि एक मामूली था हिट ), क्योंकि प्रक्रिया पूरी तरह से आईओ बाध्य किया गया था। प्रफुल्लित करने वाला, एक डेटाबेस में अपग्रेड फ्रेमवर्क को लपेटकर, जिसने प्रत्येक डेटाबेस को कॉपी किया /dev/shm, उसे वहां अपग्रेड किया, और डिस्क पर वापस कॉपी किया वह 100 गुना तेज (अभी भी समानांतर में 8 के साथ) की तरह था। एक बोनस के रूप में, पीसी प्रयोग करने योग्य था डेटाबेस अपग्रेड करते समय भी।

जहां tmpfs उपयुक्त है

Tmpfs का उचित उपयोग अस्थिर डेटा के अनावश्यक लेखन से बचने के लिए है। प्रभावी रूप से राइटबैक को अक्षम करना , जैसे /proc/sys/vm/dirty_writeback_centisecsएक नियमित फाइलसिस्टम पर अनंत की स्थापना ।

प्रदर्शन के साथ ऐसा करने के लिए बहुत कम है, और यह विफल करना fsync का दुरुपयोग करने की तुलना में बहुत छोटी चिंता है: राइटबैक टाइमआउट यह निर्धारित करता है कि पेजकेस सामग्री के बाद डिस्क सामग्री को कैसे अद्यतन किया जाता है, और 5 सेकंड का डिफ़ॉल्ट कंप्यूटर के लिए एक लंबा समय है। - एक एप्लिकेशन किसी फाइल को पेजचैच में जितनी बार चाहे उतनी बार अधिलेखित कर सकता है, लेकिन डिस्क पर सामग्री केवल 5 सेकंड में एक बार अपडेट की जाती है। जब तक कि एप्लिकेशन इसे fsync के साथ, अर्थात। इस बारे में सोचें कि कोई एप्लिकेशन कितनी बार इस समय में एक छोटी फ़ाइल का उत्पादन कर सकता है, और आप देखते हैं कि हर एक को fsyncing क्यों एक बहुत बड़ी समस्या होगी।

क्या tmpfs आपकी मदद नहीं कर सकते

  • प्रदर्शन पढ़ें। यदि आपका डेटा गर्म है (जो कि बेहतर होगा यदि आप इसे tmpfs में रखने पर विचार करते हैं), तो आप पृष्ठशैली को वैसे भी मारेंगे। अंतर यह है कि जब पृष्ठशंक को नहीं मारना है; अगर ऐसा है, तो नीचे "जहां tmpfs sux" पर जाएं।
  • छोटी जीवित फाइलें। ये कभी लिखे जाने से पहले पेजकेक ( गंदे पन्नों के रूप में ) में अपना पूरा जीवन जी सकते हैं । जब तक आप इसे fsyncपाठ्यक्रम के साथ मजबूर न करें ।

जहां tmpfs sux

कोल्ड डाटा रखना । आपको यह सोचकर ललचाया जा सकता है कि स्वैप से बाहर फाइलें परोसना सामान्य फाइलसिस्टम की तरह ही कुशल है, लेकिन इसके कुछ कारण हैं जो यह नहीं है:

  • सबसे सरल कारण: ऐसा कुछ भी नहीं है जो समकालीन भंडारण उपकरणों (जैसा कि यह हार्डडिस्क या फ्लैश आधारित हो) को उचित फाइल सिस्टम द्वारा बड़े पैमाने पर अनुक्रमिक फ़ाइलों को बड़े करीने से पढ़ने से अधिक प्यार करता है। 4KiB ब्लॉकों में स्वैपिंग से उस पर सुधार होने की संभावना नहीं है।
  • छिपी हुई लागत: स्वैपिंग आउट । Tmpfs पृष्ठ गंदे हैं - उन्हें पृष्ठच्छ से बेदखल होने के लिए कहीं न कहीं (स्वैप करने के लिए) लिखा जाना चाहिए, क्योंकि वे साफ़ किए जा सकने वाले साफ़ सुथरे पन्नों को फ़ाइल करने का विरोध करते हैं। यह बाकी चीजों पर एक अतिरिक्त लेखन दंड है जो स्मृति के लिए प्रतिस्पर्धा करता है - उन tmpfs पृष्ठों के उपयोग की तुलना में एक अलग समय पर कुछ और प्रभावित करता है।

मेरे ubuntu 14.04 / dev / shm में /f / shm का लिंक है, जिसमें कमांड ff के अनुसार फाइलसिस्टम "कोई नहीं" है। आकार लगभग 2 जी है, हालांकि।
जारनो

3
@jarno सबसे पहले, tmpfs माउन्टपॉइंट्स की संख्या को कम करके, मैं एक कार्यान्वयन डिटेल कहूँगा। दूसरे, डिवाइस का नाम आपको भ्रमित न करने दें - देखो in / proc / mounts (यह देखने के लिए सही जगह है), और आप देखेंगे कि टाइप "tmpfs" है जबकि डिवाइस वह है जो "कोई नहीं" यहाँ है। हां, डिवाइस नाम का मतलब tmpfs में कुछ भी नहीं है - mount -t tmpfs "jarno is great" /mnt/jarnoयदि आप चाहें तो आप कर सकते हैं! तीसरा, डिफ़ॉल्ट आकार RAM की आधी राशि है - मुझे यकीन है कि आपके पास 4GiB RAM है।
user2394284

1
क्या कोई विकल्प है जो एक निश्चित RAM आकार आवंटित करता है और कभी स्वैप का उपयोग नहीं करने का वादा करता है?
पाल्सिम २im ’

@ लोकस्वामी: यह एक रामदिस्क होगा। मुझे tmpfs में इसके लिए कोई विकल्प नहीं दिखता है , इसके अलावा tmpfs के पूर्ववर्ती ने स्वैपिंग का समर्थन नहीं किया है। प्रक्रियाएं राम में अपने पृष्ठों को लॉक कर सकती हैं, जो यकीनन राम में लॉक किए गए tmpfs पृष्ठों की तुलना में कम पागल है, यह देखते हुए कि OOM हत्यारा बाद को मुक्त करने में असमर्थ है, क्या आपको मेमोरी से बाहर भागना चाहिए।
user2394284

18

ठीक है, यहाँ वास्तविकता है।

दोनों tmpfs और एक सामान्य फाइल सिस्टम डिस्क पर एक मेमोरी कैश है।

Tmpfs मेमोरी और स्वेपस्पेस का उपयोग करता है क्योंकि यह बैकिंग स्टोर है जो डिस्क के एक विशिष्ट क्षेत्र का उपयोग करता है, न ही उस आकार में सीमित है जो फाइल सिस्टम हो सकता है, मशीन पर 200 जीबी के टैम्पो को एक जीबी से कम रैम के साथ रखना काफी संभव है यदि आपके पास पर्याप्त स्वेपस्पेस है।

अंतर तब होता है जब डेटा डिस्क पर लिखा जाता है। एक tmpfs के लिए डेटा केवल तब लिखा जाता है जब मेमोरी बहुत अधिक हो जाती है या डेटा के जल्द ही उपयोग में नहीं आने की संभावना होती है। OTOH सबसे सामान्य लिनक्स फाइल सिस्टम को हमेशा डिस्क पर डेटा का अधिक या कम लगातार सेट करने के लिए डिज़ाइन किया जाता है, ताकि यदि उपयोगकर्ता प्लग को खींचता है तो वे सब कुछ नहीं खोते हैं।

व्यक्तिगत रूप से, मुझे ऑपरेटिंग सिस्टम रखने की आदत है, जो क्रैश नहीं करता है और यूपीएस सिस्टम (जैसे: लैपटॉप बैटरी) है, इसलिए मुझे लगता है कि ext2 / 3 फाइल सिस्टम अपने 5-10 सेकंड के चेकपॉइंट अंतराल के साथ बहुत अधिक पागल हैं। Ext4 फाइलसिस्टम 10 मिनट के चेकपॉइंट के साथ बेहतर है, सिवाय इसके कि यह उपयोगकर्ता डेटा को द्वितीय श्रेणी के रूप में मानता है और इसकी सुरक्षा नहीं करता है। (ext3 समान है, लेकिन आप 5 सेकंड के चेकपॉइंट के कारण इसे नोटिस नहीं करते हैं)

यह लगातार चेकपॉइंटिंग का मतलब है कि अनावश्यक डेटा को लगातार डिस्क पर लिखा जा रहा है, यहां तक ​​कि / tmp के लिए भी।

तो इसका परिणाम यह है कि आपको स्वैप स्पेस बनाने की आवश्यकता है, क्योंकि आपको अपने / tmp होने की आवश्यकता है (भले ही आपको स्वैप स्वैप बनाना हो) और उस स्थान का उपयोग आवश्यक आकार के tmpfs को / tmp पर माउंट करने के लिए करें।

कभी उपयोग / देव / शम।

जब तक, आप इसे बहुत छोटी (शायद mmap'd) IPC फ़ाइलों के लिए उपयोग कर रहे हैं और आपको यकीन है कि यह मौजूद है (यह मानक नहीं है) और मशीन में पर्याप्त मेमोरी + स्वैप उपलब्ध है।


24
सहमत, निष्कर्ष के अलावा, "कभी उपयोग / देव / शम"। आप उन मामलों में / dev / shm का उपयोग करना चाहते हैं जहाँ आप नहीं चाहते कि डिस्क पर कोई फ़ाइल लिखी जाए, और आप डिस्क i / o को कम से कम करना चाहते हैं। उदाहरण के लिए, मुझे एफ़टीपी सर्वर से बहुत बड़ी ज़िप फाइलें डाउनलोड करने की ज़रूरत है, उन्हें अनज़िप करें, और फिर उन्हें डेटाबेस में आयात करें। मैं unzip / dev / shm करने के लिए ताकि unzip और इंपोर्ट ऑपरेशंस दोनों के लिए HDD को केवल सोर्स और डेस्टिनेशन के बीच आगे-पीछे जाने के बजाय, आधे ऑपरेशन करने की जरूरत पड़े। यह प्रक्रिया को बहुत तेज करता है। यह कई में से एक उदाहरण है, लेकिन मैं मानता हूं कि यह एक आला उपकरण है।
नाथन स्ट्रेच

4

अस्थायी फ़ाइलों के लिए / tmp / का उपयोग करें। का उपयोग करें / dev / shm / जब आप साझा मेमोरी चाहते हैं (यानी, फ़ाइलों के माध्यम से संचार)।

आप / tmp / वहाँ होने पर भरोसा कर सकते हैं, लेकिन / dev / shm / एक अपेक्षाकृत हाल ही में लिनक्स है।


क्या कोई प्रदर्शन पहलू भी नहीं है? जैसा कि / dev / shm को अक्सर tmpfs वॉल्यूम और अनिवार्य रूप से RAM- डिस्क के रूप में माउंट किया जाता है?
हटा दिया गया

आप एक tmpfs फाइलसिस्टम के रूप में माउंट / tmp भी कर सकते हैं, मैं अपने नेटबुक पर कुछ चीजों को गति देने के लिए लिखता हूँ ताकि (धीमा) SSD को कम किया जा सके। ऐसा करने के नुकसान हैं, ज़ाहिर है (मुख्य रूप से रैम का उपयोग होता है, लेकिन मेरी नेटबुक में कहीं अधिक रैम है जो आमतौर पर वैसे भी ज़रूरत है)।
डेविड स्पिललेट

अपने विशिष्ट मामले के लिए मैं इसे एक तरह की प्रक्रिया संचार के लिए उपयोग करूंगा। मैं एक आवेदन से मानक त्रुटि के आउटपुट को कैप्चर करता हूं और सामग्री पर कार्य करता हूं (और मुझे अभी भी मानक आउटपुट से अछूता है, इसलिए कोई भी ऐसा नहीं कर सकता 1>/dev/null 2>&1। मैं इसे कई हजार बार करूंगा ताकि एक tmpfs अच्छा होगा। हालांकि, अगर मैं उस स्क्रिप्ट को रिलीज़ करें जिस पर मैं tmpfs के लिए भरोसा नहीं कर सकता /tmpक्योंकि मुझे लगता है कि यह आम नहीं है। यदि यह /dev/shmतब के लिए अधिक सामान्य है तो मेरे लिए बेहतर है। लेकिन मैं पोर्टेबिलिटी आदि के बारे में दिशानिर्देशों की तलाश कर रहा हूं
हटाए गए

1

एक और समय जब आपको / dev / shm (Linux 2.6 और इसके बाद के संस्करण के लिए) का उपयोग करना चाहिए, जब आपको एक गारंटीकृत tmpfs फ़ाइल सिस्टम की आवश्यकता होती है क्योंकि आप नहीं जानते कि क्या आप डिस्क पर लिख सकते हैं

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


0

/ dev / shm का उपयोग साझा वर्चुअल मेमोरी सिस्टम विशिष्ट डिवाइस ड्राइवर और प्रोग्राम के लिए किया जाता है।

यदि आप एक ऐसा प्रोग्राम बना रहे हैं जिसके लिए वर्चुअल मेमोरी हीप की आवश्यकता होती है जिसे वर्चुअल मेमोरी में मैप किया जाना चाहिए। यह दोगुना हो जाता है यदि आपको उस मेमोरी को सुरक्षित रूप से एक्सेस करने में सक्षम होने के लिए कई प्रक्रियाओं या थ्रेड्स की आवश्यकता होती है।

तथ्य यह है कि सिर्फ इसलिए कि ड्राइवर इसके लिए tmpfs के एक विशेष संस्करण का उपयोग करता है, इसका मतलब यह नहीं है कि आपको इसे एक सामान्य tcpsps विभाजन के रूप में उपयोग करना चाहिए। इसके बजाय, आपको अपनी अस्थायी निर्देशिका के लिए बस एक और tmpfs विभाजन बनाना चाहिए।


0

PERL में, किसी भी मशीन पर 8GB न्यूनतम (सभी चल रहे लिनक्स टकसाल), मुझे लगता है कि मुझे लगता है कि DB_File- आधारित (किसी फ़ाइल में डेटा संरचना) लाखों एल्गोरिदम और देव / / का उपयोग करते हुए लिखते हैं की एक अच्छी आदत है shm

अन्य भाषाओं में, नेटवर्क ट्रांसफर में शुरू होने और रुकने से बचने के लिए, हर जगह टमटम नहीं होने पर (किसी क्लाइंट-सर्वर वातावरण में सर्वर पर स्थित फ़ाइल पर स्थानीय रूप से काम करना), किसी प्रकार की बैच फ़ाइल का उपयोग करके, मैं कॉपी करूँगा संपूर्ण (300-900MB) फ़ाइल एक ही बार में / dev / shm पर, आउटपुट को / dev / shm के साथ चलाएं, परिणाम वापस सर्वर पर लिखें, और / dev / shm से हटाएं

स्वाभाविक रूप से, अगर मेरे पास रैम कम था, तो मैं ऐसा नहीं करूंगा। सामान्यतया, इन-मेमोरी फ़ाइल सिस्टम / dev / shm आपके उपलब्ध रैम के आधे हिस्से के आकार के रूप में पढ़ता है। हालांकि, रैम का साधारण उपयोग निरंतर है। तो आप वास्तव में 2GB या उससे कम वाले डिवाइस पर ऐसा नहीं कर सकते। Paraphrase को hyperbole में बदलने के लिए, RAM में अक्सर ऐसी चीजें होती हैं जो सिस्टम को अच्छी तरह से रिपोर्ट नहीं करती हैं।


(मुझे लगता है कि यह मूल रूप से पूछा गया था की भावना में है।) मैं मूल रूप से क्या मतलब है कि जब तक मेरे पास पर्याप्त मेमोरी है, मैं RAM डिस्क के रूप में / dev / shm का उपयोग करने में सहज हूं। यदि यह किसी भी तरह से करने के लिए अक्षम है, तो आपको ऐसा करने से मना नहीं करना चाहिए, लेकिन "मुझे लिनक्स पर राम डिस्क कैसे हो सकता है" जैसे प्रश्न को ट्रिगर करना चाहिए। उत्तर है / देव / शम
डेविड ग्रोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.