মেশিন স্টার্টআপে হাইপারথ্রেডিং অক্ষম করার জন্য একটি স্ক্রিপ্ট ...
হাইপারথ্রেডিং অক্ষম করতে আমি মেশিন /etc/rc.local এ একটি স্ক্রিপ্ট অন্তর্ভুক্ত করি। এটি পরিচ্ছন্নভাবে পরিষ্কার নয়, তবে সিপিইউ আর্কিটেকচারের থেকে পৃথক, এটি ইনস্টল করা সহজ এবং আধুনিক লিনাক্স বিতরণে কাজ করা উচিত।
nano /etc/rc.local
# place this near the end before the "exit 0"
for CPU in /sys/devices/system/cpu/cpu[0-9]*; do
CPUID=$(basename $CPU)
echo "CPU: $CPUID";
if test -e $CPU/online; then
echo "1" > $CPU/online;
fi;
COREID="$(cat $CPU/topology/core_id)";
eval "COREENABLE=\"\${core${COREID}enable}\"";
if ${COREENABLE:-true}; then
echo "${CPU} core=${CORE} -> enable"
eval "core${COREID}enable='false'";
else
echo "$CPU core=${CORE} -> disable";
echo "0" > "$CPU/online";
fi;
done;
এটি কিভাবে কাজ করে?
লিনাক্স কার্নেলের তথ্য এবং নিয়ন্ত্রণগুলি আধুনিক লিনাক্স বিতরণে / sys ডিরেক্টরিতে ফাইল হিসাবে অ্যাক্সেস করা যায়। উদাহরণ স্বরূপ:
/ sys / ডিভাইস / সিস্টেম / সিপিইউ /
সিপিইউ 3 তে লজিক্যাল সিপিইউ 3 এর জন্য কার্নেল সংক্রান্ত তথ্য এবং নিয়ন্ত্রণ রয়েছে।
বিড়াল / সিএস / ডিভাইস / সিস্টেম / সিপিইউ / সিপিইউ 3 / টপোলজি / কোর_আইডি
এই লজিক্যাল সিপিইউয়ের মূল সংখ্যাটি প্রদর্শন করবে।
প্রতিধ্বনি "0"> / sys / ডিভাইস / সিস্টেম / সিপিইউ / সিপিইউ 3 / অনলাইন
লজিকাল সিপিইউ 3 অক্ষম করতে দেয়।
কেন এটি কাজ করে?
আমি ঠিক জানি না কেন ... তবে হাইপারথ্রেডিং বন্ধ হয়ে যাওয়ার সাথে সিস্টেমটি আরও প্রতিক্রিয়াশীল হয়ে উঠেছে (আমার আই 5 নোটবুক এবং 60+ কোরের সাথে বিশাল জিয়ান সার্ভারে)। আমি অনুমান করি যে প্রতি-সিপিইউ ক্যাশে, প্রতি-সিপিইউ মেমরি বরাদ্দ, সিপিইউ শিডিয়ুলার বরাদ্দ এবং প্রক্রিয়া অগ্রাধিকারগুলি জটিল পুনরাবৃত্তির সাথে করতে হবে। আমি মনে করি হাইপারথ্রেডিংয়ের সুবিধাগুলি সিপিইউ শিডিয়ুলার তৈরির জটিলতার দ্বারা ওজন বেশি যারা এটি কীভাবে ব্যবহার করতে জানে।
আমার জন্য হাইপারথ্রেডিংয়ের সমস্যাটি হ'ল: যদি আমি লজিকাল কোরগুলি হিসাবে অনেকগুলি সিপিইউ-ইনটেনসিভ থ্রেড শুরু করি, তবে সিপিইউ নিবিড় কাজগুলির জন্য আমার কাছে দ্রুত প্রসঙ্গের সুইচ থাকবে তবে হাইপারথ্রেডিং সম্পূর্ণরূপে গ্রাস করার পরে ব্যাকগ্রাউন্ড কাজের জন্য ব্যয়বহুল রয়েছে expensive সিপিইউ নিবিড় কাজ। অন্যদিকে, আমি যদি আমার শারীরিক কোরের মতো সিপিইউ-নিবিড় থ্রেডগুলি শুরু করি তবে আমার সেই সমস্ত কার্যগুলিতে কোনও প্রসঙ্গের স্যুইচ এবং পটভূমির কার্যগুলির জন্য দ্রুত প্রসঙ্গের সুইচ হবে না। দেখতে ভাল লাগছে, তবে পটভূমির কাজগুলি নিখরচায় লজিকাল প্রসেসরের সন্ধান করবে এবং প্রায় লক্ষ্যমাত্রায় চলবে। এগুলি রিয়েলটাইম পারফর্মেন্সের মতো (দুর্দান্ত -20)।
প্রথম দৃশ্যে হাইপারথ্রেডিং হ'ল ইউল্লস, ব্যাকগ্রাউন্ড টাস্কগুলি ব্যয়বহুল কনটেক্সট সুইচগুলি ব্যবহার করবে কারণ আমি স্বাভাবিক প্রসেসিংয়ের সাথে হাইপারথ্রেডিংকে সর্বাধিক আউট করেছি। দ্বিতীয়টি অপ্রয়োজনীয় কারণ আমার সিপিইউ পাওয়ারের 50% পর্যন্ত পটভূমির কার্যগুলিতে অগ্রাধিকার দেওয়া হয়।
আমি যে "সিপিইউ-নিবিড়" কাজগুলির বিষয়ে কথা বলছি সেগুলি হ'ল কৃত্রিম বুদ্ধিমত্তার ডেটা মাইনিং এবং অনুমোদনের সার্ভারগুলি (আমার কাজ)। সস্তা কম্পিউটার এবং ক্লাস্টারে ব্লেন্ডার রেন্ডারিং (আমার ভবিষ্যতের বাড়ি স্কেচ করার জন্য)।
এছাড়াও, এটি অনুমানের কাজ।
আমার ধারণাটি আরও ভাল, তবে তা নাও পারে।
sysbench --num-threads=1 --test=cpu run
বিভিন্ন নাম-থ্রেড এবং এইচটি চালু এবং বন্ধ ব্যবহার করে বলা হয়েছে যে অনেক থ্রেড থাকলে এইচটি নিষ্ক্রিয় করা সুগন্ধি হ্রাস করে এবং এমনকি একটি মাত্র থ্রেড থাকলেও এইচটি বন্ধ করে লাভ নেই। সুতরাং আমি এটি এটি যেমন রাখার পরামর্শ দিই: এটি সর্বোত্তম।