কেন আমি কোনও প্রক্রিয়াটির ভাল মান বাড়ানোর জন্য রিনিস ব্যবহার করতে পারি না?


25

থেকে man renice:

সুপার-ব্যবহারকারী ব্যতীত অন্য ব্যবহারকারীরা কেবল তাদের মালিকানাধীন প্রক্রিয়াগুলির অগ্রাধিকার পরিবর্তন করতে পারেন এবং কেবল প্রাইও_ম্যাক্স (২০) এর মধ্যে 0 range রেঞ্জের মধ্যে তাদের `` সুন্দর মান '' (সুরক্ষার কারণে) একঘেয়েভাবে বাড়িয়ে দিতে পারেন [...]

সুতরাং, আমি reniceআমার নিজস্ব প্রক্রিয়াগুলি উপরের দিকে করতে পারি (তাদের নিম্ন অগ্রাধিকার দিন) তবে কখনই নীচের দিকে না:

$ renice 10 22316
22316 (process ID) old priority 0, new priority 10
$ renice 9 22316
renice: failed to set priority for 22316 (process ID): Permission denied

কেন? আমি বুঝতে পারি যে সাধারণ ব্যবহারকারীরা কেন 0 এর চেয়ে কম সুন্দর মান নির্ধারণ করতে পারে না, তবে যেহেতু আমি অগ্রাধিকারটি 10-তে হ্রাস করতে পারি কেন আমি আবার এটিকে 9 এ বাড়িয়ে দিতে পারি না? এর জন্য কী "সুরক্ষার কারণ" আছে? আমার 9 টির একটি ভাল মান সহ একটি প্রক্রিয়া চালু করার অধিকার আছে, তবে কেন আমি এটি 9 এ পুনরায় ভাড়া দিতে পারি না?


সম্পাদনা: আমার নিচে স্ক্রোল করা শিখতে হবে। দেখা যাচ্ছে এটি একটি বাগ হিসাবে তালিকাভুক্ত করা হয়েছে man renice:

BUGS
     Non super-users can not increase scheduling priorities of their own
     processes, even if they were the ones that decreased the priorities 
     in the first place.

এটি আরও বিভ্রান্তিকর। তারা যদি এই আচরণটিকে বাগ হিসাবে বিবেচনা করে তবে কেন এটি পরিবর্তন করবেন না? reniceকমান্ড 4.0BSD যা আমি মনে করি 1980 থেকে এটি খুবই সহজ হওয়া উচিত একদিকে তারা সেখান থেকে বের করার জন্য চয়ন করেছেন বলে মনে হচ্ছে তাই ঠিক করতে এবং অন্যান্য তারা একটি বাগ যেমন তালিকা দেখা যায়।


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

উত্তর:


19

যেহেতু লিনাক্স 2.6.12, এটি RLIMIT_NICE সীমা ( ulimit -e) এর মানের উপর নির্ভর করে । যা 0 থেকে 40 পর্যন্ত মান নিতে পারে That প্রক্রিয়াটির অগ্রাধিকারের সীমাটি সীমাবদ্ধতার চেয়ে বেশি (যে সংখ্যাটি বৃহত্তর, কোনও প্রক্রিয়াটির জন্য ব্যবহারকারী তত বেশি অগ্রাধিকার নির্ধারণ করতে পারে)।

উদাহরণস্বরূপ আপনি লক্ষ্য করতে পারেন যে উবুন্টু 10.04 এ ডিফল্ট মান 20 এবং উদাহরণস্বরূপ দেবিয়ান জেসিতে 0 হবে।

nএই সীমাটির একটি মানটির অর্থ হ'ল সিএপি_এনআইএস সামর্থ্য ব্যতীত একটি প্রক্রিয়া কেবলমাত্র একটি প্রক্রিয়া অগ্রাধিকার পর্যন্ত বাড়িয়ে তুলতে পারে n, যার অর্থ হ'ল এক বিশেষত্বের নীচে কমে যাওয়া কমে যায় 20 - n। 0 এর মানটির জন্য, এর অর্থ কোনও অ-সুবিধাবঞ্চিত ব্যবহারকারী 20 বছরের নীচে কমনীয়তা কমিয়ে আনতে পারে না, তাই কোনও অ-সুবিধাবঞ্চিত ব্যবহারকারী কুলুঙ্গিটি হ্রাস করতে পারে না।

20 এর মান সহ, অ-সুবিধাবঞ্চিত ব্যবহারকারীরা 0 0 এ ফিরে আসতে পারেন।

তারা ব্যবহারকারীদের তাদের প্রক্রিয়া অগ্রাধিকার হ্রাস করতে দেয় কিনা এবং এটির জন্য কঠোর সীমাটি নির্ধারণ করে কোন স্তরে তা চয়ন করা প্রশাসকের উপর নির্ভর করে।

কোনও প্রশাসক কেন ব্যবহারকারীদের তাদের প্রক্রিয়া অগ্রাধিকারটি কম করতে চান না সে সম্পর্কে, ফ্লুপের উত্তর দেখুন


1
আহ! সুতরাং এটি কনফিগারযোগ্য! ঠিক আছে, এটি আরও অর্থবোধ করে, ধন্যবাদ।
টেরডন

"০ থেকে ৪০ পর্যন্ত মান। [...] আপনি লক্ষ্য করবেন যে উদাহরণস্বরূপ ডেবিয়ান জেসিতে উবুন্টু 10.04 এ ডিফল্ট মান 20 এবং" 0। -> আকর্ষণীয়, হার্ড / নরম উলামিটগুলি ডেবিয়ান জেসিতে আসলে 0। আমি 20 পর্যন্ত বাড়াতে পারি তবে এর বাইরে আমি "বাশ: উলিমিট: সময়সূচী অগ্রাধিকার: সীমা পরিবর্তন করতে পারি না: অবৈধ যুক্তি", নেতিবাচক মানগুলিও গৃহীত হয় না।
থোমেন্সকি

20

এটি নীতিগত কারণগুলির জন্যই আমি কল করব । ধারণাটি হ'ল সাধারণ ব্যবহারকারীরা সুবিধাভোগী ব্যবহারকারীদের ক্রিয়াকে ওভাররাইড করতে পারবেন না।

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


1
আমি এটি বুঝতে পারি তবে এটি এখনও অদ্ভুত বলে মনে হচ্ছে। আসলে, আমি কেবল বুঝতে পেরেছি যে এটি এমনকি বাগ হিসাবে তালিকাভুক্ত man renice
টেরডন

3
আমি মনে করি বাগটির মূল বক্তব্যটি হ'ল 'অ-সুপার-ব্যবহারকারীরা তাদের নিজস্ব প্রক্রিয়াগুলির পূর্বনির্ধারিত অগ্রাধিকারগুলি বাড়িয়ে তুলতে পারে না, এমনকি যদি তারা প্রথম স্থানে থাকা অগ্রাধিকারগুলি হ্রাস করে '। অর্থাত্ এটি এই প্রয়োগের একটি পার্শ্ব প্রতিক্রিয়া যা কোনও reniceবিশেষাধিকার প্রাপ্ত ব্যবহারকারী ব্যতীত দুর্ঘটনাক্রমে প্রতিক্রিয়া ফিরিয়ে দেওয়া যায় না।
ফ্লপ করুন

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

1
@IwillnotexistIdonotexist অনেক ব্যবহারকারী সহ সিস্টেমগুলি সম্পর্কে ভাবেন। সিসাদমিন আপনার প্রসেসের অগ্রাধিকারটি 5-এ উন্নীত করতে এবং আমার থেকে 10 টি কমিয়ে দিতে চায় That's এটি এখনও সাধারণ ব্যবহারকারীর সীমার মধ্যে রয়েছে তবে আমি এটি পরিবর্তন করতে এবং আপনার প্রাপ্য সিপিইউ চুরি করতে সক্ষম হব না। ফ্লুপ যেমন ব্যাখ্যা করেছে তেমনি ধারণা idea যাইহোক, স্টিফেনচাজেলাস যেমন ব্যাখ্যা করেছেন , এটি কনফিগারযোগ্য তাই এটি সিসাদমিনের উপর নির্ভর করে তারা কী পছন্দ করেন তা চয়ন করুন।
টেরডন

1
"কেন?" এর উত্তরটি সম্ভবত "সম্ভবত এটির কারণেই কোডটি লেখার পক্ষে কারও পক্ষে এটির প্রয়োজনের প্রয়োজন ছিল না” "সম্ভবত ইউনিক্সটি যখন লেখা হয়েছিল, তখন প্রক্রিয়াটির অগ্রাধিকার কে নির্ধারণ করে তা ট্র্যাকিংয়ের ক্ষেত্রে ব্যয়বহুল হতে পারে tra মেমোরির ব্যবহার এবং এটি আপডেট করার জন্য কাজ করুন, তবে আধুনিক মেশিনগুলিতে, এটি নগন্য নয়, কেবলমাত্র "ব্যবহারকারী
সিসাদমিনকে

-1

অদ্ভুত? এটা আমার জন্য কাজ করে

Linux clafujiu 2.6.32-57-generic #119-Ubuntu \
 SMP Wed Feb 19 01:04:55 UTC 2014 i686 GNU/Linux

উদাহরণ

$ renice 8 --pid 21122
21122: old priority 9, new priority 8
christian@clafujiu:~/tmp$ ps eo "%p %n"
  PID  NI
 4190   0
 8594   0
14684   0
21122   8
21146   0
21155   0
21209   0
christian@clafujiu:~/tmp$ renice 15 --pid 21122
21122: old priority 8, new priority 15
christian@clafujiu:~/tmp$ ps eo "%p %n"
  PID  NI
 4190   0
 8594   0
14684   0
21122  15
21146   0
21155   0
21211   0
christian@clafujiu:~/tmp$ renice 10 --pid 21122
21122: old priority 15, new priority 10
christian@clafujiu:~/tmp$ ps eo "%p %n"
  PID  NI
 4190   0
 8594   0
14684   0
21122  10
21146   0
21155   0
21213   0

২ য় সম্পাদনা

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"

কনফিগার পরিবর্তন

/etc/security/limits.conf

@audio          -       rtprio          100
@audio          -       nice            -10

এবং আমি অডিও গ্রুপের সদস্য, এটি রেকর্ডিংয়ের সময় জ্যাক / আর্ডার এবং বাফার এক্সরুনগুলির সাথে বিলম্ব কমিয়ে আনা হয়েছিল।

renice

$ renice --version
renice from util-linux-ng 2.17.2

আপনি কোন ডিস্ট্রোতে আছেন? এটি
এআইএক্স

cat /etc/lsb*এবং এর renice --versionপাশাপাশি আউটপুট পোস্ট করুন ।
টেরডন

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