আমার একটি সিঙ্গল কোর মেশিনে 3 টি প্রক্রিয়া রয়েছে। প্রতিটি প্রক্রিয়া হুবহু একই রকম হয় এবং সিপিইউ যত তাড়াতাড়ি জ্বলতে পারে (টাইট লুপ)। তাদের মধ্যে দুটি ( A
এবং B
) আলাদা আলাদা গ্রুপে সিজেেক্সেক দিয়ে 512 এবং 512 সেট শেয়ারের সাথে C
চালু হয়েছে। তৃতীয় ( ) নিয়মিতভাবে চালু করা হয়েছে, সিজেেক্সেক দিয়ে নয়।
একবার সব শেষ হয়ে গেলে, C
সিপিইউয়ের 66% পাওয়া যায় A
এবং B
33% বিভক্ত হয়। আমি যদি C
তখন হত্যা করি A
এবং B
প্রত্যেকে 50% (আশানুরূপ হিসাবে) পাই
কেন C
66% পাওয়া যায়? আমি এই দৃশ্যে প্রত্যেকে 33% বা সম্ভবত 50% (সি), 25% (এ) এবং 25% (বি) আশা করতাম। C
আমি কীভাবে গণিত করি না কেন। 66% কাজ করে না।
সাধারণভাবে, আমি বুঝতে চাই যে কীভাবে প্রক্রিয়াগুলি সম্পদ ভাগ করে নেওয়ার ক্ষেত্রে cgexec
প্রবর্তন প্রক্রিয়াগুলির সাথে ইন্টারেক্ট ছাড়াই চালু হয়েছিল cgexec
(বিশেষত সিপিইউ, তবে এটি আরও জটিল না হলে আরও সাধারণ উত্তর প্রশংসা করা হবে)।
top
করছিলাম এবং আমি বিশ্বাস করি সেগুলি মোটামুটি সহজভাবে একটি কমান্ড প্রম্পট থেকে শুরু করা হয়েছিল: cgexec -g cpu:foo myprogram
এবং ./myprogram
। এটি একটি সময় হয়েছে তাই আমি নিশ্চিতভাবে মনে নেই।
cpu.shares
একটি খুব অদ্ভুত কনফিগারেশন বিকল্প; আমি cpuset.cpus
পরিবর্তে যদি সম্ভব হয় তবে জিনিসগুলি সিপিইউ দ্বারা বিভক্ত করার পরামর্শ দিচ্ছি ।