পার্থক্যটি হ'ল পিআর হ'ল কার্নেলের অভ্যন্তরে কোনও প্রক্রিয়াটির আসল অগ্রাধিকার এবং এনআই কার্নেলের জন্য প্রক্রিয়াটির অগ্রাধিকারটি কী হওয়া উচিত তা কেবল তার ইঙ্গিত।
বেশিরভাগ ক্ষেত্রে PR সূত্রটি নিম্নলিখিত সূত্র দ্বারা গণনা করা যায়: PR = 20 + NI । সুতরাং বিশিষ্টতা 3 সহ প্রক্রিয়াটির অগ্রাধিকার 23 (20 + 3) এবং স্নাতক -7 সহ প্রক্রিয়াটির অগ্রাধিকার 13 (20 - 7) রয়েছে। কমান্ড চালিয়ে আপনি প্রথমটি পরীক্ষা করতে পারেন nice -n 3 top
। এটি প্রদর্শিত হবে যে শীর্ষ প্রক্রিয়াতে এনআই 3 এবং পিআর 23 রয়েছে । তবে nice -n -7 top
বেশিরভাগ লিনাক্স সিস্টেমে চলার জন্য আপনাকে রুট সুবিধাগুলি থাকা দরকার কারণ প্রকৃতপক্ষে নিম্ন পিআর মান হ'ল প্রকৃত অগ্রাধিকার। সুতরাং পিআর 13 সহ প্রক্রিয়াটি মান অগ্রাধিকার পিআর 20 সহ প্রসেসের চেয়ে বেশি অগ্রাধিকার পাবে। এজন্য আপনাকে রুট হওয়া দরকার। তবে নন-রুট প্রক্রিয়াটির জন্য অনুমোদিত ন্যূনতমতম niceness মানটি /etc/security/limits.conf এ কনফিগার করা যায় ।
তাত্ত্বিকভাবে কার্নেল নিজে থেকে PR মান (তবে এনআই নয় ) পরিবর্তন করতে পারে। উদাহরণস্বরূপ এটি কোনও প্রক্রিয়াটির অগ্রাধিকার হ্রাস করতে পারে যদি এটি খুব বেশি সিপিইউ গ্রহণ করে, বা যদি উচ্চতর অগ্রাধিকার প্রক্রিয়াগুলির কারণে সেই প্রক্রিয়াটি দীর্ঘ সময়ের জন্য চালানোর সুযোগ না পায় তবে কোনও প্রক্রিয়াটির অগ্রাধিকার বাড়তে পারে। এই ক্ষেত্রে PR এর মান কার্নেল দ্বারা পরিবর্তিত হবে এবং NI একই থাকবে, সুতরাং "PR = 20 + NI" সূত্রটি সঠিক হবে না। সুতরাং এনআই মানটি কার্নেলের জন্য প্রক্রিয়াটির অগ্রাধিকারটি হওয়া উচিত বলে ইঙ্গিত হিসাবে ব্যাখ্যা করা যেতে পারে, তবে কার্নেল পরিস্থিতির উপর নির্ভর করে প্রকৃত অগ্রাধিকার ( PR মান) বেছে নিতে পারে । তবে সাধারণত সূত্র"PR = 20 + NI" সঠিক।
সুনির্দিষ্ট নিয়মগুলি কীভাবে কার্নেলের পরিবর্তনকে অগ্রাধিকার দেয় তা পরিষ্কার নয়। সেটপ্রেরিটি (ফাংশন যা দুর্দান্ত মান পরিবর্তন করে) ম্যানুয়ালটি বলে:
প্রসেস-সিডিউলিং অ্যালগরিদমের কার্যকারিতা অনুসারে সুন্দর মান পরিবর্তনের প্রভাব পৃথক হতে পারে।
পাথ্রেড ম্যানুয়ালটি নিম্নলিখিত বলে:
গতিশীল অগ্রাধিকারটি দুর্দান্ত মান (দুর্দান্ত (2), সেটপ্রাইরিটি (2), বা সময়সূচী_সেটেটর (2) দ্বারা সেট করা হয় এবং প্রতিটি সময় কোয়ান্টাম থ্রেড চালানোর জন্য প্রস্তুত থাকে, তবে শিডিয়ুলার দ্বারা চালিত হতে অস্বীকার করা হয়।
দেখে মনে হচ্ছে পিআর মান গতিশীল অগ্রাধিকারের সাথে মিলে যায়।
NI মানের পরিসীমা -20..19 । সুতরাং পিআর মান 0 (20 - 20) থেকে 39 (20 + 19) পর্যন্ত মান থাকতে পারে । তবে এটি কেবলমাত্র ডিফল্ট শিডিয়ুলিং নীতি ( SHED_OTHER ) সহ প্রক্রিয়াগুলির জন্য সঠিক । তথাকথিত "রিয়েল টাইম" সময় নির্ধারণের নীতিগুলি সহ প্রক্রিয়াগুলিও থাকতে পারে । এই নীতিগুলি হ'ল SCHED_RR এবং SCHED_FIFO । এই ধরনের প্রক্রিয়া একটি আছে জনসংযোগ মান কম 0. চেয়ে চলমান এই পরীক্ষা করতে পারবেন chrt -r 1 top
কমান্ড (রুট থাকার প্রয়োজনীয়তা)। শীর্ষ প্রক্রিয়া থাকবে জনসংযোগ -2 । আপনি এমনকি শীর্ষেchrt -r 90 top
যে ক্ষেত্রে চালাতে পারেনপ্রক্রিয়া PR -91 থাকবে ।
দেখে মনে হচ্ছে SCHED_RR প্রক্রিয়াগুলির জন্য PR মান সূত্র দ্বারা গণনা করা যেতে পারে:
PR = - 1 - তফসিল_আর_প্রিয়রিটি ।
সুতরাং একটি এসসিএইচইআরআর প্রক্রিয়া কমপক্ষে পিআর -1 থাকে যার অর্থ যে কোনও এসসিএইচইআরআরআর প্রক্রিয়াটি কোনও এসসিএইচইএইচডিএর চেয়ে বেশি অগ্রাধিকার পায় । এটি পাইথ্রেড ম্যানুয়ালটির সাথে মিলে যায়:
SCHED_FIFO কেবলমাত্র 0 এর চেয়ে বেশি স্থিতিশীল অগ্রাধিকারের সাথে ব্যবহার করা যেতে পারে যার অর্থ যখন কোনও SCHED_FIFO থ্রেড রানযোগ্য হয়ে যায়, তখন এটি সর্বদা চলমান SCHED_OTHER, SCHED_BATCH, বা SCHED_IDLE থ্রেডটি তত্ক্ষণাত্ প্রিমিট করবে।
SCHED_RR হ'ল SCHED_FIFO এর একটি সাধারণ বর্ধন। SCHED_FIFO এর জন্য উপরে বর্ণিত সমস্ত কিছুই SCHED_RR এ প্রযোজ্য,
রিয়েল টাইম প্রক্রিয়াগুলির অগ্রাধিকারটিকে স্থির অগ্রাধিকার হিসাবে উল্লেখ করা হয় যা কার্নেল দ্বারা পরিবর্তন করা যায় না। তাই ইতিবাচক জনসংযোগ মান অ রিয়েলটাইম (জন্য গতিশীল অগ্রাধিকার হিসেবে গ্রহণ করা যেতে পারে SCHED_OTHER , SCHED_BATCH ) প্রক্রিয়া এবং নেতিবাচক জনসংযোগ রিয়েলটাইম প্রসেসের জন্য স্ট্যাটিক অগ্রাধিকার (যেমন মান SCHED_RR , SCHED_FIFO )।
আমিও nice -n 10 chrt -r 50 top
(এবং chrt -r 50 nice -n 10 top
) চালানোর চেষ্টা করেছি । এন আই মান 10 ছিল, কিন্তু জনসংযোগ এখনও ছিল -51 । সুতরাং দেখে মনে হচ্ছে NI মান SCHED_RR প্রক্রিয়াগুলির অগ্রাধিকারকে প্রভাবিত করে না । এটি নির্ধারিত ম্যানুয়ালটির সাথে মিলে যায়:
SCHED_FIFO বা SCHED_RR ব্যবহার করে যে কোনও প্রক্রিয়া বা থ্রেড সেটপ্রাইরিটি () এর কল দ্বারা প্রভাবিত হবে না। এটি ত্রুটি হিসাবে বিবেচিত হয় না। এমন একটি প্রক্রিয়া যা পরবর্তী সময়ে এসসিএইচইএইচ অন্যটিতে প্রত্যাবর্তন করে তার অগ্রাধিকার যেমন সেটপ্রেরিটি () কল দ্বারা প্রভাবিত হয় না।
একটি মজার নোট। আপনি যদি চালান chrt -r 99 top
, আপনি পিআর কলামে একটি সংখ্যার পরিবর্তে আরটি মান দেখতে পাবেন ।
পিআইডি ব্যবহারকারী পিআর এনআই ভাইরাট আরএস এসআর এস% সিপিইউ% মেমি সময় + কম্যান্ড
28489 মূল আরটি 0 2852 1200 896 আর 0 0.1 0: 00.01 শীর্ষ
আমি মনে করি না যে এর অর্থ এই প্রক্রিয়াটি এখন বিশেষ। আমি মনে করেন যে এর অর্থ এই যে উপরের শুধু প্রিন্ট না -100 কারণ এটি 4 চরিত্র নিতে প্রিন্ট করতে হবে।
এছাড়াও আপনি ব্যবহার করতে পারেন htop পরিবর্তে শীর্ষ সব উদাহরণ যা আরও বেশি সুবিধাজনক হতে পারে না। ps -l
এছাড়াও ব্যবহার করা যেতে পারে, তবে এটি মূল বিন্দু যা রিয়েলটাইম এবং অ-রিয়েলটাইম অগ্রাধিকারগুলি 0 থেকে নয়, 60 নয়, তাই nice -n -20 ps -l
মুদ্রণ করবে
এফএস ইউআইডি পিআইডি পিপিআইডি সি পিআরআই এনআই এডিডিআর এসজেড ডাব্লুএইচএন টিটিআই সময় সিএমডি
4 আর 0 28983 28804 0 60 -20 - 1176 - পিটিএস / 6 00:00:00 পিএস