শীর্ষ আউটপুটে সুন্দর মান এবং অগ্রাধিকারের মধ্যে পার্থক্য


11

শীর্ষে , ডিফল্টরূপে, উভয় কলামের তালিকা করে। পার্থক্য কী তা নিয়ে আমি আগ্রহী। আমি ম্যান পেজগুলি পরীক্ষা করে দেখেছি এবং এটি বের করতে পারি না:

অগ্রাধিকার:

   h: PR  --  Priority
      The priority of the task.

সুন্দর মান:

   i: NI  --  Nice value
      The nice value of the task.  A negative nice value means higher  priority,
      whereas  a  positive  nice value means lower priority.  Zero in this field
      simply means priority will not be adjusted in determining  a  task’s  dis-
      patchability.

আমি বুঝতে পেরেছিলাম যে নিস মানটি কার্নেলের সিপিইউ শিডিয়ুলার সারির সাথে সম্পর্কিত; তাহলে অগ্রাধিকার কী নির্দেশ করে? আমি / হে সম্পর্কিত কিছু সম্ভবত?

উত্তর:


8

সুন্দর মানটি একটি "গ্লোবাল" প্রক্রিয়া, যেখানে অগ্রাধিকার এখনই টাস্ক সুইচারের জন্য প্রাসঙ্গিক ।


টাস্ক সুইচার বলতে কী বোঝ?
বেলমিন ফার্নান্দেজ

1
টাস্ক স্যুইচার (সঠিকভাবে "শিডিয়ুলার" নামে পরিচিত) হ'ল কার্নেলের মধ্যে কিছুটা কোড যা সিদ্ধান্ত নিয়েছে যে পরবর্তী কোন টাস্কটি চলবে।
Ignacio Vazquez-Abram

25

পার্থক্যটি হ'ল পিআর হ'ল কার্নেলের অভ্যন্তরে কোনও প্রক্রিয়াটির আসল অগ্রাধিকার এবং এনআই কার্নেলের জন্য প্রক্রিয়াটির অগ্রাধিকারটি কী হওয়া উচিত তা কেবল তার ইঙ্গিত।

বেশিরভাগ ক্ষেত্রে 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 পিএস

অদ্ভুতভাবে যথেষ্ট, যদি আমি একটি 2 টি হাইপারথ্রেড আই 3-তে 5 অসীম লুপগুলি (ইন্ট মেইন - যখন (1);}) চালাই তবে তাদের অগ্রাধিকারগুলি স্থির থাকে। এটি ডিবিয়ান সিড পরীক্ষায়।
ভোরাক

1
@ বেলমিন ফার্নান্দেজ আমার মনে হয় এই উত্তরটিকে "স্বীকৃত" করা ভাল হবে।
z0lupka

1

সংক্ষিপ্ত উত্তর

জনসংযোগ অগ্রাধিকার স্তর। পিআর যত কম হবে, তত বেশি প্রক্রিয়াটির অগ্রাধিকার হবে।

পিআর নিম্নলিখিত হিসাবে গণনা করা হয়:

  • সাধারণ প্রক্রিয়াগুলির জন্য: পিআর = 20 - এনআই (এনআই সুন্দর এবং -20 থেকে 19 অবধি)
  • রিয়েল টাইম প্রক্রিয়াগুলির জন্য: PR = - 1 - রিয়েল_টাইম_প্রিয়রিটি (রিয়েল_টাইম_প্রাইরিটি 1 থেকে 99 এর মধ্যে)

দীর্ঘ উত্তর

প্রসেস এর 2 ধরনের, আছে স্বাভাবিক বেশী এবং রিয়েল টাইমে স্বাভাবিক বেশী জন্য (এবং শুধুমাত্র তাদের জন্য), চমৎকার নিম্নরূপ প্রয়োগ করা হয়:

নিস

"বিশিষ্টতা" স্কেল -20 থেকে 19 পর্যন্ত চলে যায়, যেখানে -20 এটি সর্বোচ্চ অগ্রাধিকার এবং 19 সর্বনিম্ন অগ্রাধিকার হয়। অগ্রাধিকার স্তরটি নিম্নলিখিত হিসাবে গণনা করা হয়:

PR = 20 + NI

যেখানে এনআই হ'ল চমৎকার স্তর এবং জনসংযোগ অগ্রাধিকার স্তর। সুতরাং আমরা যেমন দেখতে পাচ্ছি, -20 আসলে মানচিত্র 0, যখন 19 মানচিত্র 39।

ডিফল্টরূপে, একটি প্রোগ্রামের ভাল মান 0 বিট হয় একটি রুট ব্যবহারকারীর দ্বারা নিম্নলিখিত কমান্ডটি ব্যবহার করে একটি নির্দিষ্ট সুন্দর মান সহ মধ্যাহ্নভোজন প্রোগ্রামগুলি সম্ভব:

nice -n <nice_value> ./myProgram 

প্রকৃত সময়

আমরা আরও এগিয়ে যেতে পারে। চমৎকার অগ্রাধিকারটি আসলে ব্যবহারকারী প্রোগ্রামগুলির জন্য ব্যবহৃত হয়। যেখানে ইউনিক্স / লিনাক্স সামগ্রিক অগ্রাধিকারের 140 টির মান রয়েছে, সেখানে দুর্দান্ত মান প্রক্রিয়াটিকে পরিসরের শেষ অংশে মানচিত্র তৈরি করতে সক্ষম করে (100 থেকে 139)। এই সমীকরণটি 0 থেকে 99 টি অবধি অ্যাক্সেসযোগ্য মানগুলিকে ছেড়ে দেয় যা একটি নেতিবাচক পিআর স্তরের সাথে মিলিত হবে (-100 থেকে -1 পর্যন্ত)। এই মানগুলিতে অ্যাক্সেস করতে সক্ষম হতে, প্রক্রিয়াটিকে "রিয়েল টাইম" হিসাবে বর্ণনা করা উচিত।

একটি লিনাক্স পরিবেশে 5 টি শিডিয়ুলিং নীতি রয়েছে যা নিম্নলিখিত কমান্ডের সাহায্যে প্রদর্শিত হতে পারে:

chrt -m 

যা নিম্নলিখিত তালিকা প্রদর্শন করবে:

1. SCHED_OTHER   the standard round-robin time-sharing policy
2. SCHED_BATCH   for "batch" style execution of processes
3. SCHED_IDLE    for running very low priority background jobs.
4. SCHED_FIFO    a first-in, first-out policy
5. SCHED_RR      a round-robin policy

সময়সূচী প্রক্রিয়াগুলিকে 2 টি গ্রুপে ভাগ করা যায়, সাধারণ শিডিয়ুলিং নীতিগুলি (1 থেকে 3) এবং আসল সময় নির্ধারণের নীতিগুলি (4 এবং 5)। রিয়েল টাইম প্রসেসগুলির সর্বদা স্বাভাবিক প্রক্রিয়াগুলির চেয়ে অগ্রাধিকার থাকবে। নিম্নলিখিত কমান্ডটি ব্যবহার করে একটি রিয়েল টাইম প্রক্রিয়া বলা যেতে পারে (উদাহরণস্বরূপ কীভাবে একটি এসসিএইচআইআরআর নীতি ঘোষণা করতে হয়):

chrt --rr <priority between 1-99> ./myProgram

একটি বাস্তব সময় প্রক্রিয়া জন্য PR মান পেতে নিম্নলিখিত সমীকরণ প্রয়োগ করা হয়:

PR = -1 - rt_prior

যেখানে rt_prior 1 এবং 99 এর মধ্যে অগ্রাধিকারের সাথে সামঞ্জস্য করে that সেই কারণে অন্যান্য প্রক্রিয়াগুলির তুলনায় যে প্রক্রিয়াটি সর্বোচ্চ অগ্রাধিকার পাবে সেটি 99 নম্বর সহ কল ​​করা হবে।

এটি গুরুত্বপূর্ণ যে রিয়েল টাইম প্রক্রিয়াগুলির জন্য, দুর্দান্ত মান ব্যবহৃত হয় না।

একটি প্রক্রিয়াটির বর্তমান "কমনীয়তা" এবং PR মান দেখতে নিম্নলিখিত কমান্ডটি কার্যকর করা যেতে পারে:

top

এটি লক্ষ করা ভাল যে উদাহরণস্বরূপ PR মান -51 সহ প্রক্রিয়াগুলি একটি বাস্তব সময়ের মানের সাথে মিলে যায়। এছাড়াও কিছু প্রক্রিয়া রয়েছে যার PR মান "আরটি" হিসাবে বর্ণিত হয়েছে। এই মানটি আসলে -100 এর PR মানের সাথে মিলে যায়।

(পিএস: আমি শীর্ষে ফলাফল দেখিয়ে একটি ছবি পোস্ট করতাম তবে তা করার মতো খ্যাতি আমার নেই)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.