একটি 4 কোর 8 থ্রেড প্রসেসরে সিস্টেম লোডকে ব্যাখ্যা করার উপযুক্ত উপায়


13

যেমনটি আমরা সবাই জানি, একটি একক প্রসেসরে 1.00 এর লোডের অর্থ 100% লোড রয়েছে । অ্যানালগভাবে কোয়াড কোরের উপর একটি 4.00 লোড 100% হবে

4 কোর 8 থ্রেড প্রসেসরের লোডটিকে আমি কীভাবে ব্যাখ্যা করব? আমি কখন সিপিইউর সর্বাধিক সক্ষমতা অর্জন করব? এ 4.00 বা 8.00 ?

উত্তর:


17

নিশ্চয় নয়, কিন্তু বেশিরভাগই উপর 1.00*n_cpu

লোডটি নিম্নলিখিতটির অর্থ: একক সিপিইউ সিস্টেমে যদি একাধিক প্রক্রিয়া থাকে তবে তারা আপাতদৃষ্টিতে সমান্তরালভাবে চলমান। কিন্তু এটি সত্যি না। ব্যবহারিকভাবে যা ঘটে থাকে: কার্নেলটি কোনও প্রক্রিয়াতে 1/100 তম সেকেন্ড দেয় এবং তারপরে একটি বাধা দিয়ে তার চলমান বিরতি দেয়। এবং পরের 1/100 তমকে অন্য প্রক্রিয়া দেয়।

ব্যবহারিকভাবে প্রশ্নটি, "কোন প্রক্রিয়াটি আমাদের পরবর্তী 1/100 তম সেকেন্ড অন্তর পাওয়া উচিত?", একটি জটিল তাত্পর্যপূর্ণ সিদ্ধান্ত নেবে। এটি টাস্ক শিডিউলিং হিসাবে নামকরণ করা হয়েছে ।

অবশ্যই, যে প্রক্রিয়াগুলি অবরুদ্ধ রয়েছে, উদাহরণস্বরূপ তারা ডিস্ক থেকে তারা কী পড়ছে তা তাদের ডেটার জন্য অপেক্ষা করছে, এই কার্য শিডিউল থেকে অব্যাহতিপ্রাপ্ত।

লোড কী বলে: কতগুলি প্রক্রিয়া বর্তমানে তাদের পরবর্তী 1/100 তম দ্বিতীয়বারের ফ্রেমের জন্য অপেক্ষা করছে। অবশ্যই এটি একটি গড় মূল্য। এটি কারণ আপনি একটিতে একাধিক সংখ্যা দেখতে পারেন cat /proc/loadavg

মাল্টি সিপিইউ সিস্টেমে পরিস্থিতি কিছুটা জটিল। একাধিক সিপাস রয়েছে, যার টাইম ফ্রেম একাধিক প্রক্রিয়াতে দেওয়া যেতে পারে। এটি টাস্ককে কিছুটা সময় নির্ধারণ করে - তবে খুব বেশি নয় - জটিল। তবে পরিস্থিতি একই রকম।

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

আপনি যদি একটি দেখতে পান তবে দেখতে topপাবেন যে প্রকৃত চলমান প্রক্রিয়াগুলির সংখ্যা আশ্চর্যজনকভাবে কম: এগুলি Rসেখানে চিহ্নিত প্রক্রিয়া । এমনকি একটি সত্যিকারের হার্ড সিস্টেমে এটি প্রায়শই 5 এর নিচে থাকে This এটি আংশিক কারণ ডিস্কগুলি থেকে বা নেটওয়ার্ক থেকে তাদের ডেটার জন্য অপেক্ষা করা প্রক্রিয়াগুলিও স্থগিত করা হয় ( Sশীর্ষে চিহ্নিত )। লোডটি কেবল সিপিইউ ব্যবহার দেখায়।

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


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


মাল্টিকোর সিপিইউগুলি একই সিলিকন চিপে কার্যত একাধিক সিপিইউ থাকে। এখানে কোন পার্থক্য নেই.

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

তবে আমাদের বর্তমান দৃষ্টিকোণ থেকে - সিস্টেমের বোঝা কী নির্ধারণ করে - এটি তত গুরুত্বপূর্ণ নয়।


4

হাইপারথ্রেডিং আসলে ২ য় কোর না হওয়ায় এটি কখনই 200%-তে নেবে না তবে এটি নির্দিষ্ট কাজের চাপের জন্য 100% ছাড়িয়ে যাবে।

সুতরাং আপনার সর্বোচ্চ লোড প্রায় 4 এবং 6 এর মধ্যে কোথাও অজানা

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


4

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

ps -e vপ্রক্রিয়া রাষ্ট্রের পতাকাগুলি চালনা এবং সন্ধান করার চেষ্টা করুন ।

state    The state is given by a sequence of characters, for example, "RWNA". The      first character indicates the run state of the process:
D    Marks a process in disk (or other short term, uninterruptible) wait.
I    Marks a process that is idle (sleeping for longer than about 20 seconds).  
L    Marks a process that is waiting to acquire a lock.
R    Marks a runnable process.
S    Marks a process that is sleeping for less than about 20 seconds.
T    Marks a stopped process.
W    Marks an idle interrupt thread.
Z    Marks a dead process (a "zombie").

এটি psম্যানপেজ থেকে , সুতরাং আপনি সেখানে আরও বিশদ খুঁজে পাবেন - Rএবং Dপ্রক্রিয়াগুলি সম্ভবত বিশেষ আগ্রহী।

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


3

একটি লিনাক্স সিস্টেমে কেবল চালনযোগ্য ক্যুতে থাকা প্রক্রিয়াগুলি লোড গণনা করার জন্য গণনা করা হয় না তবে নিরবচ্ছিন্ন ঘুমের রাজ্যে উইকিপিডিয়াও থাকে , যখন ডিস্কের জন্য অপেক্ষা করার জন্য আপনার প্রচুর প্রক্রিয়া থাকে the


আমি জানতাম না, তা মনে রাখবে!
বার্তেক জাজাব্লোস্কি

2

আমি আমাদের 24-কোর Xeon সিস্টেমে (2 সকেট এক্স 12 কোর) কিছু পরীক্ষা-নিরীক্ষা করেছি। লিনাক্স হাইপারথ্রেডিং সেট আপ করার কারণে সর্বাধিক লোড 48.0 এই ক্ষেত্রে is

তবে, আপনি থ্রুটপুট এর 48 কোরের সমতুল্য পাবেন না। আমি যা পর্যবেক্ষণ করেছি তা হল প্রথম 24 লজিকাল প্রসেসরের মধ্যে আপনি 90% মাধ্যমে আউটপুট পাবেন, অর্থাত্ যদি লোডটি 24.0 এ চলে যায়। তারপরে আপনি বাকি 24 লজিকাল প্রসেসরের জন্য অতিরিক্ত 10% অতিরিক্ত থ্রুটপুট পাবেন (লোডটি 48.0 এ চলে)। এ সম্পর্কে চিন্তাভাবনার আরেকটি উপায় হ'ল আপনি যদি 24 টি কোরে 48 টি থ্রেড চালান, আপনি যদি হাইপারথ্রেডিং বনাম সক্ষম না করেন তবে আপনি প্রায় 10-20% এর উত্সাহ পাবেন। এটি 100% প্রচার নয় যে বিপণন লোকেরা বোঝাতে পারে।

উদাহরণস্বরূপ, এই পর্যবেক্ষণটি পরীক্ষার একটি উপায় হল একটি প্রক্রিয়া যা 48 টি থ্রেড চালায় (বলুন টিবিবি বা হ্যান্ড্রোলড থ্রেডিং মডেল ব্যবহার করে), তারপরে চালান

time numactl --physcpubind=0-23  ./myprocess

এবং তারপর চালান

time numactl --physcpubind=0-47  ./myprocess

পরেরটি প্রায় 10-20% কম সময়ে চালানো উচিত। যদি আপনার প্রক্রিয়াটি উচ্চ আই / ও অবরুদ্ধ থাকে তবে ফলাফলটি ভিন্ন might

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

উভয় ক্ষেত্রেই বোঝা 48.0 হিসাবে রিপোর্ট করা উচিত ... যা আপনি দেখতে পাচ্ছেন খুব বিভ্রান্তিকর।

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