লিনাক্সে কোয়াড কোর প্রসেসরে সিপিইউ কোরগুলি অক্ষম করা হচ্ছে


14

আমি 3 সিপিইউ কোর অক্ষম করতে এবং আমার প্রসেসরটি একটি একক কোরে চালাতে চাই। আমি ব্যবহৃত কমান্ড আছে: maxcpus=1। কিন্তু এই পর আমি এই কমান্ড মৃত্যুদন্ড কার্যকর ls /sys/devices/system/cpu। এটি এখনও দেখায় cpu0,cpu1,cpu2,cpu3

আমিও চেষ্টা: echo 0 > /sys/devices/system/cpu3/onlineকিন্তু আমি নিম্নলিখিত ত্রুটির পাবেন: no such file or directory


আপনি maxcpus=1 কমন্ড কোথায় রেখেছেন তা অস্পষ্ট ? আপনি কি সেই স্ট্রিংটিকে grub.cfgবুট বিকল্প হিসাবে রেখেছেন ? (মন্তব্যে উত্তর দেওয়ার পরিবর্তে আপনার প্রশ্নটি আপডেট করুন)।
অ্যান্থন

আমি ফ্রীস্কেল IMx6 sabreauto বোর্ড ব্যবহার করছি লিনাক্স OS.I একটি টার্মিনাল এমুলেটর "gtkterm" এ কমান্ড মৃত্যুদন্ড কার্যকর উপর
user3818847

এই কমান্ডটি 0> / sys / ডিভাইস / সিস্টেম / cpu3 / অনলাইন প্রতিধ্বনি দিয়ে আমি cpu3 শাটডাউন দেখতে সক্ষম হয়েছি। এখন আমি যা জানতে চাই তা হল, আমি কি পরিবর্তনগুলি কার্যকর করার জন্য সিস্টেমটি পুনরায় বুট করব বা পুনরায় না ছাড়াই চালিয়ে যেতে পারি
ব্যবহারকারী 381818847

এএআইএআইএইচিকে আপনার কার্নেলের প্যারামিটার হিসাবে ম্যাক্সপাস = 1 নির্দিষ্ট করতে হবে (অর্থাত্ আপনি গ্রাব করার সময়)। এটিকে কার্নেল প্যারামিটারে যুক্ত করতে '/ ইত্যাদি / ডিফল্ট / গ্রাব' সম্পাদনা করুন, 'আপডেট-গ্রাব' চালান এবং পুনরায় বুট করুন। এটি জিনিসগুলিকে অবিচ্ছিন্ন করে তুলবে, লিনাক্স স্টার্টআপে কেবলমাত্র একটি সিপিইউ দিয়ে।
অ্যান্থন

2
@ ব্যবহারকারী 3818847 আপনি কী ডিস্ট্রো ব্যবহার করছেন? বুট পরামিতিগুলির পরিবর্তন (পাস করার জন্য maxcpus=1) ডিস্ট্রো অনুসারে পরিবর্তিত হয়। এছাড়াও আপনার যে /sysপথটি রয়েছে তা হ'ল ভুল, সঠিক পথ /sys/devices/system/cpu/cpu3/online
প্যাট্রিক

উত্তর:


28

প্যাট্রিক যেমন একটি মন্তব্যে ইঙ্গিত করেছেন , আপনি /sysভুলের মধ্যে দিয়েছিলেন

echo 0 > /sys/devices/system/cpu/cpu3/online

আপনি যদি বাদে সমস্ত সিপিইউস বন্ধ করতে চান cpu0:

for x in /sys/devices/system/cpu/cpu[1-9]*/online; do
  echo 0 >"$x"
done

maxcpus=1শেল প্রম্পটে টাইপ করার কোনও প্রভাব নেই। আরো সঠিকভাবে, এটা পরিবর্তনশীল সেট করে maxcpusমান 1যা অন্য কোন প্রভাব নয় যে শেল মধ্যে। আপনি বুট করার সময় কার্নেল প্যারামিটারmaxcpus হিসাবে পাস করে সিপিইউ সংখ্যা নির্ধারণ করতে পারেন । তার জন্য আপনাকে নিজের বুটলোডার কনফিগারেশনটি পরিবর্তন করতে হবে (উদাঃ ইউ-বুটে কার্নেল কমান্ড লাইন পরিবর্তন করতে)।


পরামের্শর জন্য আপনাকে ধন্যবাদ। এটি আপনার প্রস্তাবিত কমান্ডটি দিয়ে কাজ করেছে
ব্যবহারকারীর 3818847

এটি কমপক্ষে কিছুটা কার্নেল-নির্দিষ্ট। আমি কার্নেলটি ৩.6..6 চালাচ্ছি, এবং এরকম কোনও ফাইল নেই; পরিবর্তে আপনি সমস্ত করগুলি নিয়ন্ত্রণ করতে একক /sys/devices/system/cpu/onlineএবং ./offlineফাইলগুলি ব্যবহার করেন ।
ড্যানিয়েল গ্রিসকম

@ গিলস - এটি চালু করার সময়টি কতটা সময় নেয় তা জানার কোনও উপায় আছে core?
চেতন অরবিন্দ পাতিল

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

1
@Xofo যখন কার্নেলটি একটি কোর বন্ধ করে দেয়, তখন সেই কোরটি কার্নেল কোডটি চালাচ্ছে, সুতরাং সেই মুহুর্তে কোনও নির্দিষ্ট থ্রেডের জন্য কোনও থ্রেড নির্ধারিত হয়নি। কোরটি বন্ধ হওয়ার পরে, থ্রেডগুলি আর সেই কোরের উপরে নির্ধারিত হয় না। কোনও থ্রেডের সান্নিধ্য এটি বন্ধের সমস্ত সেট বন্ধ করে দেয় তবে কী হবে তা আমি জানি না।
গিলস'স'-এ খারাপ হওয়া বন্ধ করুন '

1

আপনি অগত্যা কোর বন্ধ বা অক্ষম করবেন না ।

আপনি সিপিউসেট এবং টাস্কসেট ব্যবহার করবেন

http://man7.org/linux/man-pages/man7/cpuset.7.html

একটি সিপিউসেট সিপিইউ এবং মেমরি নোডগুলির একটি তালিকা নির্ধারণ করে ...

সিপিউসেট ফাইল সিস্টেমটি কার্নেল সিপুয়েসট প্রক্রিয়াটির সিউডো-ফাইল সিস্টেম ইন্টারফেস, যা প্রসেসরের প্লেসমেন্ট এবং প্রক্রিয়াগুলির মেমরি প্লেসমেন্ট নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এটি সাধারণত / dev / cpuset এ মাউন্ট করা হয়।

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

কোনও সিস্টেমের সিপিইউতে সমস্ত লজিকাল প্রসেসিং ইউনিট অন্তর্ভুক্ত থাকে যার উপর একটি প্রক্রিয়া চালানো যেতে পারে, যদি উপস্থিত থাকে তবে প্যাকেজের মধ্যে একাধিক প্রসেসরের কোর এবং প্রসেসরের কোরের মধ্যে হাইপার-থ্রেডস অন্তর্ভুক্ত থাকে। মেমোরি নোডগুলিতে মূল স্মৃতির সমস্ত স্বতন্ত্র ব্যাংক অন্তর্ভুক্ত থাকে; ছোট এবং এসএমপি সিস্টেমগুলিতে সাধারণত একটি মেমরি নোড থাকে যা এতে সিস্টেমের সমস্ত প্রধান মেমরি থাকে, যখন NUMA (অ-ইউনিফর্ম মেমরি অ্যাক্সেস) সিস্টেমে একাধিক মেমরি নোড থাকে।

সংক্ষেপে বলতে গেলে, আপনি যদি 1 cpu 'র থাকার 6 কোর আছে আপনি cpusets কনফিগার ও আপনার প্রক্রিয়া চালু করবে cpuset যে শুধু এক কোটি উপর কনফিগার করা আছে, বলতে উদাহরণস্বরূপ কোর # 3। যদি এটি একটি সমান্তরাল প্রক্রিয়া ছিল তবে এটি সমস্ত সেই একটি কোরতে সীমাবদ্ধ থাকবে যেমন আপনি যদি একটি প্রদত্ত সিপুয়েসে 4 টি প্রক্রিয়া চালু করেন যেখানে কেবল একটি কোর সংজ্ঞায়িত করা হয়, তবে 4 টি প্রক্রিয়াগুলির প্রতিটি কোর # 3 তে 25% সিপিইউ ব্যবহার পাবেন।

এর বাইরে বিল্ডিং, সাধারণত যা ঘটে তা হ'ল একটি সিপুসেট এমন কনফিগার করা হয়

  • উদাহরণস্বরূপ একটি 200+ কোর সিস্টেমে, cpusetA হল কোরেস 0..60 যেখানেই সেগুলি যেখানেই থাকুক না কেন, cpusetB কোর 61,70 হয়; cpusetC হল কোর 71..80; এবং তাই তবে কোনও প্রশাসক / স্থপতি কনফিগার করতে পছন্দ করেন।
  • নির্দিষ্ট ব্যবহারকারী এবং / অথবা নির্দিষ্ট সফ্টওয়্যার প্রোগ্রামগুলিতে সিপুসেটা বরাদ্দ করা হয়; বিভিন্ন ব্যবহারকারী / প্রোগ্রামগুলিতে সিপুজেটবি বরাদ্দ করা হয়; ইত্যাদি।
  • কোনও ব্যবহারকারী একটি চাকরী (প্রক্রিয়া) চালু করে যা একটি প্রদত্ত সিপুজেটের মধ্যে এন কোরের জন্য অনুরোধ করবে ... এবং এখন সেই বহুবিধ (সমান্তরাল) প্রক্রিয়া সেই প্রদত্ত সিপুসেটের মধ্যে সীমাবদ্ধ । এবং এই এন সমান্তরাল প্রদত্ত সিপুয়েসেটে সীমাবদ্ধ, তাদের প্রতিটি প্রসেসরের প্রসেসর অ্যাফিনিটি বা সিপিইউ অ্যাফিনিটি ব্যবহার করা উচিত যাতে সেই সমান্তরাল প্রসেসগুলি সিপুসেটের অভ্যন্তরে বিভিন্ন কোরগুলিতে ঘুরতে না পারে।

এছাড়াও: https://linux.die.net/man/1/taskset

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