সিপিইউ তাপমাত্রা নিয়ন্ত্রণ করতে কেবল একটি প্রক্রিয়া ধীর করুন


9
  1. আমার একটা প্রোগ্রাম আছে যখন এটি চলছে, সিপিইউ তাপমাত্রা 50 থেকে 80 সেলসিয়াস থেকে বেড়েছে, যা আমার বড় উদ্বেগ।

    আমি সিপিইউ ফ্রিকোয়েন্সিটি এটি ধীর করতে নিয়ন্ত্রণ করতে পারি, তবে অন্যান্য প্রক্রিয়াগুলিও ধীর হয়ে যাবে যা আমি চাই না।

    সিপিইউ ঠান্ডা রাখার জন্য অন্যান্য প্রক্রিয়াগুলিকে প্রভাবিত না করে কোনও নির্দিষ্ট প্রক্রিয়াটি ধীর করা সম্ভব?

    আমার ওএস হ'ল উবুন্টু 10.10।

  2. আমি প্রক্রিয়াটির অগ্রাধিকারটি সেট করার চেষ্টা করেছি nice -n 15 myprogram, এবং নিশ্চিত না যে এটি কাজ করবে কিনা। সিপিইউ 77 সেলসিয়াস উচ্চ।

    না niceশুধুমাত্র অন্যান্য প্রসেস wrt একটি প্রক্রিয়া আপেক্ষিক অগ্রাধিকার সেট? অর্থাত্, যদি অন্য প্রক্রিয়াগুলি চলমান না থাকে তবে এই নিস প্রক্রিয়াটি কি দ্রুত চলবে? আমি প্রক্রিয়াটি সব ধীরে ধীরে চলতে সেট করতে চাই।


1
এই প্রক্রিয়াটি কী করে: ভারী ইনপুট / আউটপুট? মূল সিপিইউতে ভারী গণনা? জিপিইউতে ভারী গণনা (ভিডিও কার্ড) (সাধারণত তবে চিত্রগুলির গণনা করা প্রোগ্রামগুলিতে সীমাবদ্ধ থাকে না)?
গিলস 'অশুভ হওয়া বন্ধ করুন'

প্রোগ্রামটি পিডিএফ 2 ডিজেভু, পিডিএফ ফাইলকে ডিজেভিতে রূপান্তর করে। এটি ভারী আইও বা ভারী সিপিইউ বা ভারী জিপিইউ? আপনার কি বিভিন্ন মামলার বিভিন্ন উপায় আছে?
টিম

4
80º খুব উচ্চ। আমি স্পেনের একটি গরম জায়গায় বাস করি এবং আমার প্রসেসরের সর্বোচ্চ তাপমাত্রা ~ 60º º কম্পিউটারটি খুলুন, সমস্ত টুকরো পরিষ্কার করুন এবং কুলারগুলি পরিবর্তন করুন। আমি মনে করি আপনার সিপিইউ ব্যবহার নয়।
রুফো এল মাগুফো

উভয়ই করার চেষ্টা করুন।
stribika

80 ° আসলে উচ্চ কিন্তু সিপিইউ মডেলের উপর নির্ভর করে চরম বিবেচিত হয় না। বেশিরভাগ সিপিইউ ইস্যু ছাড়াই 90 ডিগ্রি সেলসিয়াস অবধি সমর্থন করে
কিউই

উত্তর:


16

আপনার প্রয়োজন ঠিক সিপিইউলিমিট। আপনি প্রোগ্রামটি শুরু করেন, তারপরে প্রোগ্রামের নাম বা পিআইডি এর বিপরীতে সিপুলিমিট চালান, আপনি কোন শতাংশটিকে সীমাবদ্ধ রাখতে চান তা উল্লেখ করে।

নিম্নলিখিত কমান্ডটি পিআইডি 7777 এ প্রক্রিয়াটি 5% সিপিইউ ব্যবহারের মধ্যে সীমাবদ্ধ করে।

cpulimit -p 7777 -l 5

বিকল্পভাবে, আপনি এক্সিকিউটেবলের নাম ব্যবহার করতে পারেন:

cpulimit -e myprogram -l 5

বা এক্সিকিউটেবলের পরম পথ:

cpulimit -P /path/to/myprogram -l 5

শতাংশটি সমস্ত কোরের নোট করুন; সুতরাং আপনার যদি 4 টি কোর থাকে তবে আপনি 400% ব্যবহার করতে পারেন।


1
ধন্যবাদ! (1) সিপিইউলিমিট কি কেবল ইতিমধ্যে চালিত প্রক্রিয়াটির জন্য ব্যবহৃত হয়? চালানোর জন্য কোনও প্রোগ্রাম জমা দেওয়ার সময় ব্যবহার হয় না? (২) এটি কোনও প্রক্রিয়া দ্বারা সিপিইউ ব্যবহারের শতাংশ নির্ধারণ করে, বা প্রক্রিয়াটির জন্য উপরের সীমাটি নির্ধারণ করে এবং অন্যান্য প্রক্রিয়া অনুসারে এর ব্যবহারকে 0 এবং সেই সীমাটির মধ্যে ওঠানামা করতে দেয়? (3) আমি আরও জানতে পেরেছিলাম যে কোনও প্রক্রিয়াতে সিপুলিউমিট ব্যবহার করার পরে, রানিং বাতিল করার জন্য Ctrl + C এর কোনও উপায় নেই, কারণ শীঘ্রই এটি স্বয়ংক্রিয়ভাবে চালানোর জন্য ফিরে আসবে। ভাবছি কেন?
টিম

2
সিপিইউলিমিট সম্পর্কে একটি সামান্য সতর্কতামূলক: এটি কোনও প্রক্রিয়া দ্বারা ব্যবহৃত সিপিইউ সময়ের পরিমাণ সীমাবদ্ধ করতে SIGSTOP / SIGCONT ব্যবহার করে (লক্ষ্যমাত্রার সিপিইউ ব্যবহারের ছাড়িয়ে যাওয়া প্রক্রিয়াগুলি বন্ধ হয়ে যায়; যখন পর্যাপ্ত সময় পার হয়ে যায়, তখন প্রক্রিয়াটি একটি সাইনকন্ট প্রেরণ করা হয় এবং পুনরায় কার্যকর করা শুরু করে)। তবে, এমন বিরল ঘটনা রয়েছে যেখানে সিগন্যালগুলি সিস্টেম কলগুলিতে হস্তক্ষেপ করতে পারে, বিশদের জন্য জিএনইউ সি লাইব্রেরি ম্যানুয়ালটি দেখুন। যেহেতু সিপুলিউমিট এই সংকেতগুলিকে সেকেন্ডে বহুবার পাঠায়, তাই বাধা দেওয়ার যথেষ্ট সম্ভাবনা রয়েছে। কোনও ডেস্কটপে পিডিফটক চালানোর জন্য বড় সমস্যা নয়, তবে।
রিকার্ডো মুরি 21

8

আপনি করতে পারেন renice একটি চলমান প্রক্রিয়া দিতে এটা বেশী বা কম অগ্রাধিকার (তথাকথিত "চমৎকার মান")। নোট করুন যে ইউনিক্সের অগ্রাধিকার স্কেলটি কিছুটা স্ব-স্বজ্ঞাত: নেতিবাচক মানগুলির অর্থ একটি প্রক্রিয়া সমবর্তী প্রক্রিয়াগুলির পক্ষে অনুকূল, অর্থাৎ এটির "আরও" অগ্রাধিকার রয়েছে।

আপনি এভাবে আপনার পিআইডি দিয়ে প্রক্রিয়াটি "ধীর" করার চেষ্টা করতে পারেন:

# lower priority of a process
renice +1 "PID"

যতবার আপনি এটি চালান, প্রক্রিয়াটি "চমৎকার মান" 1 দ্বারা উত্থাপিত হয়; আপনি +1অবশ্যই ব্যতীত পূর্ণসংখ্যার মানগুলি ব্যবহার করতে পারেন ।

কমান্ড চমৎকার আপনি একটি +10 চমৎকার মান সমন্বয় (বিকল্প এই পরিবর্তন সঙ্গে একটি প্রক্রিয়া শুরু করতে পারবেন -n)। উদাহরণ স্বরূপ:

# start a CPU-intensive task with low priority
nice ./cpu-hog

তবে, "চমৎকার মান" কেবলমাত্র সিস্টেমকে অন্যের উপরে নির্দিষ্ট প্রক্রিয়া চালানোর পক্ষে সিডিয়ুলারকে কতটা সমর্থন করে তা প্রভাবিত করে: যদি আপনার কম্পিউটারটি মূলত অলস হয়, তবে একটি একক প্রক্রিয়ার "চমৎকার মান" বাড়ানো সেই প্রক্রিয়াটিকে 100% নেওয়া থেকে বিরত রাখবে না সিপিইউ. আমি getpriority (2) ম্যানপেজ থেকে উদ্ধৃতি : (আমার দ্বারা জোর দেওয়া।)

যে পরিমাণে তাদের আপেক্ষিক সুন্দর মান প্রক্রিয়াগুলির শিডিয়ুলিংকে প্রভাবিত করে তার ডিগ্রি ইউনিক্স সিস্টেমে এবং লিনাক্সে, কার্নেল সংস্করণগুলিতে পৃথক হয়ে থাকে। কার্নেল ২.6.২৩ দিয়ে শুরু করে লিনাক্স একটি অ্যালগরিদম গ্রহণ করেছে যার ফলে সুন্দর মানগুলির তুলনামূলক পার্থক্য অনেক বেশি শক্তিশালী হয়। এটি যখন খুব কম সুন্দর মান দেয় (+19) তখনই কোনও প্রক্রিয়াটিতে সামান্য সিপিইউ সরবরাহ করে যখনই সিস্টেমটিতে অন্য কোনও _ উচ্চতর অগ্রাধিকার লোড নেই _

ইউএনআইএক্স-এর মতো কার্নেলগুলিতে প্রক্রিয়াগুলি যেভাবে চালিত হয় তার কারণগুলির কারণ: কার্নেল যতবারই কোনও প্রক্রিয়া চালানোর সিদ্ধান্ত নেয়, সেই প্রক্রিয়াটির একটি নির্দিষ্ট (নির্দিষ্ট এবং সংক্ষিপ্ত) সময়ের জন্য একটি সিপিইউ কোরের সম্পূর্ণ নিয়ন্ত্রণ থাকে। "চমৎকার মান" প্রভাব ফেলতে পারে যে কার্নেল শিডিয়ুলার কোনও প্রক্রিয়াতে কত সময় স্লট দিতে ইচ্ছুক, তবে আপনি এই সত্যটি পরিবর্তন করতে পারবেন না যে একবার নির্ধারিত হয়ে গেলে কোনও প্রক্রিয়া একটি নির্দিষ্ট সময়ের জন্য নির্বিঘ্নে চলে runs

অতএব, সিপিইউ অ্যাক্সেসের জন্য লড়াই করতে পারে এমন সিস্টেমে অন্য কোনও প্রক্রিয়া না থাকলে আপনার সিপিইউকে আস্তে আস্তে আস্তে প্রক্রিয়াকে ধীর করে দেওয়ার কোনও উপায় নেই।


ধন্যবাদ! অন্যান্য প্রক্রিয়া নির্বিশেষে কি কোনও প্রক্রিয়া শুরু থেকে শেষ অবধি ধীরভাবে চালানো সম্ভব?
টিম

@ টিম আমি যা চাইছি তা সম্ভব বলে আমি মনে করি না; আমি উত্তরটি আরও বিশদ সহ আপডেট করেছি। আশা করি এটি আরও স্পষ্ট করে তোলে।
রিকার্ডো মুরি

1
অন্য জবাবটি সিপিইউলিমিটের পরামর্শ দেয়, যা মনে হয় অসম্ভব কাজটি করে।
টিম

আহ, আমি সিপিইউলিমিট সম্পর্কে জানতাম না - এটি আমার ইউনিক্স সরঞ্জাম সেটটিতে অবশ্যই একটি ফাঁক পূরণ করে।
রিকার্ডো মুরি 21

niceআপনার প্রসেসরটি শীতল রাখার জন্য কোনও কাজ করবেন না। এটি এর মতো কাজ করার জন্য ডিজাইন করা হয়নি।
কেন শার্প

4

cgroups ঠিক এই কারণে তৈরি করা হয়েছিল।

http://www.kernel.org/doc/Docamentation/cgroups/ http://www.serverwatch.com/tutorials/article.php/3921001/Setting-Up-Linux-Cgroups.htm

তাদের সাথে নিজেকে পরিচিত করতে কিছুটা সময় নেয় এবং আমি বিশ্বাস করি সেগুলি সেট আপ করার জন্য আপনার রুট অ্যাক্সেসের প্রয়োজন, তবে এটি সমস্তই স্ক্রিপ্ট করা যায়। নতুন উবুন্টাসের একটি .conf ফাইল রয়েছে যাতে আপনার নিজের স্ক্রিপ্টটি লিখতে না হয়। আমি 10.10 সম্পর্কে নিশ্চিত নই।

শুরু করার জন্য একটি দুর্দান্ত জায়গা হ'ল এই উত্তরে: https://askubuntu.com/a/94743/170177

নোট করুন যে সিগ্রুপগুলি এখনও সক্রিয় বিকাশের অধীনে রয়েছে তাই আপনার বর্তমান কার্নেলের মধ্যে কিছু বৈশিষ্ট্য অনুপলব্ধ হতে পারে।

Cgroups ব্যবহার করা cpu.shares কিছুই করে একটি করে চমৎকার মান না হবে। মনে হচ্ছে আপনি প্রকৃতপক্ষে প্রক্রিয়াগুলি থ্রোট্ট করতে চান যা অবশ্যই করা যেতে পারে।

আপনার পছন্দসই প্যারামিটারগুলি সংজ্ঞায়িত করতে আপনাকে একটি বা দুটি স্ক্রিপ্ট এবং / অথবা সম্পাদনা /etc/cgconfig.conf ব্যবহার করতে হবে।

বিশেষত, আপনি cpu.cfs_period_us এবং cpu.cfs_quota_us মানগুলি সম্পাদনা করতে চান । প্রক্রিয়া তারপর চালানোর অনুমতি দেওয়া হবে cpu.cfs_quota_us প্রতি মাইক্রোসেকেন্ড cpu.cfs_period_us মাইক্রোসেকেন্ড।

উদাহরণ স্বরূপ:

যদি cpu.cfs_period_us = 50000 এবং cpu.cfs_quota_us = 10000 হয় তবে প্রক্রিয়াটি সিপিইউর সর্বাধিক সময়ের 20% পাবে, অন্য যাই ঘটুক না কেন।

এই স্ক্রিনশটটিতে আমি প্রসেসটি সিপিইউয়ের 2% সময় দিয়েছি:

2% সিপিইউ সময়

প্রক্রিয়াটি যতটা উদাসীন, এটি 100% এ চলছে।

অন্যদিকে সিপু.শায়ারস সেটিংস অলস সিপিইউ সময় 100% ব্যবহার করতে পারে এবং এখনও ব্যবহার করবে।

এই একই উদাহরণে আমি cpu.shares = 100 (1024 এর) প্রক্রিয়াটি দিয়েছি :

cpu.shares

আপনি দেখতে পাচ্ছেন যে প্রক্রিয়াটি এখনও সমস্ত অলস সিপিইউ সময় গ্রহণ করছে।

তথ্যসূত্র:

http://manpages.ubuntu.com/manpages/precise/man5/cgconfig.conf.5.html http://kennystechtalk.blogspot.co.uk/2015/04/throttling-cpu-usage-with-linux-cgroups .html


দ্রষ্টব্য: systemdকিছুটা আলাদা করে। উদাহরণস্বরূপ, উবুন্টু ট্রাস্টি সিগ্রুপ পরিচালনা করার জন্য দুটি পরিষেবা নিয়ে আসে বলে মনে হয়। আমি যখন জানব তখন আপডেট করব।
কেন শার্প

প্রক্রিয়াটি ইতিমধ্যে শুরু হয়ে গেলে আপনি সর্বাধিক সিপিইউ% পরিবর্তন করতে পারবেন, যেমন renice?
মার্কো সুল্লা

reniceব্যবহৃত সিপিইউর পরিমাণ পরিবর্তন করে না, এটি কেবল শিডিয়ুলারে প্রক্রিয়াটির অগ্রাধিকার পরিবর্তন করে। সিজি গ্রুপগুলি যে কোনও সময় সিপিইউ সীমা পরিবর্তন করতে পারে। যেহেতু এই উত্তর পোস্ট করা হয়েছিল cgroups এ সব ধরণের টুইট যুক্ত হয়েছে এবং এটি খুব শক্তিশালী।
কেন শার্প

renice does not change the amount of CPU usesআমি এটি জানি;) আমি কেবলমাত্র এমন একটি প্রোগ্রামের উদাহরণ হিসাবে পোস্ট করেছি যা রানটাইমের সময় জিনিসগুলিকে পরিবর্তন করে। আপনার উত্তরের জন্য আপনাকে ধন্যবাদ, আমি cgroups চেষ্টা করব।
মার্কো সুল্লা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.