আমি তুলনামূলকভাবে সাম্প্রতিক কার্নেলের সাথে লিনাক্স সিগ্রুপ ব্যবহার করে দুটি ডুয়াল-কোর লিনাক্স সিস্টেম ইনস্টল করেছি; একটি চালাচ্ছেন দেবিয়ান স্কুইজ, অন্যটি উবুন্টু ১১.০৪ নাট্টি নার্ভাল। আমি সিপিউ লোড ভারসাম্য অর্জন করেছি সিগ্রুপের সাথে পুরানো কার্নেল সত্ত্বেও কিছুটা ভাল কাজ করেছে working তবে এটি প্রতিটি কিছুর জন্য সঠিক নয় এবং আমি এখানে নির্দিষ্ট বিশিষ্টতাটি জিজ্ঞাসা করছি উভয় সিস্টেমেই ঘটে।
আপনি যদি কন্ট্রোল গ্রুপ সহ লিনাক্সে রিসোর্স ম্যানেজমেন্ট পড়েন তবে সমস্যাটি কীভাবে পুনরুত্পাদন করা যায় সে সম্পর্কে এটি একটি উদাহরণ দেয়। এখানে উবুন্টু সংস্করণটি (এটি রুট হিসাবে চালান):
cd /sys/fs/cgroup/cpu
[On Debian Squeeze start at /mnt/cgroups/cpu instead]
mkdir low high
echo 512 > low/cpu.shares
echo 2048 > high/cpu.shares
yes low > /dev/null &
echo $! > low/tasks
yes high > /dev/null &
echo $! > high/tasks
ps -C yes -opid,%cpu,psr,args
[repeat that a few times]
killall -9 yes
আমি আশা করছিলাম যে "উচ্চ" প্রক্রিয়াটি "নিম্ন" এর চেয়ে বেশি সময় বরাদ্দ হবে; এই পরীক্ষার ক্ষেত্রে আসলে যা ঘটে তা সর্বদা এরকম:
root@black:/sys/fs/cgroup/cpu# ps -C yes -opid,%cpu,psr,args
PID %CPU PSR COMMAND
3105 88.3 1 yes low
3106 94.5 0 yes high
যেখানে সময়গুলি প্রায় সমান। এখানে আমার প্রশ্ন: কেন এমন হচ্ছে?
উপস্থাপনায়, প্রতিটি প্রসেসকে একই সিপিইউতে পিন করে এই সমস্যাটি দেখানো হবে; পরীক্ষা করার জন্য অতিরিক্ত লাইন:
taskset -c 1 yes high > /dev/null &
echo $! > high/tasks
taskset -c 1 yes low > /dev/null &
echo $! > low/tasks
ps -C yes -opid,%cpu,psr,args
[later, rinse, repeat]
killall -9 yes
তারপরে ফলাফলটি আমি সবসময় দেখার প্রত্যাশা করছিলাম: "উচ্চ" প্রক্রিয়াটি সিপিইউর চেয়ে অনেক বেশি শতাংশ পেয়েছে:
root@black:/sys/fs/cgroup/cpu# ps -C yes -opid,%cpu,psr,args
PID %CPU PSR COMMAND
3128 83.3 1 yes high
3129 20.7 1 yes low
এই কাজগুলি কেন পূর্ববর্তীটি কেন খুব বেশি হয় না তা নির্ধারণের জন্য দরকারী পদক্ষেপ হবে তা ব্যাখ্যা করে।