লিনাক্সে, কোনও প্রক্রিয়াটির জন্য সিপিইউ অ্যাফিনিটি সেট করার জন্য সিস্টেম কল sched_setaffinity
। তারপরে কমান্ড লাইনে এটি করার taskset
সরঞ্জাম রয়েছে ।
সেই একক প্রোগ্রামটি কেবল একটি সিপিইউতে চালানোর জন্য, আমি মনে করি আপনি এর মতো কিছু চান
taskset -c 1 ./myprogram
(যে কোনও সিপিইউ নম্বরটি -c
স্যুইচটিতে একটি আর্গুমেন্ট হিসাবে সেট করুন ))
এটি একটি একক-প্রসেসর সিস্টেমের পর্যাপ্ত পরিমাণে হওয়া উচিত, যতক্ষণ না আপনার অন্যান্য প্রক্রিয়াগুলি পরিমাপ করতে চান তার তুলনায় খুব বেশি চলমান না হয় বা সেগুলি অন্য সিপিইউতে নির্ধারিত হয়। আপনি যদি কেবলমাত্র সেই একক প্রক্রিয়াতে একটি সিপিইউ উত্সর্গ করতে চান এবং অন্য প্রসেসগুলি সেই সিপিইউতে চালানো থেকে বিরত রাখতে চান তবে আপনার তাদের সখ্যতাও সেট করতে হবে।
অর্থাৎ আমি না সঠিকভাবে কিভাবে জানি। init
এটি সিস্টেমের সমস্ত প্রক্রিয়াতে উত্তরাধিকার সূত্রে প্রাপ্ত তা নিশ্চিত করার জন্য আপনাকে বুট প্রক্রিয়া শুরুতে প্রসেসরের সাদৃশ্য স্থাপন করতে হবে। একটি কর্মক্ষেত্র হিসাবে, আপনি taskset -c -p 0 $PID
কেবলমাত্র CPU # 0 এ চালাতে বাধ্য করার জন্য অন্যান্য সমস্ত প্রক্রিয়াগুলির জন্য ব্যবহার করতে পারেন ।
systemd হল এছাড়াও আছেCPUAffinity=
ইউনিট ফাইলে সম্বন্ধ নিয়ন্ত্রণ করতে এবং আছে একটি দম্পতি এর প্রশ্ন unix.SE এখানে ডিফল্ট সম্বন্ধ সেটিং, কিন্তু আমি একটি ভাল সমাধান সঙ্গে কোনো খুঁজে পাইনি।
যদিও @ কামিল ম্যাকিয়েরোভস্কি সুপারউজার ডটকম-এ অন্য প্রশ্নের উত্তর দিয়েছেন এবং উত্তর দিয়েছেন , কার্নেল কমান্ড লাইনে সেট isolcpus=1
করাতে "সেই সিপিইউকে সাধারণ শিডিয়ুলিং অ্যালগরিদমগুলি থেকে আলাদা করা উচিত", যা আপনার পছন্দ হতে পারে।