सबसे अच्छा क्या एक यूनिक्स कमांड हो सकता है?


9

एक त्वरित बेंचमार्किंग परीक्षण के लिए, अच्छा और आयनीक्स को अधिकतम प्रभाव के लिए कैसे जोड़ा जा सकता है, यानी कम से कम संसाधन के रूप में उपयोग करने के लिए (बिना पूरी तरह से निष्क्रिय)?

(मुझे लगता है कि यह 'नाइस-एन 19 आयनिस-सी 2 [कमांड] जैसा कुछ है, लेकिन आयनिस के "एन-एन" (क्लासडाटा परम) के बारे में निश्चित नहीं है, मैन पेज इसकी प्रासंगिकता के बारे में गूढ़ है।)


3
प्लस 1 चतुर प्रश्न शीर्षक के लिए, लेकिन यह सामान्य रूप से भी एक अच्छा सवाल है।
छिपकली

जवाबों:


10

पूर्ण आदेश आप चाहते हैं:

chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]

chrtशुरुआत में आदेश बैच शेड्यूलिंग वर्ग है, जो अच्छा मूल्य 0.5 जोड़ने के समकक्ष है चीजों को परिवर्तित कर देगा। आयनिस के लिए -n विकल्प रीयलटाइम ( -c 1) और सर्वश्रेष्ठ-प्रयास ( -c 2) विकल्पों के लिए एक सरल प्राथमिकता है , जिसमें कम मूल्य अच्छे मूल्यों की तरह उच्च प्राथमिकता (लेकिन रेंज 0-4 में) हैं। हालाँकि, आयनिस कमांड सख्ती से आवश्यक नहीं है, क्योंकि I / O शेड्यूलिंग क्लास और प्राथमिकता सीपीयू शेड्यूलिंग मापदंडों से व्युत्पन्न हैं, और nice -n 19इसका तात्पर्य है ionice -c 2 -n 7

हालाँकि, आप CPU और I / O शेड्यूलिंग कक्षाओं को निष्क्रिय करने के लिए पूर्ण न्यूनतम संसाधन उपयोग प्राप्त कर सकते हैं। दोनों मामलों में, 'निष्क्रिय' शेड्यूलर वास्तव में निष्क्रिय शेड्यूलर नहीं हैं, और आप अभी भी संसाधनों का उपयोग करने में सक्षम होंगे, यह सिर्फ इतना है कि सब कुछ उच्च प्राथमिकता होगी।

CPU शेड्यूलिंग क्लास के लिए, यह भी chrtकमांड का उपयोग करता है , बिना आवश्यकता के nice(प्राथमिकता 0शेड्यूलिंग क्लास में प्राथमिकता निर्धारित की जानी चाहिए ), और इस तरह दिखता है:

chrt -i 0 {command or PID}

niceलिनक्स दर्पण SVR4 संस्करण, जिसका अर्थ है कि यह समय निर्धारण वर्ग, केवल अच्छा मूल्य नहीं बदल सकते हैं (जो भी शास्त्रीय यूनिक्स से लिनक्स पर अलग ढंग से व्यवहार करती है, लेकिन यह है कि एक सा OT है) पर आदेश। चूंकि मूल वैकल्पिक शेड्यूलिंग क्लासेस POSIX.1E रियलटाइम थे SCHED_RRऔर SCHED_FIFO, शेड्यूलिंग क्लासेस सेट करने के लिए कमांड को बुलाया जा रहा था chrt-iविकल्प निर्दिष्ट करता है उपयोग करने के लिए SCHED_IDLEसमय-निर्धारण वर्ग

I / O शेड्यूलिंग क्लास के लिए, आप उपयोग करते हैं ionice। सटीक आदेश इस तरह दिखता है:

ionice -c 3 {command or PID}

-cविकल्प निर्दिष्ट करता है उपयोग करने के लिए क्या शेड्यूलिंग वर्ग, और 3 निष्क्रिय वर्ग के लिए संख्या है। ध्यान दें कि I / O शेड्यूलर का उपयोग किस ब्लॉक पर निर्भर करता है, यह वास्तव में कुछ भी प्रभावित नहीं कर सकता है। विशेष रूप से, noopI / O शेड्यूलर प्राथमिकताओं या शेड्यूलिंग कक्षाओं का समर्थन नहीं करता है, और मुझे पूरा यकीन है कि deadlineशेड्यूलर्स (दोनों विरासत एक, और blk-mq एक) भी नहीं करते हैं।

यदि आप इस प्रोग्राम को अपने स्वयं के प्रोग्राम के लिए करना चाहते हैं, या अन्य प्रक्रियाओं के लिए चीजों को समायोजित करना चाहते हैं, तो sched_setschedulerऔर ioprio_setसिस्टम कॉल के लिए मैन पेज देखें (हालाँकि यदि आप अभी और भी पृष्ठभूमि चाहते हैं तो दोनों पढ़ने लायक हैं)।


0

यह मानते हुए कि आप कमांड को पूरी तरह से दूसरों के खत्म होने तक इंतजार नहीं करना चाहते हैं, इसलिए संभावित रूप से संसाधन भुखमरी का शिकार नहीं होना चाहिए, लाइन होगी:

nice -n19 [command]

आयनिक के रूप में आधुनिक लिनक्स कर्नेल पर आनुपातिक रूप से सेट किया जाएगा।

वैसे chrt -b0तो नज़ाकत से कोई लेना-देना नहीं है, लेकिन कितनी बार सीपीयू एक प्रक्रिया से दूसरी प्रक्रिया में कूद जाएगा। यह पंक्ति उस समय को बैच कार्यक्रमों के लिए कैश का बेहतर उपयोग करने के लिए लंबा समय देती है, लेकिन अन्य आदेशों के लिए यह बेकार है। जैसा कि यहां देखा गया है

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