किसी दिए गए प्रक्रिया के लिए संसाधन उपयोग को कैसे सीमित करें?


11

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

तो मैं सोच रहा था कि क्या किसी दिए गए प्रक्रिया के लिए IO उपयोग, RAM और CPU को सीमित करने का कोई तरीका है? और निश्चित रूप से इसकी उप-प्रक्रियाएं।

यह मेरे Ubuntu 18.04 LTS सिस्टम पर है।


2
@GreatUncleBulgaria वास्तव में नहीं, जब तक आप प्रतिष्ठा बिंदुओं के साथ भाग नहीं लेना चाहते। जो आप पूछते हैं उसका सरल उत्तर है कि दूसरों ने जो सुझाव दिया है ionice, उसे बस संयोजित करें renice- और - और शायद यह ulimit -sआदेश।
सर्गी कोलोडाज़नी

@GreatUncleBulgaria से परिचित नहीं है, cgroups-ioइसलिए इसका कोई पता नहीं है :)
Sergiy Kolodyazhnyy

संभावित रूप से संबंधित प्रश्न: askubuntu.com/q/538992/295286 वहाँ के जवाब cgroups का उल्लेख करते हैं, लेकिन बहुत अधिक नहीं, इसलिए। । । शायद ?
सर्गी कोलोडियाज़नी

1
@SergiyKolodyazhnyy: लगता है जैसे किसी ने टिप्पणी को साफ कर दिया!

जवाबों:


8

आपको सभी के संयोजन का उपयोग करना चाहिए cgexec, cpulimitऔर ionice:

  1. RAM और SWAP को सीमित करें:

    sudo cgcreate -g memory:/szMyGroup
    echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes
    echo $(( 1024 * 1024 * 1024 ))  | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes
    

    उपरोक्त आदेश एक नियंत्रण समूह बनाते हैं जिसका नाम szMyGroup(जैसे आपके मामले में group-great-uncle) है, szMyGroup512 MB भौतिक मेमोरी तक और 1024 MB स्वैप तक चलने वाली प्रक्रियाओं के लिए एक कैप सेट करें और फिर:

    sudo cgexec -g memory:szMyGroup szMyProgram

    जो szMyGroupनियंत्रण कार्यक्रम के तहत आपके कार्यक्रम को चलाएगा , इस प्रकार वे सीमाओं का पालन करना सुनिश्चित करेंगे

  2. डिस्क IO को सीमित करें:

    sudo ionice --class 3 --pid $(pgrep -f szMyProgram)

    उपरोक्त कमांड वर्तमान डिस्क -लाइन के पुन: उपयोग भागों केpgrep साथ इसका डिस्क उपयोग केवल डिस्क का उपयोग करने के लिए सीमित करता है जब कोई अन्य प्रोग्राम इसका उपयोग नहीं कर रहा है

  3. सीपीयू को सीमित करें:

    sudo cpulimit --limit=25 --pid=!#:4

    कार्यक्रम का सीपीयू अब अधिकतम 25% तक सीमित है

यदि प्रोग्राम बहुत से CPU का उपयोग शुरू करने के लिए नहीं करता है, तो cpulimit का मान आधा या उससे कम है जो वर्तमान में उपयोग करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.