একটি ডকার পাত্রে অনুমোদিত সিপিইউ সংখ্যা গণনা করুন


14

আমার নির্দিষ্ট পরিস্থিতিটি নিম্নলিখিত the আমি একটি নির্দিষ্ট সিপিউসেট সহ একটি ডকার ধারক চালু করি:

docker run --cpuset-cpus="0-2" # ...

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

আমি জানি আমি বর্তমান প্রক্রিয়াটির জন্য ব্যবহার করতে taskset -c -p $$বা cat /proc/self/status | grep Cpus_allowed_listপুনরুদ্ধার করতে Cpus_allowedপারি, তবে অনুমোদিত সিপিইউগুলির আসল সংখ্যাটি কীভাবে পুনরুদ্ধার করতে হবে তা আমি জানি না। আমি এই কমান্ডগুলির আউটপুটকে পার্সিং করা বা Cpus_allowedমাস্কটি দিয়ে ফিডিং এড়াতে চাই , তবে বিকল্পগুলির বাইরে থাকলে তা করব।


1
nproc- প্রসেসিং ইউনিটগুলির সংখ্যা প্রিন্ট করুন
ব্রায়ান

@ ব্রায়ান এটি খুব সহজ ছিল।

উত্তর:


19

আপনি nprocশেল স্ক্রিপ্ট সরঞ্জামটি ব্যবহার করতে পারেন ।

সুতরাং এটি -j$(nproc)প্রশ্নে মেক কমান্ড লাইনে থাকবে।


1
"ডকার রান --rm --cpus 2 ডেবিয়ান এনপ্রোক" -> 8?
ইভান বেন

2
@ ইভেনবেন --cpus="2"প্রসেসিং ইউনিটের সংখ্যা সীমিত করে না এবং এর সমতুল্য -cpu-period="100000" and --cpu-quota="200000"
ব্রায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.