আমি যখন 4 টি ভার্চুয়াল সিপিইউ পাই তখন আমি কীভাবে 1805 থ্রেড রাখতে পারি?


10

আমি ভাবছিলাম যে কেউ আমার কার্যকলাপ ক্রিয়াকলাপে কীভাবে এটি আমাকে ব্যাখ্যা করতে পারে তা বলছে যে আমার কাছে বর্তমানে 1805 থ্রেড রয়েছে ওএস এক্স অ্যাক্টিভিটি মনিটরের স্ক্রিন শট

তবে আমার কম্পিউটারে আমার কাছে কেবল 4 ভার্চুয়াল কোর রয়েছে (যার অর্থ আমি কেবল 4 টি থ্রেড রাখতে সক্ষম হব)। থ্রেড কাউন্টের অর্থ কি সিপিইউগুলি পরিচালনা করছে যে কোন থ্রেডটি কার্যকর করা উচিত?

সম্পাদনা: আমার মেশিনে কেবল 4 টি থ্রেড থাকতে পারে বলে আমি মনে করি এই কারণটি এই উত্তরটি থেকে আসে । আমি বিশ্বাস করি যে আমার ভুল বোঝাবুঝি 'থ্রেড' শব্দটি ভিন্ন প্রসঙ্গে ব্যবহৃত হচ্ছে ms


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
bmike

উত্তর:


24

পূর্বপরিকল্পনা

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

অপারেটিং সিস্টেমের একটি বড় দায়িত্ব (ডারউইন এবং ম্যাকোস) কোন থ্রেডটি কত দিন চালিত হবে তা নির্ধারণ করে।

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

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

আরও তথ্যের জন্য, মাল্টিথ্রেডিংয়ের জন্য উইকিপিডিয়া পৃষ্ঠাটি দেখুন ।

একযোগে বহু-থ্রেডিং

আপনার লিঙ্কিত প্রশ্ন হিসাবে থ্রেড এখানে সত্যিই একই।

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

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

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

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

সুতরাং সিপিইউ ফার্মওয়্যারের একটি বিকল্প রয়েছে যেখানে সিসাদমিন এসএমটি অক্ষম করার জন্য মেশিনে একটি সুইচ নিক্ষেপ করতে পারে যদি সে সিদ্ধান্ত নেয় তবে এটি তার ব্যবহারকারীদের এমন একটি অ্যাপ্লিকেশন চালিত করতে সুবিধা পাবে যা বিরতি দেওয়ার খুব কম সুযোগের সাথে অস্বাভাবিক সিপিইউযুক্ত bound

সেক্ষেত্রে আমরা আপনার আসল প্রশ্নে ফিরে আসি: এই বিশেষ পরিস্থিতিতে আপনি শারীরিক কোরের চেয়ে এই হাইপার-অ্যাক্টিভ থ্রেডগুলির আর কোনও না রাখার জন্য আপনি অবশ্যই ক্রিয়াকলাপগুলিকে সীমাবদ্ধ করতে চান। তবে আমার পুনরাবৃত্তি করা যাক: এটি একটি অত্যন্ত অস্বাভাবিক পরিস্থিতি যা বিশেষায়িত বৈজ্ঞানিক ডেটা ক্রাঞ্চিং প্রকল্পের মতো ঘটতে পারে তবে সাধারণ ব্যবসা / কর্পোরেট / এন্টারপ্রাইজ দৃশ্যে প্রায় কখনও প্রয়োগ হয় না।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
bmike

এছাড়াও, কেউ yield()তাদের সিপিইউ নিবিড় থ্রেডগুলিতে সিস্টেম কল দেয় না (যদি না এটি ক্লাসিক ম্যাকোএসে কো-অপারেটিভ মাল্টি-টাস্কিংয়ের উত্তরাধিকার কোড)। কোনও থ্রেড তার টাইমলাইসটি ব্যবহার করার পরে প্রাক-অ্যাক্টিভাল মাল্টি-টাস্কিং পুনঃনির্ধারণগুলি।
পিটার কর্ডেস

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

en.wikedia.org/wiki/Hyper-threading এর একটি চিত্র রয়েছে। জেনেরিক en.wikedia.org/wiki/Simultaneous_multithreading
পিটার কর্ডেস

7

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

এখানে চিত্র বর্ণনা লিখুন

এখন - টাইমিংয়ের পার্থক্যের বিশালতার কারণে - স্টোরেজ বা নেটওয়ার্ক থেকে ডেটা পাওয়ার তুলনায় সিপিইউ এবং ক্যাশে এত দ্রুত কাজ করে - যে হাজার থ্রেড আসতে এবং যেতে পারে যখন একটি থ্রেড www.google.com এ পৌঁছানোর অপেক্ষায় ছিল প্যাকেট বা দুটি ডেটা তাই এই কারণেই আপনি আসল সিপিইউর চেয়ে অনেক বেশি থ্রেড দেখতে পান।

যদি আপনি থ্রেড ক্রিয়াকলাপগুলিকে কালো / নীল সময় স্কেলে রূপান্তর করেন এবং সেগুলিকে এক সেকেন্ড = 1 এনএস এ রূপান্তর করেন তবে আমাদের যে বিষয়গুলি যত্নশীল তা ডিস্কের মতো হয় 100 টি মাইক্রোসেকেন্ডগুলি 4 দিনের মতো হয় এবং 200 এমএসের ইন্টারনেট রাউন্ড ট্রিপ হয় আপনি সিপিইউ সময় স্কেলে কয়েক সেকেন্ড গণনা করা হলে 20 বছরের বিলম্ব। দশটি অনুশীলনের অনেকগুলি শক্তির মতো , প্রায় সব ক্ষেত্রেই - সিপিইউ "মাস" ধরে অলস বসে থাকে খুব, খুব ধীর বাইরের বিশ্ব থেকে অর্থবহ কাজের জন্য অপেক্ষা করে।

আপনি যে চিত্রটি পোস্ট করেছেন তাতে কিছুই আপত্তিজনক বলে মনে হচ্ছে না তাই সম্ভবত থ্রেড সম্পর্কে ভেবে আমরা কী লাভ তা আমরা ভুল বুঝাব।

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


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
bmike

1

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

একসময় (1950 – '60 এর দশকে ভাবেন) কম্পিউটারগুলি একবারে কেবল একটি কাজ করতে পারে। এগুলি খুব ব্যয়বহুল, পুরো ঘরগুলি ছিল এবং একাধিক লোকের মধ্যে ভাগ করে তাদের কার্যকর ব্যবহার করার জন্য আমাদের একটি উপায়ের প্রয়োজন ছিল। এটি করার প্রথম উপায়টি ছিল ব্যাচ প্রসেসিং , যার মধ্যে ব্যবহারকারীরা কম্পিউটারে কাজগুলি জমা দেবে এবং সেগুলি সারিবদ্ধভাবে স্থাপন করা হবে, একের পর এক মৃত্যুদন্ড কার্যকর করা হবে এবং ফলাফলগুলি ব্যবহারকারীকে ফেরত পাঠানো হবে। এটি ঠিক ছিল তবে এর অর্থ এই ছিল যে আপনি যদি একটি গণনা করতে চান যা বেশ কয়েক দিন সময় লাগছিল, অন্য কেউ সেই সময়ের মধ্যে কম্পিউটারটি ব্যবহার করতে পারত না।

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

এগুলি সবই ছিল বিশাল মেইনফ্রেম স্টাইলের কম্পিউটারগুলির জন্য। যখন ব্যক্তিগত কম্পিউটারগুলি জনপ্রিয় হতে শুরু করেছিল, তারা প্রাথমিকভাবে খুব শক্তিশালী ছিল না এবং আরে, যেহেতু তারা ব্যক্তিগত ছিল তাদের পক্ষে কেবল একটি জিনিস & nbdp; - একবার অ্যাপ্লিকেশন চালানো - একবারে (ভেবে দেখুন, 1980) করা সম্ভব হবে বলে মনে হয়েছিল OK তবে, যেহেতু তারা আরও শক্তিশালী হয়ে উঠেছে (1990 এর দশকের উপস্থাপনাটি ভাবেন), লোকেরা তাদের ব্যক্তিগত কম্পিউটারগুলিও সময় ভাগ করে নেওয়ার জন্য চায়।

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

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.