প্রক্রিয়া 'অভিনবত্ব' বনাম 'অগ্রাধিকার'


104

চলমান অবস্থায় top, আমি এটি (সংক্ষিপ্ত) উদাহরণ আউটপুট দেখতে পাচ্ছি:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 4586 ipc-adm+  20   0 1303900 605152  92844 S  30,6 29,3   3:52.88 firefox
 3985 ipc-adm+  20   0  258588 124508  63072 S  12,2  6,0   0:40.04 compiz
 3092 root      20   0  172392  56164  25980 S   6,1  2,7   0:30.13 Xorg

এখানে দুটি মান রয়েছে যা সম্পর্কে আমি আগ্রহী: PR(অগ্রাধিকার) এবং NI(বিশুদ্ধতা)।

আমি যদি ইতিমধ্যে সঠিকভাবে জানতে পেরেছি তা বুঝতে পেরেছি তবে উভয়ই নির্ধারণ করে যে কোনও প্রক্রিয়া অন্যান্য প্রক্রিয়াগুলির বিপরীতে কতটা সিপিইউ সময় পাবে। কিন্তু তখন সেই মূল্যবোধগুলির মধ্যে পার্থক্য কী?

আপনি কীভাবে কোনও প্রক্রিয়াটির সেই মানগুলি কীভাবে পরিচালনা করবেন এবং কোন পরিস্থিতিতে এটি দরকারী হতে পারে তা বর্ণনা করতে পারেন?

উত্তর:


103

চমৎকার মানটি একটি ব্যবহারকারী-স্থান এবং অগ্রাধিকার পিআর হ'ল লিনাক্স কার্নেল দ্বারা ব্যবহৃত প্রক্রিয়াটির আসল অগ্রাধিকার। লিনাক্স সিস্টেমে অগ্রাধিকারগুলি 0 থেকে 139 হয় যেখানে আসল সময়ের জন্য 0 থেকে 99 এবং ব্যবহারকারীদের জন্য 100 থেকে 139 থাকে। সুন্দর মানের পরিসীমা -20 থেকে +19 যেখানে -20 সর্বোচ্চ, 0 ডিফল্ট এবং +19 সর্বনিম্ন। সুন্দর মান এবং অগ্রাধিকার মধ্যে সম্পর্ক হল:

PR = 20 + NI

সুতরাং, মান PR = 20 + (-20 to +19)0 থেকে 39 যা 100 থেকে 139 এর মানচিত্র করে।

শীর্ষ ম্যানুয়াল অনুসারে:

PR - অগ্রাধিকার টাস্কের নির্ধারিত অগ্রাধিকার। আপনি যদি এই ক্ষেত্রে 'আরটি' দেখেন তবে এর অর্থ এটি 'রিয়েল টাইম' সময় নির্ধারণের অগ্রাধিকারের অধীনে কাজটি চলছে।

এনআই কাজের ভাল মূল্য।

এনআই - চমৎকার মান কার্যটির দুর্দান্ত মান value একটি নেতিবাচক সুন্দর মান মানে উচ্চতর অগ্রাধিকার, অন্যদিকে ইতিবাচক সুন্দর মানটির অর্থ নিম্ন অগ্রাধিকার this এই ক্ষেত্রে শূন্যের অর্থ কেবল কোনও কাজের প্রেরণ ক্ষমতা নির্ধারণের ক্ষেত্রে অগ্রাধিকারটি সামঞ্জস্য করা হবে না

সম্পাদনা: ডিফল্টরূপে যখন একটি প্রোগ্রাম লিনাক্সে চালু হয়, তখন এটি '0' এর অগ্রাধিকার দিয়ে চালু হয়। তবে আপনি নিম্নলিখিত প্রোগ্রামগুলির মাধ্যমে আপনার প্রোগ্রামগুলির অগ্রাধিকার পরিবর্তন করতে পারেন।

  1. আপনি আপনার প্রয়োজনীয় অগ্রাধিকার ব্যবহার করে একটি প্রোগ্রাম চালু করতে পারেন

    nice -n nice_value program_name
    
  2. আপনি ইতিমধ্যে ব্যবহার করে চলমান প্রক্রিয়াটির অগ্রাধিকারও পরিবর্তন করতে পারেন

    renice -n nice_value -p process_id
    

1
আপনি কি বলছেন, এগুলি বিপরীতে প্রায় একই জিনিস (উভয়ই অগ্রাধিকারের প্রতিনিধিত্ব করে) তবে nicenessএকটি negativeণাত্মক অগ্রাধিকার দেওয়ার জন্য BUT ব্যবহার করা যেতে পারে যাতে nicenessউচ্চতর অগ্রাধিকারের কাজগুলি ছাড়াই সেই কাজটি শেষ হয়ে যায়? (অর্থাত্ এটি হচ্ছে niceএবং অন্যান্য অ্যাক্সেস সংস্থাগুলি দেওয়া হচ্ছে ? বা এটি কি আমাকে বিভ্রান্ত করেছে?
মার্ক

1
আমি যা বলতে চাইছি তার একটি উদাহরণ, দুটি কাজ, উভয়ই pr20 টির সমান, টাস্ক একের ni0 এর একটি এবং টাস্ক 2 এর একটিতে ni20 এর একটি থাকে , সুতরাং, এর অর্থ এই হবে যে টাস্ক দুটি একটি কাজের জন্য সংস্থান ছেড়ে দেবে কারণ এটি হ'লnicer
মার্ক কির্বি

1
আমি জানি, অগ্রাধিকার PR = 20 + NI হিসাবে গণনা করা হয়। সুতরাং এক অগ্রাধিকার = 20 +0 কাজ। সুন্দর ইচ্ছার সর্বাধিক মান +19
pl_rock

3
PR = 20 + NI সর্বাধিক মান 39 হতে পারে। লিনাক্স সিস্টেমে ১৩৯ টি অগ্রাধিকার রয়েছে যেখানে 0 থেকে 99 টি রিয়েল টাইম অগ্রাধিকার এবং ব্যবহারকারীর জন্য 100 থেকে 139 রয়েছে। সুতরাং, 100 থেকে 139 টি অগ্রাধিকার হিসাবে NI মান -20 থেকে +19 মানচিত্রের। যে আপনি সামঞ্জস্য করতে পারেন। তবে তবুও কার্নেল নিশ্চিত নয় যে আপনি যদি এনআই মান পরিবর্তন করেন তবে এটি অগ্রাধিকারটি পরিবর্তন করবে, এনআই মান কার্নেলের কাছে একটি সঠিক পরামর্শ। কার্নেল কিছু সময় এটিকে উপেক্ষা করুন
pl_rock

1
সুতরাং পিআর এবং এনআই কি সমতুল্য, যেমন তারা কেবল একটি আলাদা অফসেট পেয়েছে? কেন আমাদের তখন উভয় মান আছে? এবং আপনি যে প্রক্রিয়াটির বৈশিষ্ট্যটি নির্ধারণ করতে পারেন <0 এর মূল অধিকার প্রয়োজন।
বাইট কমান্ডার

26

অগ্রাধিকার কী এবং আমার কেন যত্ন নেওয়া উচিত?

প্রক্রিয়াগুলির বিষয়ে কথা বলার সময় অগ্রাধিকার হ'ল প্রসেসরের সময় পরিচালনা করা। প্রসেসর বা সিপিইউ হ'ল একই সাথে একাধিক কাজ মানব জাগ্রত করার মতো। কখনও কখনও আমাদের একাধিক প্রকল্প গ্রহণ করার জন্য পর্যাপ্ত জায়গা থাকতে পারে। কখনও কখনও আমরা একবারে কেবল একটি জিনিসে মনোযোগ দিতে পারি। অন্য সময়ে গুরুত্বপূর্ণ কিছু পপ আপ হয় এবং ব্যাক বার্নারে কম গুরুত্বপূর্ণ কাজগুলি রাখার সময় আমরা আমাদের সমস্ত শক্তি সেই সমস্যাটি সমাধান করার জন্য উত্সর্গ করতে চাই।

লিনাক্সে আমরা সিপিইউ অনুসরণ করার জন্য নির্দেশিকা নির্ধারণ করতে পারি যখন এটি করা সমস্ত কাজ দেখছে। এই নির্দেশিকা niceness বা সুন্দর মান বলা হয়। লিনাক্স niceness স্কেল -20 থেকে 19 হয়। কাজ যত বেশি অগ্রাধিকার পায় সংখ্যা কম। যদি কমনীয়তার মান 19 এর মতো উচ্চ সংখ্যা হয় তবে টাস্কটি সর্বনিম্ন অগ্রাধিকারে সেট করা হবে এবং সিপিইউ যখনই সুযোগ পাবে এটি প্রক্রিয়া করবে। ডিফল্ট সুন্দর মান শূন্য।

এই স্কেলটি ব্যবহার করে আমরা আমাদের সিপিইউ সংস্থানগুলি আরও যথাযথভাবে বরাদ্দ করতে পারি। নিম্ন অগ্রাধিকারের প্রোগ্রামগুলি যেগুলি গুরুত্বপূর্ণ নয় সেগুলি একটি উচ্চতর মান হিসাবে সেট করা যেতে পারে, যখন ডেমন এবং পরিষেবাদির মতো উচ্চ অগ্রাধিকারের প্রোগ্রামগুলি সিপিইউর আরও বেশি ফোকাস গ্রহণের জন্য সেট করা যেতে পারে। এমনকি আপনি কোনও নির্দিষ্ট ব্যবহারকারীর তার সমস্ত প্রসেসের জন্য একটি কম সুন্দর মান দিতে পারেন যাতে আপনি কম্পিউটারের মূল পরিষেবাগুলিকে ধীর করার ক্ষমতা সীমাবদ্ধ করতে পারেন।

উৎস

niceযেমন নতুন প্রক্রিয়াগুলির জন্য অগ্রাধিকার সেট করুন eg

nice -n 10 firefox

বিদ্যমান প্রক্রিয়া জন্য

renice 10 -p $(pgrep firefox)

<0আপনার প্রয়োজন অগ্রাধিকার সেট করতে sudo, যেমন:

renice -1 -p $(pgrep firefox)
renice: failed to set priority for 2769 (process ID): Permission denied

তবে অগ্রাধিকারের জন্য নয় >=0


উদাহরণ

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          19   0

% renice 10 -p 2769     # note, we don't need sudo here
2769 (process ID) old priority 0, new priority 10

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox           9  10

% sudo renice -19 -p 2769                    
 2769 (process ID) old priority 10, new priority -19

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          38 -19

অন্য উদাহরণ

একটি নির্দিষ্ট ব্যবহারকারীর জন্য সমস্ত চলমান প্রক্রিয়া পুনরায় ব্যবহার করতে

renice 20 -u user_name

আপনার উদাহরণস্বরূপ, renice 10এছাড়াও sudo, ডান ছাড়া কাজ করবে ? এবং আপনি দয়া করে একটি নির্দিষ্ট ব্যবহারকারীর সমস্ত প্রক্রিয়া আরও সুন্দর করে তুলতে একটি উদাহরণ যুক্ত করতে পারেন? একই সময়ে অন্য কেউ লগইন হয়ে থাকলে এবং কিছু অপ্রয়োজনীয় কিন্তু সম্পদ খাওয়ার প্রক্রিয়া চলতে থাকলে এটি প্রকৃতপক্ষে কার্যকর হবে (ফায়ারফক্সে বিরতিযুক্ত ফ্ল্যাশ-গেমের মতো ছোট ভাইরা এ জাতীয় জিনিসগুলি করে ...: - /)
বাইট কমান্ডার

@ বাইটকম্যান্ডার সম্পন্ন হয়েছে =)
এবি

আমি কীভাবে কিছুক্ষণ পরে সেই ব্যবহারকারীর পুরানো কুলুঙ্গি মান পুনরুদ্ধার করব? এটি আবার 0 এ সেট করছেন? এটি বিবেচনায় নেবে না যে কিছু প্রক্রিয়াগুলির আগে আলাদা আলাদা বৈশিষ্ট্য থাকতে পারে। এটি করার কোনও সাধারণ সম্ভাবনা আছে কি?
বাইট কমান্ডার

@ বাইটকম্যান্ডার না, এটি সহজ নয়। হয় আপনি ব্যবহার করুন 0বা ... সমস্যা আছে;)
এবি

2
রেনিস -১৯ এর পরে, ফলাফলটি ps: PRI: 38, NI: -19তবে, topএটির সাথে PR:1, NI -19কেন এটি হয় ?
জাগ্রত

14

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

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

পিআর নীচে হিসাবে গণনা করা হয়:

  • সাধারণ প্রক্রিয়াগুলির জন্য: PR = 20 + NI (এনআই সুন্দর এবং -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 এবং NI মানগুলি প্রদর্শিত হয়। পিআর মান -51 যা প্রকৃত সময়ের মানের সাথে মিলে যায় সেই প্রক্রিয়াটি নোট করা ভাল। এছাড়াও কিছু প্রক্রিয়া রয়েছে যার PR মান "rt" হিসাবে বর্ণিত হয়েছে। এই মানটি আসলে -100 এর PR মানের সাথে মিলে যায়।

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