सवाल लिनक्स: सब कुछ स्पष्ट रूप से अनदेखा कैसे करें?


मैंने कुछ लॉन्च किया है जिसमें बहुत सारी मेमोरी ली गई है और अब सबकुछ बहुत खराब है। मुझे लगता है कि मेमोरी-गहन प्रक्रिया के लिए कुछ जगह खाली करने के लिए सभी एप्लिकेशन की मेमोरी स्वैप हो गई है, और अब जब भी एक्सेस किया जाता है तो सबकुछ धीरे-धीरे रैम पर लौट रहा है।

क्या स्वैप वापस रैम से सब कुछ संभवतः स्पष्ट करने का कोई तरीका है? या शायद सबकुछ नहीं, लेकिन कुछ विशेष प्रक्रिया डेटा?


55
2018-02-07 18:24


मूल


मैं सलाह देता हूं कि सामान्य ऑपरेशन को वास्तव में कुछ भी करने के बजाए वास्तव में आवश्यक चीज़ों में स्वैप करने की अनुमति दें। - Douglas Leeder


जवाब:


मैं सामान्य लिनक्स मेमोरी कंट्रोल को उन चीज़ों में स्वैप करने की अनुशंसा करता हूं जो वास्तव में उपयोग किए जाते हैं, जैसा कि उनका उपयोग किया जाता है।

एकमात्र चीज जो मैं सोच सकता हूं वह स्वैप बंद करना है, फिर फिर से

sudo swapoff -a
sudo swapon -a

यह मानता है कि स्वैप में सबकुछ रखने के लिए आपके पास पर्याप्त अतिरिक्त भौतिक स्मृति है ...


55
2018-02-07 18:38



यह बहुत धीरे-धीरे काम करता है :) धन्यवाद! लेकिन फिर भी मुझे विश्वास है कि एक और अधिक सुरुचिपूर्ण समाधान है :) - kolypto
इस समाधान के साथ सावधान, यह सब कुछ जबरन स्वैप से बाहर ले जाएगा ... अगर यह भौतिक स्मृति फिट नहीं है, तो कर्नेल घातक ओओएम हत्यारा शुरू करेगा। मुझे किसी भी अच्छे बारे में पता नहीं है "सबकुछ रैम में ले जाने का प्रयास करें, लेकिन यदि संभव नहीं है तो आसानी से विफल हो जाएं" कमांड। - Juliano
मैंने कोशिश की है और पता चला है कि यह बहुत धीरे-धीरे काम करता है। इसलिए मुफ्त रैम की निगरानी करना और मारना संभव है swapoff अगर स्मृति कम हो जाती है: इस मामले में, स्वैप स्पेस कार्यात्मक रहेगा :) - kolypto
मुझे यकीन नहीं है कि स्वैपऑफ की हत्या वास्तव में ऑपरेशन को रोक देगी। निर्भर करता है कि यह कैसे कार्यान्वित किया गया है। - Douglas Leeder
ऐसा लगता है कि स्वैपऑफ कमांड कुछ ऐसा करता है जैसे "नए लिखने की अनुमति न दें" जबकि कोई अन्य चल रही प्रक्रिया (जो स्वैप का उपयोग कर रही थी) अभी भी "स्वैप रिलीज" कर सकती है। ऐसा इसलिए हो सकता है कि ऐसा लगता है कि यह धीमा हो गया है। ऐसा लगता है कि ओओएम का कारण किसी अन्य व्यक्ति ने नहीं कहा है (मैं उबंटू बायोनिक का उपयोग कर रहा हूं) - शायद यह मामला होगा यदि "अतिरिक्त (या मौजूदा) प्रक्रियाएं नई मेमोरी का उपयोग शुरू करती हैं" (यानी असली ओओएम)। तो सभी स्वैपऑफ / स्वैपॉन में यह एक अच्छा समाधान है। कोमल / स्थिर। यह मानता है कि आप प्रक्रियाओं का उपयोग करके अधिक स्मृति शुरू नहीं करते हैं (या चलने वाले लोगों में खपत बढ़ाएं)। - Roel


आप 0 से 100 के बीच कुछ संख्या को प्रतिबिंबित कर सकते हैं /proc/sys/vm/swappiness

इस नियंत्रण का उपयोग यह परिभाषित करने के लिए किया जाता है कि कर्नेल कितना आक्रामक होगा   मेमोरी पेज उच्च मूल्य आक्रामकता में वृद्धि करेंगे, कम मूल्य   स्वैप की मात्रा कम करें। 0 का मान कर्नेल को निर्देश नहीं देता है   स्वैप शुरू करें जब तक कि मुफ्त और फ़ाइल-समर्थित पृष्ठों की मात्रा कम न हो   एक क्षेत्र में उच्च पानी के निशान की तुलना में।

डिफ़ॉल्ट मान 60 है।


11
2018-02-07 18:31



सीधे / proc / sys का उपयोग न करें, इसका उपयोग करें sysctl इसके बजाय कमांड। इस मामले में, यह है sysctl vm.swappiness=x। - Juliano
मुझे नहीं लगता कि शून्य की एक swappiness भी उन पृष्ठों का कारण बन जाएगा जो पहले ही मुख्य स्मृति में स्पष्ट रूप से लाए जाने के लिए स्वैप किए गए हैं? - Douglas Leeder
@ डगलस सही है। vm.swappiness मुख्य रूप से इस बात को नियंत्रित करेगा कि चीजों को स्वैप करने या स्मृति की मांग होने पर कैश और बफर की मात्रा को कम करने के लिए कदम उठाएं या नहीं। - Juliano
@ जुलिआनो, क्यों / proc / sys का उपयोग नहीं किया जाना चाहिए? - James
@ जेम्स क्योंकि / proc / sys कर्नेल कॉन्फ़िगरेशन को बदलने और क्वेरी करने के लिए उपयोग किए जाने वाले निचले स्तर का इंटरफ़ेस है (यह "कार्यान्वयन विवरण" है)। लिनक्स उच्च स्तर प्रदान करता है sysctl उपयोगकर्ता बातचीत के लिए आदेश। अंतिम परिणाम वही है, लेकिन उपयोगकर्ता के लिए सीधे बातचीत करने के लिए आमतौर पर उच्च स्तरीय इंटरफेस को प्राथमिकता दी जाती है। किंडा केवल कुंजी (उच्च स्तर) को बदलने के बजाय इग्निशन तारों (निचले स्तर) को कम सर्किट करके इंजन शुरू करने की तरह। - Juliano


लिनक्स एक अच्छी नौकरी प्रबंधन स्मृति करता है और आपको इसके रास्ते में खड़ा नहीं होना चाहिए। Vm.swappiness सेटिंग (पहले उल्लेख किया गया) अपने रास्ते में नहीं मिलता है। आप किसी अन्य तरीके से काम करने वाले अजीब मुद्दों का अनुभव करने की अधिक संभावना रखते हैं।

आपने लॉन्च किया क्या इतना भूख लगी थी? क्या इसे ट्यून किया जा सकता है? यदि इसमें अपनी स्मृति सीमा निर्देश नहीं हैं तो आप उलिमिट को भी देख सकते हैं।


5
2018-02-08 03:25



मेरे मामले में यह था convert -density 200 file.pdf jpegs/file.jpg। किसी कारण से यह बहुत सारी मेमोरी का उपयोग करता है, लेकिन आप सही हैं: इसे ट्यून किया जा सकता है। वैसे भी, किसी भी आवेदन के साथ स्थिति संभव है :) - kolypto
मैं इस उत्तर से सहमत हूं - आपको शायद मशीन पर सामान्य संचालन को वास्तव में आवश्यक चीज़ों में बदलने के लिए छोड़ देना चाहिए। - Douglas Leeder
convert है -limit इसकी स्मृति बनाम डिस्क उपयोग को नियंत्रित करने के लिए तर्क, और आपको उन पर पढ़ना चाहिए। सेटिंग -limit memory 512MBया समान अच्छा होगा। यह संभवतः एक स्पष्ट MAGICK_TEMPORARY_PATH निर्दिष्ट करना भी अच्छा होगा और आपके आदेश के बाद इसे साफ़ करें। - slacy


यदि आपके पास अपने सभी एप्लिकेशन के लिए मेमोरी उपलब्ध है, तो स्वैपनेस को 0 पर सेट करना ठीक है, इसलिए चीजें स्वैप नहीं हो जाएंगी। उदाहरण के लिए, क्यूमु-केवीएम एक बड़ा लक्ष्य है जिसे वीएमएम को स्वैप आउट करने के लिए किया जाता है, क्योंकि यह ज्यादातर समय निष्क्रिय होने लगता है। मैंने एक qemu-kvm स्मृति की 80% तक की स्मृति को स्वैप करने के लिए लिखा है। Qemu-kvm में चल रहे वीएम निकट-उत्तरदायी बन जाएंगे क्योंकि वे स्वैप से बाहर हो रहे हैं (हालांकि अतिथि को यह नहीं पता कि यह हो रहा है)। अतिथि वीएम सोचता है कि यह सबसे उत्कृष्ट प्रदर्शन कर रहा है, भले ही सच में यह बहुत से खींच रहा है। जब मैं वीएम का गुच्छा करता हूं "जागता हूं" और चीजों को शुरू करना शुरू करता है, तो यह लोड औसत औसत 30 से अधिक तक बढ़ा सकता है, यहां तक ​​कि पर्याप्त तेज़ मेमोरी और डिस्क के साथ एंटरप्राइज़ ग्रेड हार्डवेयर पर भी। मुझे लगता है कि यह आउट-ऑफ-द-बॉक्स qemu-kvm डिज़ाइन में विफल रहा है।

उम्मीद है कि यह किसी की मदद करता है।


3
2017-07-17 13:33





यदि आप सिस्टम को रीबूट करने में सक्षम हैं जो इसे करना चाहिए (और किसी भी अन्य समाधान की कोशिश करने से बहुत कम समय ले सकता है)।


1
2018-02-07 23:46





से मेरा कुछ जवाब कॉपी करने के लिए यह प्रश्न

ताकि आप जान सकें कि स्वैपनेस ट्यूनेबल कैसे काम करता है। यह पेजों को संसाधित करने के लिए मैप किए गए मेमोरी%% को स्वैप करने के लिए पृष्ठों को देखने के लिए वीएम उपप्रणाली को बताकर काम करता है + स्वैपनेस वैल्यू> 100 है। तो 60 की सेटिंग सिस्टम को प्रक्रिया पृष्ठ तालिका से पुराने पेजों को पेजिंग शुरू करने का कारण बनती है जब यह आपके सिस्टम की स्मृति का 40% से अधिक उपयोग कर रहा है। यदि आप अपने प्रोग्राम को कैश की कीमत पर अधिक मेमोरी का उपयोग करने की अनुमति देना चाहते हैं तो आप स्वैपनेस वैल्यू को कम करना चाहते हैं।


1
2018-02-08 04:23



मुझे नहीं लगता कि प्रोग्राम मेमोरी बनाम कैश यहां मुद्दा है - मुझे लगता है कि यह एप्लिकेशन मेमोरी बनाम अप्रयुक्त स्मृति है। और मुझे नहीं लगता कि स्वभाव उस पर असर डालेगा। - Douglas Leeder


मैं कर्नेल में वीएम सबसिस्टम को बाहर सोचने की कोशिश करने के खिलाफ सलाह दूंगा। यह बेहद असंभव है कि आपके पास वास्तव में बेहतर निर्णय लेने के लिए पर्याप्त जानकारी है। और यदि आप किसी भी तरह गलत काम करने के लिए मजबूर करते हैं, तो आप चीजों को धीमा कर देंगे।


1
2018-02-08 14:18



ऐसे कुछ मामले हैं जहां मैं ओपी चाहता हूं जो करना चाहता हूं। अगर मैं गलती से एक प्रक्रिया चलाने दंगा चलाता हूं और अपना सभी रैम + स्वैप लेता हूं, तो मैं या तो 15 सेकंड प्रतीक्षा कर सकता हूं जब भी मैं इसे स्मृति के लिए एप्लिकेशन को स्विच करने के लिए स्विच करता हूं या बस इसे मजबूर करता हूं और सबकुछ सामान्य रूप से तेज़ी से चलता है। - Alex
वैध उपयोग मामले का स्पष्ट रूप से उल्लेख करने के लिए @Alex +1 हम सभी को हमारे दिमाग में है। - Vortico