स्वैप करते समय लिनक्स पर डेस्कटॉप जवाबदेही बढ़ाएं


15

अब तक मैंने जिन सभी GNU / Linux वितरणों का परीक्षण किया, उनमें यह समस्या है कि जब भी राम भर जाता है और सिस्टम की अदला-बदली शुरू हो जाती है, तो पूरा डेस्कटॉप और चित्रमय उपयोगकर्ता इंटरफ़ेस एक हद तक नरक के रूप में अनुत्तरदायी बन जाता है कि कभी-कभी मुझे लगभग 5-10 सेकंड इंतजार करना पड़ता है जब तक माउस पॉइंटर वास्तव में बढ़ रहा है तब तक भौतिक माउस को स्थानांतरित करना।

यह एक तरह का कष्टप्रद व्यवहार है, खासकर कम रैम वाले सिस्टम पर।

क्या कुछ एप्लिकेशन / नौकरी देने का कोई तरीका है, जैसे डेस्कटॉप वातावरण आदि, अन्य अनुप्रयोगों की तुलना में रैम में रहने के लिए एक उच्च प्राथमिकता है, ताकि वास्तव में सभी मेमोरी को हॉगिंग करने से डेस्कटॉप वातावरण आदि से पहले स्वैप हो जाए?

संपादित करें: मैं उस मामले की बात कर रहा हूं जब पूरी रैम का उपयोग किया जाता है इसलिए यह हमेशा स्वैप करना शुरू कर देगा यदि यह अक्षम नहीं है (मैं नहीं चाहता कि प्रक्रियाओं को बेतरतीब ढंग से मार दिया जाए)। मुझे न केवल कम राम के वातावरण में यह समस्या थी, बल्कि मेरे डेस्कटॉप मशीन पर 8GiB के RAM के साथ, आंशिक रूप से कई वीएम के कारण आंशिक रूप से स्मृति रिसाव के कारण। ZRAM कोई समाधान नहीं है क्योंकि यह केवल समस्या में देरी कर रहा है। इस समस्या के लिए मैं केवल एक ही उपाय सोच सकता हूं वह है कुछ यूजर्स की उपयोगिता या कर्नेल एपीआई जो कुछ नौकरियों की अदला-बदली को रोकने की अनुमति देता है या कम से कम इसे बहुत ही असंभावित बना देता है। क्या कोई अन्य समाधान जानता है या इस तरह के एक उपकरण या एपीआई के बारे में कुछ भी जानता है या अस्तित्व में है?

दूसरा संस्करण: https://aur.archlinux.org/packages/ulatencyd-git/ और https://wiki.archlinux.org/index.php/Unatencydd के अनुसार ulatencyd सिस्टम के नए संस्करणों के साथ काम नहीं करता है। । ऐसा इसलिए हो सकता है क्योंकि अगर मैं इसे सही तरीके से समझ पाता हूं तो सिस्टमस्पेस ने यूजरस्पेस के नजरिए से cgroups का पूरा नियंत्रण ले लिया है।


3
cgroups, यदि आपके पास मेमोरी cgroup सक्षम है, और स्वैप सक्षम ( cgroup_enable=memory swapaccount=1कर्नेल कमांड लाइन पर, यह एक मामूली प्रदर्शन लागत है) ध्यान दें। उदाहरण कार्यान्वयन: ulatencyd
derobert

@derobert बहुत अच्छा लगता है कि यह वही है जो मैं देख रहा था। जैसे ही मेरे पास समय होगा मैं इसके साथ प्रयोग करना शुरू कर दूंगा।
FSMaxB

महान, ulatencyd भी एक AUR पैकेज है, मुझे लगता है कि मैं आर्कलिनक्स उपयोगकर्ता होने के नाते भाग्यशाली हूं।
FSMaxB

यहां तक ​​कि एक विकि लेख भी है wiki.archlinux.org/index.php/Ulatencyd
FSMaxB

अगर मैं वोट कर सकता है तो मैं यह क्यू और अधिक करूँगा! क्या वास्तव में GUI और कुछ प्रमुख कार्यक्रमों को रैम में बने रहने के लिए बताने का कोई सीधा तरीका नहीं है इसलिए यह उत्तरदायी है? मेरा मतलब है, linux उपयोगकर्ताओं को यह विकल्प देने के मामले में बदतर स्थिति क्या है? कंप्यूटर क्रैश? क्या यह पहले नहीं हुआ है? :) मेरा मतलब है कि कभी-कभी, मैं गलती से बहुत सारे वीएम शुरू कर देता हूं क्योंकि मैं सही तरीके से (रैम नंबर) नहीं जोड़ सकता और फिर चीजों को नियंत्रण में लाने के लिए इसे आगे ले जाता हूं। RAM में रहने के लिए GUI और शायद टर्मिनल बताना उस अधिकार को ठीक करेगा ?! कृपया, कोई इसका उत्तर दे!
डेमोन

जवाबों:


1

जहां तक ​​मुझे पता है कि यह लिनक्स के लिए विशिष्ट मुद्दा नहीं है, तो इसका तरीका यह है कि SWAP (या वर्चुअल मेमोरी) काम करता है। यदि RAM के विपरीत OS को हार्ड ड्राइव में डेटा देखना है, तो यह धीमा हो जाएगा। आप इसके बारे में कुछ नहीं कर सकते, रैम तक पहुंचने की तुलना में डिस्क तक पहुंचना धीमा है।

आप उन प्राथमिकताओं को सेट नहीं कर पाएंगे जिनके साथ प्रक्रियाएँ बदली गई हैं, यह कर्नेल द्वारा निर्धारित किया गया है जो दक्षता को अधिकतम करने का प्रयास करेगा, आप इसे बेहतर नहीं कर पाएंगे। आप जो कर सकते हैं वह एक प्रक्रिया की सीपीयू प्राथमिकता निर्धारित करता है और इससे मदद मिल सकती है। आपका सिस्टम कम हो रहा है क्योंकि इसे पढ़ने के लिए / SWAP से समय लगता है, इसका मतलब यह है कि सीपीयू को संबंधित डेटा को फिर से जारी करने की प्रक्रिया के द्वारा इसे जारी रखने का अनुरोध करने के लिए इंतजार करना होगा। यदि आप अपने DE को CPU एक्सेस के लिए उच्च प्राथमिकता रखते हैं, तो इसके संचालन को ऊपर की ओर धकेलना चाहिए और चीजों को थोड़ा गति देना चाहिए।

इसलिए, सीपीयू प्राथमिकता के साथ सेट है niceऔर reniceकमांड:

 Renice alters the scheduling priority of one or more running processes.
 The following who parameters are interpreted as process ID's, process
 group ID's, or user names.  Renice'ing a process group causes all pro‐
 cesses in the process group to have their scheduling priority altered.
 Renice'ing a user causes all processes owned by the user to have their
 scheduling priority altered.  By default, the processes to be affected
 are specified by their process ID's.

प्राथमिकताएं -20 (उच्चतम प्राथमिकता) से 20 (सबसे कम प्राथमिकता) तक जाती हैं। चल रही प्रक्रिया की प्राथमिकता बदलने के लिए, आप कर सकते हैं:

renice -15 $PID

उस प्रक्रिया $PIDका PID कहाँ है जिसकी प्राथमिकता आप बढ़ाना चाहते हैं। आप यह pgrepपता लगाने के लिए उपयोग कर सकते हैं कि कौन सा है। उदाहरण के लिए:

renice -15 $(pgrep gnome-session)

दूसरा विकल्प सिस्टम के 'स्वेपशन' को सेट करना होगा जो निर्धारित करता है कि यह कब स्वैप करना शुरू करेगा। 1 के स्वैग्‍पेंसी मान का अर्थ है कि मेमोरी त्रुटियों से बचने के लिए केवल स्वैप करना होगा। उच्चतर मानों का अर्थ है कि भौतिक स्मृति उपलब्ध होने पर भी यह स्वैप करना शुरू कर देगा। आप अपने सिस्टम को यथासंभव कम स्वैप करने के लिए इसे अपेक्षाकृत कम मूल्य पर सेट कर सकते हैं। इस पंक्ति को इसमें जोड़ें /etc/sysctl.conf:

vm.swappiness=1

कारफूल: यह एक अच्छा विचार नहीं है यदि आपके पास बहुत अधिक रैम नहीं है, तो स्वैप आम तौर पर एक अच्छी बात है, आपको अपने सिस्टम के लिए सही संतुलन खोजने के लिए मूल्यों के साथ थोड़ा खेलना होगा।


जैसा कि आप कहते हैं कि इसे कर्नेल स्थान में हल किया जा सकता है, जिसका अर्थ है कि यह बहुत अच्छी तरह से विशिष्ट होगा। स्वैग बदलने से कुछ भी नहीं बदलेगा क्योंकि जब पूरे रैम का उपयोग किया जाता है तो सिस्टम वैसे भी स्वैप कर रहा है। और इस प्रक्रिया की प्राथमिकता को स्मृति प्रबंधन के बारे में कुछ भी नहीं बदलेगा, लेकिन केवल सीपीयू अनुसूचक और सीपीयू समय का व्यवहार डिस्क एक्सेस को तेज करने के लिए वास्तव में सहायक नहीं है।
FSMaxB

@FSMaxB सीपीयू प्राथमिकता मदद कर सकती है क्योंकि यह डीई को प्राथमिकता देगा, यह मदद नहीं करेगा यदि डीई स्वयं स्वैप कर रहा है लेकिन यह कुछ और होगा जो सीपीयू को पकड़ रहा है और इसलिए मशीन को धीमा कर रहा है।
टेराडन

जब डीई कुछ समय के लिए निष्क्रिय हो जाता है, तो मेरे अनुभव में डीई हमेशा स्वैप हो जाता है जब स्मृति बाहर निकलती है।
FSMaxB

@FSMaxB हाँ, यह समझ में आता है क्योंकि DE स्मृति हॉग हैं। फिर भी, इसकी प्राथमिकता बढ़ाने से मदद मिल सकती है, कम से कम अनुसूचक इसे वापस नहीं रखेगा।
टेराडन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.