বিশেষত ওয়াল-ক্লক-টাইম, ইউজার-সিপিইউ-টাইম এবং ইউএনআইএক্স-এ সিপিইউ-টাইম কী?


144

আমি নামের উপর ভিত্তি করে একটি অনুমান নিতে পারি, তবে বিশেষত ওয়াল-ক্লক-টাইম, ইউজার-সিপিইউ-টাইম এবং ইউনিক্স-এ সিপিইউ-টাইম কী?

ইউজার-সিপিইউ সময় কী ব্যবহারকারীর কোড কার্যকর করতে ব্যয় করেছে যখন কার্নেল-সিপিইউ সময় সুবিধাপ্রাপ্ত ক্রিয়াকলাপের প্রয়োজনের কারণে কার্নেলে সময় ব্যয় করেছে (আইও থেকে ডিস্কের মতো)?

সময়ের কোন এককটি এই পরিমাপটি।

এবং প্রাচীর-ঘড়ির সময়টি কি আসলেই প্রসেসটি সিপিইউতে ব্যয় করেছে বা নামটি কি কেবল বিভ্রান্ত করছে?


উত্তর:


143

প্রাচীর-ঘড়ির সময় হ'ল সেই সময়টি যা প্রাচীরের একটি ঘড়ি (বা হাতে স্টপওয়াচ) প্রক্রিয়াটি শুরু করার সময় এবং 'এখন' এর মধ্যবর্তী সময় পেরিয়ে যায় measure

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

ইউনিটগুলি সেকেন্ডে (এবং সাবসেকেন্ডগুলি, যা মাইক্রোসেকেন্ড বা ন্যানোসেকেন্ড হতে পারে)।

প্রাচীর-ঘড়ির সময়টি সিপিইউতে প্রক্রিয়াটি ব্যয় করেছে এমন সেকেন্ডের সংখ্যা নয়; এটি সিপিইউতে তার পরিবর্তনের জন্য অপেক্ষা করতে থাকা সময় সহ অন্যান্য সময় অতিবাহিত হয় (যখন অন্যান্য প্রক্রিয়াগুলি চালিত হয়)।


16
তাহলে এর অর্থ কি এই যে প্রাচীর-ঘড়ির সময় সর্বদা সিপিইউ সময়ের চেয়ে বেশি থাকবে?
পেসারিয়ার

36
@ পেসারিয়র: একটি একক কোর মেশিনে, হ্যাঁ, তবে মাল্টি-কোর মেশিন এবং মাল্টি-থ্রেড প্রোগ্রামগুলি বিচ্ছিন্ন সেকেন্ডে 1 সিপিইউ সেকেন্ডের বেশি ব্যবহার করতে পারে।
জোনাথন লেফলার

@ জোনাথনলফলার উত্তরের জন্য আপনাকে ধন্যবাদ, আমি যে ন্যানোসেকেন্ডগুলি কেটে গেছে তার সংখ্যা পেতে চেয়েছিলাম তবে সূত্রটি ব্যবহার করে সিপিইউয়ের সময় CPUtime = #clock_cycles / clock_rateগণনা করা অতিবাহিত সময়ের গণনার সমান হতে পারে না। আপনি কি জানেন যে আমি সিপিইউ সময় থেকে অতিবাহিত সময় পেতে পারি?
Bionix1441

2
@ বায়োনিক্স ১৪৪৪: আপনি বেশ কয়েকটি কারণে সিপিইউ থেকে সময় কাটাতে পারবেন না। প্রথমত, কোনও প্রক্রিয়া অলস হতে পারে, যেকোন সিপিইউ সময় ব্যয় না করে, নির্বিচার সময়সীমার জন্য (উদাহরণস্বরূপ, একটি ডেমন প্রক্রিয়া কোনও ক্লায়েন্টের সাথে নেটওয়ার্কের সাথে এটি সংযোগ স্থাপনের জন্য অপেক্ষা করে), তাই এটি বিচ্ছিন্ন সময়কালে কয়েক দিন কিছুই করতে পারে না may । দ্বিতীয়ত, এটি চলমান থাকলে এটির একাধিক থ্রেড থাকতে পারে এবং যদি এটির বলে, 4 টি থ্রেড থাকে এবং সিস্টেমে 4 বা ততোধিক কোর থাকে তবে এটি ব্যয় হওয়া সময় প্রতি সেকেন্ডে 4 সিপিইউ সেকেন্ডে ব্যয় করা প্রচেষ্টা অর্জন করতে পারে। এগুলি দেখায় যে আপনি ব্যবহার করতে পারেন এমন কোনও সাধারণ (বা এমনকি জটিল) সূত্র নেই।
জোনাথন লেফলার

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

36

ওয়াল ঘড়ির সময়: কম্পিউটারের অভ্যন্তরীণ ঘড়ি অনুসারে সময় অতিবাহিত হয়েছিল, যা বাইরের বিশ্বের সময়ের সাথে মিলে যায়। সিপিইউ ব্যবহারের সাথে এর কোনও যোগসূত্র নেই; এটি রেফারেন্সের জন্য দেওয়া হয়েছে।

ব্যবহারকারী সিপিইউ সময় এবং সিস্টেম সময়: আপনি ঠিক কি মনে করেন। সিস্টেম কল, যা আমি অন্তর্ভুক্ত ইনপুট / আউটপুট কল যেমন read, writeইত্যাদি কার্নেল কোড এবং যে নির্বাহ মধ্যে জাম্পিং দ্বারা মৃত্যুদন্ড কার্যকর করা হয়।

যদি প্রাচীর ঘড়ির সময় <সিপিইউ সময় হয়, তবে আপনি সমান্তরালভাবে একটি প্রোগ্রাম চালাচ্ছেন। যদি প্রাচীর ঘড়ির সময়> সিপিইউ সময়, আপনি ডিস্ক, নেটওয়ার্ক বা অন্যান্য ডিভাইসের জন্য অপেক্ষা করছেন।

সমস্ত এসআই প্রতি সেকেন্ডে পরিমাপ করা হয় ।


7

ওয়াল ঘড়ির সময় ঠিক যা বলে তা হ'ল, আপনার দেওয়ালের ঘড়ির সাহায্যে সময় ব্যয় করা (বা কব্জি ঘড়ি)

ব্যবহারকারীর সিপিইউ সময় হ'ল "ব্যবহারকারী জমি" এর জন্য ব্যয় করা সময়, এটি নন-কার্নেল প্রক্রিয়াগুলিতে ব্যয় করা সময়

সিস্টেম সিপিইউ সময়টি কার্নেলে ব্যয় করা সময়, সাধারণত সার্ভিসিং সিস্টেম কলগুলির জন্য সময় ব্যয় করে।


7
time [WHAT-EVER-COMMAND]

real    7m2.444s
user    76m14.607s
sys 2m29.432s

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                24

বাস্তব বা প্রাচীর-ঘড়ি

বাস্তব 7m2.444s

24 কোর প্রসেসর সহ একটি সিস্টেমে, এই সেন্টিমিডি / প্রক্রিয়াটি সম্পূর্ণ হতে 7+ মিনিট সময় নেয়। এটি সমস্ত প্রদত্ত কোরগুলির সাথে সর্বাধিক সম্ভব সমান্তরালতা ব্যবহার করে।

ব্যবহারকারী

ব্যবহারকারী 76m14.607s

সিএমডি / প্রক্রিয়া এই পরিমাণ পরিমাণ সিপিইউ সময়কে কাজে লাগিয়েছে। অন্য কথায়, একক কোর সিপিইউযুক্ত মেশিনে, আসল এবং ব্যবহারকারী প্রায় সমান হবে, সুতরাং একই কমান্ডটি শেষ করতে ~ 76 মিনিট সময় নেবে।

sys

sys 2m29.432s

কনটেক্সট স্যুইচিং, রিসোর্স বরাদ্দ ইত্যাদিসহ এই সেন্টিমিডি চালানোর জন্য সমস্ত বেসিক / সিস্টেম স্তরের ক্রিয়াকলাপ সম্পাদন করতে কার্নেলের দ্বারা নেওয়া সময় is

দ্রষ্টব্য: উদাহরণটি ধরে নিয়েছে যে আপনার আদেশটি সমান্তরালতা / থ্রেড ব্যবহার করে।

বিশদ ম্যান পৃষ্ঠা: https://linux.die.net/man/1/time


আপনি যে বার পোস্ট করেছেন সেগুলি দেওয়া, প্রায় সমান্তরালতা অর্ধেক হয়ে যায়নি? (দর্শন লগ করা ঠিক করছেন (user + sys) / realযে প্রতিনিধিত্ব করতে।
DTC
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.