হাইপারথ্রেডেড সিপিইউগুলির সাথে উইন্ডোজ প্রসেসর অ্যাফিনিটি কীভাবে কাজ করে?


27

হাইপারথ্রেডেড সিপিইউগুলির সাথে উইন্ডোজ প্রসেসর অ্যাফিনিটি কীভাবে কাজ করে? আসুন একটি সিস্টেমের উদাহরণ (চিত্রযুক্ত) চারটি কোর সহ প্রতিটি হাইপার-থ্রেডযুক্ত ভার্চুয়াল কোর ব্যবহার করি।

  1. কোন কোর নীচে প্রতিটি "সিপিইউ" এর সাথে মিল রাখে?
  2. (বলুন) নীচে সিপিইউ 6 এবং সিপিইউ 7 একটি মূল প্রতিনিধিত্ব করে; এইচটি এবং আসল কোর?
  3. উদাহরণস্বরূপ, যদি সিপিইউ 6 একটি বাস্তব কোর এবং সিপিইউ 7 একটি এইচটি কোরের প্রতিনিধিত্ব করে, কেবলমাত্র সিপিইউ 7-এর জন্য নির্ধারিত একটি থ্রেডটি কি কোনও সত্যিকারের মূল উত্সের জন্য কেবল বামে থাকবে? (ধরে নিচ্ছেন মূলটি অন্যান্য কাজ চালাচ্ছে)
  4. হাইপারথ্রেডিং পুরোপুরি প্রসেসরের মধ্যে এমনভাবে পরিচালিত হয় যে থ্রেডগুলি অভ্যন্তরীণভাবে জাগ্রত হয়? যদি তা হয় তবে তা কি সিপিইউ স্কোপ বা মূল সুযোগে? উদাহরণ: যদি সিপিইউ 6 এবং 7 একটি মূল প্রতিনিধিত্ব করে তবে কী কোনও প্রক্রিয়া নির্ধারিত হবে তা বিবেচ্য নয় কারণ সিপিইউ চলমান থ্রেডের জন্য যথাযথ সংস্থানগুলি সরবরাহ করবে?
  5. আমি লক্ষ্য করেছি যে দীর্ঘকালীন চলমান একক থ্রেডযুক্ত প্রক্রিয়াগুলি কমপক্ষে প্রায় কয়েকটি কোরের দিকে বাউন্স করা হয়, কমপক্ষে টাস্ক ম্যানেজারের মতে। এর অর্থ কি এই যে কোনও একক কোরকে একটি প্রক্রিয়া বরাদ্দ করা কিছুটা পারফরম্যান্সের উন্নতি করবে (প্রসঙ্গের স্যুইচ এবং ক্যাশে অবৈধতা ইত্যাদি এড়িয়ে)? যদি তা হয় তবে আমি কি জানতে পারি যে আমি "কেবল একটি ভার্চুয়াল কোর" অর্পণ করছি না?

এটি আমার কাছে খুব অস্পষ্ট এবং বিভ্রান্তিকর। এইচটি দুর্দান্ত, তবে এটি অবশ্যই সম্পদ বরাদ্দের স্বচ্ছতা হ্রাস করবে বলে মনে হচ্ছে।

প্রসেসরের অ্যাফিনিটি মেনু


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

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

উত্তর:


18

কোন কোর নীচে প্রতিটি "সিপিইউ" এর সাথে মিল রাখে?

ধরে নিলাম আমাদের কোর 1, 2, 3 এবং 4 রয়েছে, সিপিইউ 4 এবং সিপিই 5 মূল 3 টি উপস্থাপন করে।

(বলুন) নীচে সিপিইউ 6 এবং সিপিইউ 7 একটি মূল প্রতিনিধিত্ব করে; এইচটি এবং আসল কোর?

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

উদাহরণস্বরূপ, যদি সিপিইউ 6 একটি বাস্তব কোর এবং সিপিইউ 7 একটি এইচটি কোরের প্রতিনিধিত্ব করে, কেবলমাত্র সিপিইউ 7-এর জন্য নির্ধারিত একটি থ্রেডটি কি কোনও সত্যিকারের মূল উত্সের জন্য কেবল বামে থাকবে? (ধরে নিচ্ছেন মূলটি অন্যান্য কাজ চালাচ্ছে)

উপরে দেখুন. কেবলমাত্র CPU6 বা কেবলমাত্র CPU7 এর জন্য নির্ধারিত একটি থ্রেড ঠিক একই গতিতে সঞ্চালিত হবে (ধরে নেওয়া থ্রেডটি একই কাজ করে, এবং প্রসেসরের অন্যান্য কোরগুলি অলস অবস্থায় রয়েছে)। উইন্ডোজ এইচটি-সক্ষম সক্ষম প্রসেসরের সম্পর্কে জানে এবং প্রক্রিয়া শিডিয়ুলার এই বিষয়গুলিকে বিবেচনা করে।

হাইপারথ্রেড পুরোপুরি প্রসেসরের অভ্যন্তরে পরিচালনা করা হয় যে থ্রেডগুলি অভ্যন্তরীণভাবে জাগ্রত হয়? যদি তা হয় তবে তা কি সিপিইউ স্কোপ বা মূল সুযোগে? উদাহরণ: যদি সিপিইউ 6 এবং 7 একটি মূল প্রতিনিধিত্ব করে তবে কী কোনও প্রক্রিয়া নির্ধারিত হবে তা বিবেচ্য নয় কারণ সিপিইউ চলমান থ্রেডের জন্য যথাযথ সংস্থানগুলি সরবরাহ করবে?

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

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

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

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


5

সিপিইউ লেআউটটি এমনভাবে সংগঠিত হওয়ার কথা যা যাতে কোনও অপারেটিং সিস্টেম যা আপনার সমস্ত সিপিইউগুলি সনাক্ত করতে পারে না সর্বাধিক সম্পাদন সম্ভব হয়। এর অর্থ হ'ল যে কোনও শারীরিক কোর থেকে দ্বিতীয় ভার্চুয়াল কোর তালিকাভুক্ত হওয়ার আগে প্রতিটি শারীরিক কোর থেকে একটি ভার্চুয়াল কোর তালিকাভুক্ত হবে।

উদাহরণস্বরূপ, বলুন আপনার চারটি হাইপার-থ্রেডেড কোর রয়েছে, যার নাম A, B, C, এবং D., যদি আপনি ধরে নেন যে A এবং B একটি এল 2 ক্যাশে ভাগ করে এবং সি এবং ডি ভাগ করে একটি এল 2 ক্যাশে, ক্রমটি এমন হওয়া উচিত:
0 = এ 1 1 = সি 1 2 = বি 1 3 = ডি 1 4 = এ 2 5 = সি 2 6 = বি 2 7 = ডি 2

এইভাবে, একটি অপারেটিং সিস্টেম যা কেবলমাত্র দুটি সিপিইউ দখল করে সমস্ত এল 2 ক্যাশে ব্যবহার করতে পারে। এছাড়াও, একটি অপারেটিং সিস্টেম যা কেবলমাত্র চারটি সিপিইউ গ্রহণ করে সমস্ত এক্সিকিউশন ইউনিট ব্যবহার করতে পারে।

আবার, এটি এমনভাবেই হওয়ার কথা।

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


1
  1. তারা কীভাবে সম্পর্কিত তা আপনার সিপিইউ এবং মাদারবোর্ডগুলি কীভাবে অঙ্কিত করে এবং কোরগুলি সনাক্ত করে তার উপর নির্ভর করে। যা হওয়ার কথা ছিল তা হ'ল শারীরিক সকেটগুলি প্রথমে অঙ্কিত হয়, পরের দিকে লজিকাল কোর এবং ভার্চুয়াল কোরগুলি সর্বশেষে। আপনার ক্ষেত্রে, 0-3 টি কোরের দৈহিক কোর এবং 4-7 ভার্চুয়াল এইচটি কোর হওয়া উচিত। এর মূল কারণ হ'ল আপনি যদি এমন কোনও ওএস চালনা করেন যা সমস্ত উপলব্ধ এক্সিকিউশন ইউনিট পরিচালনা করতে সক্ষম না হয় তবে ভাগ করে নেওয়া সংস্থাগুলির আগে এটি সর্বাধিক স্বতন্ত্র ইউনিট পাওয়ার সম্ভাবনা বেশি। হাইপোথিটিকাল 2-সিপিইউ কেবল ওএস 2 টি পৃথক কোরের পরিবর্তে আপনার সিস্টেমে এইচটি জুটিটি খুঁজে পেলে এটি কোনও ভাল হবে না। (নতুন সিপিইউগুলির জন্য কার্নেলের শিডিয়ুলার আপডেট করার আগে এটি প্রাথমিক কয়েকটি এইচটি সিস্টেমের জন্য একটি বাস্তব সমস্যা ছিল))
  2. নং দেখুন 1।
  3. নং এইচটি এর চেয়ে জটিল। মনে রাখবেন যে 2 ভার্চুয়াল কোর প্রায়শই কিছু সংস্থান ভাগ করে থাকে যখন অন্যান্য বিটগুলি পৃথক করা হয়, তবে এক সময় কেবলমাত্র এক বা অন্যজন কার্যকর করতে পারে।
  4. প্রকার, রকম. আপনার উদাহরণ (অনুমান দেওয়া) সাধারণত সঠিক। তবে, যদি অ্যাপ্লিকেশনটি জানতে পারে যে কী ধরণের ওয়ার্কলোড এটি চলছে, এটি ওএসের শিডিয়ুল থ্রেডগুলিকে যথাযথভাবে সহায়তা করতে পারে।
  5. কোর হোপিংয়ের একটি খুব ভাল কারণ রয়েছে: চারদিকে তাপীয় কাজের চাপ ছড়িয়ে দেওয়া। প্রদত্ত যে বেশিরভাগ ক্ষেত্রে উচ্চ স্তরের ক্যাশে (L2, L3) যেভাবেই সমস্ত কোর জুড়ে ভাগ করা হয়েছে, মূল হোপিংয়ের একটি কার্যকর পারফরম্যান্স প্রভাব থাকবে না, তবে তাপীয় প্রভাব তাৎপর্যপূর্ণ হবে কারণ আপনার "হট স্পট" থাকবে না একটি কোর যা নিয়মিত চলতে থাকে অন্যরা অলস অবস্থায় বসে থাকে। এখন, একটি বহু সকেট সিস্টেমে সকেটগুলি অতিক্রম করা (বিশেষত একটি NUMA সিস্টেম) উল্লেখযোগ্য পারফরম্যান্সের প্রভাব ফেলতে পারে। বেশিরভাগ শিডিউলাররা এটি সম্পর্কে সচেতন এবং যদিও এটি বিবেচনা করা উচিত।

শেষ পর্যন্ত, এটি কীভাবে ফুটে ওঠে তা হ'ল প্রায়শই আপনি (শেষ ব্যবহারকারী হিসাবে) থ্রেড অ্যাফিনিটির সাথে পারফরম্যান্সের উল্লেখযোগ্য প্রভাব ফেলতে পারেন তা নিশ্চিত করেই আপনি কোনও আপ-টু-ডেট ওএস চালাচ্ছেন যা বিভিন্ন বিট সম্পর্কে জানে আপনার সিস্টেম

যদি আপনি এমন কোনও কাজের চাপ খুঁজে পান যেখানে ম্যানুয়ালি অ্যাফিনিটি নির্ধারণের একটি উল্লেখযোগ্য প্রভাব পড়ে তবে অ্যাপ্লিকেশন বিকাশকারীকে এটি বাগ হিসাবে রিপোর্ট করুন যাতে প্রোগ্রামটি ঠিক হয়ে যায়।


4
"কোর 0-3 শারীরিক কোরের এবং 4-7 ভার্চুয়াল এইচটি কোর হওয়া উচিত" আসলে, কোর 0 এবং কোর 1 একই (একক) শারীরিক কোরের সাথে মিল রয়েছে। প্রতিটি "হাইপারথ্রেডেড কোর" এর সিপিইউতে দুটি শারীরিক সংযোগ থাকে, সুতরাং উইন্ডোজ আক্ষরিক অর্থে 8 টি শারীরিক কোর দেখায়। এটি কেবল জানে যে সিপিইউতে হাইপারথ্রেডিং রয়েছে। আপনার আগ্রহী হলে এই সম্পর্কিত আরও তথ্যের জন্য ইন্টেল কোর ডেটাশিটটি দেখুন।
ব্রেকথ্রু

@ ব্র্যাকথ্রো এটি একটি ভাল টপোলজি হবে না কারণ এর অর্থ হ'ল একটি নিখুঁত ওএস যে কেবল 4 টি কোরকে সমর্থন করে কেবল শারীরিক কোরের অর্ধেক ব্যবহার করে শেষ হয়ে যাবে। যে কোনও শারীরিক কোর থেকে দ্বিতীয় ভার্চুয়াল কোর তালিকাভুক্ত হওয়ার আগে প্রতিটি শারীরিক কোর থেকে একটি ভার্চুয়াল কোর ভার্চুয়াল কোর তালিকায় উপস্থিত হওয়া উচিত।
ডেভিড শোয়ার্জ

@ ডেভিডশওয়ার্টজ ভাল টপোলজি বা না, লজিকাল প্রসেসরগুলি এভাবেই গণনা করা যায়। তাই প্রাথমিকভাবে ওএসগুলিতে হাইপারথ্রেডিং নিষ্ক্রিয় করার জন্য ব্যাপকভাবে সুপারিশ করা হয় (যেমন উইন্ডোজ 2000 এবং পূর্ববর্তী) যা এলপিগুলি বনাম শারীরিক সিপিইউ প্যাকেজগুলির তুলনায় কোরে সঠিকভাবে গণনা করে না।
জেমি হানরাহান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.