बहुत कम प्राथमिकता में लिनक्स प्रक्रिया चलाएं?


12

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

मैं के साथ चल रहा करने की कोशिश की nice -20 ./low_priority_processऔर nice --20 ./high_priority_processलेकिन अभी भी कम प्राथमिकता सीपीयू की महत्वपूर्ण राशि जब उच्च प्राथमिकता प्रक्रिया जरूरत है, मैं कैसे एक प्रक्रिया है कि वास्तव में निकलेगा या यहां तक कि ऑटो को निलंबित जब किसी अन्य प्रक्रिया CPU शक्ति का उपयोग कर चला सकते हैं की खपत


आप यह कैसे निर्धारित कर रहे हैं कि उच्च प्राथमिकता प्रक्रिया वास्तव में जरूरत है?
मूरू

यह बहुत सारे थ्रेड्स को
फैलाएगा

RRउच्च प्राथमिकता प्रक्रिया के लिए समय-निर्धारण का उपयोग करें ।
रमेश

@ रमेश इससे क्या फर्क पड़ेगा?
केन शार्प

जवाबों:


10

Cgroups पर एक नज़र डालें , यह आपको वही प्रदान करना चाहिए जो आपको चाहिए - CPU आरक्षण (और अधिक)। मैं सुझाव देता हूं कि cgroups का उपयोग करके अनुप्रयोगों की प्राथमिकता को नियंत्रित करें

कहा कि, महत्वपूर्ण रूप से अक्सर निष्क्रिय प्रक्रियाओं को सीपीयू के 95% और आपके अन्य अनुप्रयोगों को आवंटित 5% के साथ समूह में डाल दें - जब जरूरत हो तब अपनी नौकरी के लिए आपको (लगभग) सारी शक्ति प्राप्त होगी, जबकि लगातार बिजली की भूखी प्रक्रिया उन समय पर केवल 5% प्राप्त करेगी। जब कम्प्यूटेशनल सर्ज गायब हो जाते हैं तो सभी सीपीयू प्रदर्शन को शेष प्रक्रियाओं पर फेंक दिया जाएगा। लाभ के रूप में, यदि आप इस तरह की प्रक्रियाओं के लिए एक विशेष cgroup (न्यूनतम प्रदर्शन आवश्यकताओं के साथ) बनाते हैं, तो आप किसी sshdभी मामले में लॉग इन करने में सक्षम होंगे जो सभी सीपीयू को प्राप्त करने की कोशिश कर रहा है - कुछ सीपीयू समय के लिए आरक्षित होगा sshd


1
क्या कोई आदेश जैसा है cpulimitया niceप्रक्रिया के cgroup को संशोधित करना है? क्योंकि अगर मैं cgroup एक एपीआई कॉल है, तो मैं स्थिति में हूँ कि cgroup का उपयोग करने के लिए उन एप्लिकेशन के किसी भी recompile नहीं कर सकते हैं
19:14 पर uray

नहीं, आप बस कहीं-कहीं cgroup पदानुक्रम को माउंट करते हैं, प्रति-समूह निर्देशिका बनाते हैं और कुछ फाइलों में PID की प्रक्रिया लिखते हैं। यह सब रूट के रूप में किया जाना चाहिए (या, उचित विशेषाधिकारों के साथ अधिक सटीक)। कुछ init सिस्टम (अर्थात् systemd, कम से कम कुछ मामलों में) उन उपयोगकर्ताओं से cgroups इंटरफ़ेस "चोरी" करते हैं जिन्हें init सिस्टम इंटरफ़ेस (आमतौर पर एक विशेष कमांड) का उपयोग करना पड़ता है। जुड़ा हुआ जवाब और विकिपीडिया लेख पढ़ें। वास्तव में। :)
पीटर सिप

ओह, और libcgroupपैकेज भी है, जो डेमॉन ( cgrulesengd) सहित cgroups के साथ काम करने के लिए उपयोगिताओं के साथ आता है जो वास्तव में कुछ स्थितियों के आधार पर समूहों में प्रक्रियाओं को सॉर्ट कर सकते हैं।
19

7

यदि प्रक्रिया प्राथमिकता (अच्छा मूल्य) कम है, तो यह एक उच्च प्राथमिकता प्रक्रिया को बाधित नहीं करेगा। क्योंकि उच्च प्राथमिकता प्रक्रिया नहीं है कारण है कि आप कम प्राथमिकता प्रक्रिया को देख रहे हैं अभी भी सीपीयू का एक महत्वपूर्ण राशि लेने जब उच्च प्राथमिकता प्रक्रिया चल रहा है है कि व्यस्त। शायद IO पर इंतज़ार कर रहा हूँ। chrt -p -i 0 $PIDप्रक्रिया को उससे भी कम प्राथमिकता पर चलाने के लिए उपयोग करें nice 19 -p $PID(यह मानते हुए कि हम यहां लिनक्स के बारे में बात कर रहे हैं)।

chrt -p -i 0 $PID प्रक्रिया को "सत्य" निष्क्रिय शेड्यूलर में डालता है।

http://linux.die.net/man/1/chrt


2
chrt -p -i 0 $ PID
रॉबर्ट फॉस

chrt अभी भी पर्याप्त नहीं है। मैं जो करने की कोशिश कर रहा हूं वह पृष्ठभूमि में अन्य वीडियो को फिर से देखने के दौरान वीडियो देखने के लिए है। Youtube वीडियो के साथ chrt का उपयोग करने में मदद मिली लेकिन बहुत उच्च गुणवत्ता वाले mkvs अभी भी छोड़ते हैं। जो मैंने चाहा वह है कि मैं अपने वीडियो को सामान्य रूप से प्लेबैक करूं, लेकिन रेकोडिंग के लिए बची हुई प्रत्येक सीपीयू शक्ति का उपयोग करें क्योंकि मेरे पास करने के लिए बहुत बड़ा बैच है।
सोगर

0

एक प्रक्रिया को कम प्रक्रिया के रूप में चलाने के लिए इस उदाहरण का प्रयास करें।

यदि आप कर रहे हैं काम अच्छा है टार xvf asets.zip

उपयोग

अच्छा राल xvf आस्तियों। ज़िप

उसके बाद, जारी करें

प्रक्रिया के साथ मॉनिटर करने के लिए शीर्ष

ps aux | grep "टार"

Cpulimit के साथ कुछ विशिष्ट करने का प्रयास करें

wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin

cpulimit -l 50 अजगर 0 9999999999> / dev / null &


हाँ -20"कम प्राथमिकता" है और --20"उच्च प्राथमिकता" है, जो niceकमांड के लिए दोहरे डैश को देखता है । और हाँ मैं पूरी तरह से अच्छे मूल्य के बारे में समझ रहा हूँ, लेकिन मेरा सवाल यह है कि क्या अनुसूचक को अच्छी कीमत का उपयोग करने के अलावा कोई और तरीका बताने का तरीका है
uray

2
@ user77710 क्या आप निश्चित हैं? इस सिंटैक्स को न तो उबंटू मैनपेज और न ही पॉसिक्स मैनपेज निर्दिष्ट करता है। दोनों का उपयोग करते हैं -n -20, -n 20आदि
muru

हाँ जो कुछ भी, वाक्य रचना महत्वपूर्ण नहीं, मेरी बात दोनों प्रक्रियाओं के लिए बहुत कम की settng अच्छा मूल्य और बहुत अधिक मैं क्या चाहता था का परिणाम नहीं देता है
Uray

2
@ user77710 क्या है? "सिंटैक्स महत्वपूर्ण नहीं है"? आप यह कैसे सुनिश्चित कर सकते हैं कि आप अच्छाई मान सेट कर रहे हैं?
मुरु

क्योंकि मैं पर प्रक्रिया अच्छा मूल्य देख सकते हैं htopया topया psया जो कुछ भी
Uray

-1

भविष्य के कामर्स के लिए, यहां तनाव के niceसाथ एक पूर्ण उदाहरण है

  1. टेस्ट मशीन में 2 सीपीयू होते हैं
$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2 
On-line CPU(s) list: 0,1
Thread(s) per core:  2
...
  1. स्थापित करें stress:apt-get install stress
  2. तनाव के लिए कम प्राथमिकता वाले कॉल के साथ 2 सीपीयू को व्यस्त बनाएं: nice -20 stress --cpu 2
  3. इसके साथ CPU उपयोग की जाँच करें top:
                                                 v
                                                 v
                                                 v
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                   
15894 ubuntu    39  19    8240     96      0 R  99.7  0.0   0:06.43 stress                                                                                    
15895 ubuntu    39  19    8240     96      0 R  99.7  0.0   0:06.42 stress                                                                                    

इससे पता चलता है कि दोनों सीपीयू पूरी तरह से कब्जे में हैं।

  1. उच्च प्राथमिकता के साथ एकल-सीपीयू तनाव प्रक्रिया शुरू करें: nice --20 stress --cpu 1
  2. के साथ फिर से सीपीयू उपयोग की जाँच करें top
                                                 v
                                                 v
                                                 v
                                                 v
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                   
15928 ubuntu    20   0    8240    100      0 R  99.7  0.0   0:24.02 stress                                                                                    
15894 ubuntu    39  19    8240     96      0 R  51.2  0.0   1:12.46 stress                                                                                    
15895 ubuntu    39  19    8240     96      0 R  48.8  0.0   1:12.35 stress                                                                                    

इससे पता चलता है कि एकल-कोर तनाव प्रक्रिया को इसका पूरा सीपीयू मिलता है, जबकि निचली प्राथमिकता वाली प्रक्रियाएं शेष 1 सीपीयू को साझा करती हैं

  1. दूसरी ओर, उपरोक्त सभी stressकॉलों को मारना और केवल 3-प्रक्रिया stress --cpu 3को ट्रिगर करने से प्रत्येक को 66% सीपीयू मिलेगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.