"শীর্ষ" আউটপুটটিতে কীভাবে "লোড গড়" ব্যাখ্যা করা হয়? এটি কি সমস্ত বিতরণের জন্য একই?


12

আমি জানতে চাই যে কোনও রেড-হ্যাট ভিত্তিক লিনাক্সের আউটপুটটি ডেবিয়ান ভিত্তিক লিনাক্স দ্বারা আলাদাভাবে ব্যাখ্যা করা যেতে পারে।

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

[এই বিষয়ে যোগাযোগের অনেকগুলি উপায় রয়েছে, সেগুলির সমস্তই প্রশ্নের গ্রহণযোগ্য উত্তর]

একটি সম্ভাব্য পন্থা হ'ল এই তথ্যটি কোথায় সরকারীভাবে নথিভুক্ত হয়েছে তা সন্ধান করা।
আর একটি, কোড সংস্করণটি topসুনির্দিষ্টভাবে বিতরণ এবং যে সংস্করণে আমি কাজ করছি তাতে তৈরি করা হবে is

আমি যে কমান্ড আউটপুট পাচ্ছি তা হ'ল:

    top - 13:08:34 up  1:19,  2 users,  load average: 0.02, 0.00, 0.00
    Tasks: 183 total,   1 running, 182 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.2%us,  0.2%sy,  0.0%ni, 96.8%id,  2.7%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   3922520k total,   788956k used,  3133564k free,   120720k buffers
    Swap:  2097148k total,        0k used,  2097148k free,   344216k cached


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

1) প্রথম এক তারা সঙ্গে

    TOP(1)                        Linux User’s Manual                       TOP(1)

    NAME
           top - display Linux tasks

উত্স: man topআমার রেডহ্যাট বিতরণে
উবুন্টুতে "টাস্ক" সহ এমন সংস্করণ রয়েছে যা এখানে লোড গড়ের ব্যাখ্যা দেয় না:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html

2) দ্বিতীয়টি দিয়ে শুরু হয়

    TOP(1)                          User Commands                         TOP(1)

   NAME         top

   top - display Linux processes

সূত্র:
http://man7.org/linux/man-pages/man1/top.1.htm

3) এটি দিয়ে শুরু হয়:

   TOP(1)

   NAME

   top - display and update information about the top cpu processes

উত্স: http://www.unixtop.org/man.shtml প্রথম এক, দ্বারা দেখা যায় যে বা এবং এটি আউটপুট বিন্যাসের কোনো ব্যাখ্যা নেই (কিংবা সম্পর্কে লোড গড় যা আমি আগ্রহী) । দ্বিতীয় এক, একটি সংক্ষিপ্ত ব্যাখ্যা, ইশারা লোড গড় গত 1 মিনিট কি আছে যে রয়েছে, কিন্তু এর মান ব্যাখ্যা সম্পর্কে কিছুই!

man topRHELonline ubuntu documentation


আমি সরাসরি দ্বিতীয় উত্স থেকে উদ্ধৃতি:

2A। ইউপিটাইম এবং লোড গড়
এই অংশটিতে একটি একক লাইন রয়েছে:
প্রোগ্রাম বা উইন্ডো নাম, যা ডিসপ্লে মোডের
বর্তমান সময় এবং সময়ের দৈর্ঘ্যের উপর নির্ভর করে সর্বশেষ বুট থেকে
মোট 1 ব্যবহারকারী, সংখ্যা
1 মিনিটের মধ্যে সিস্টেমের লোড গড়

সুতরাং, যদি এই ব্যাখ্যাটি সত্যই সঠিক হয় তবে এটি বোঝার জন্য যথেষ্ট যে লোড গড়টি প্রায় 1 মিনিটের মতো।
তবে এটি সংখ্যার ফর্ম্যাটটি ব্যাখ্যা করে না।

ইন তৃতীয় ব্যাখ্যা, এটা বলে যে:

লোড গড়ের জন্য সংখ্যা নির্দিষ্ট করার সময় সেগুলি 100 দ্বারা গুণিত করা উচিত।

এই ব্যাখ্যা থেকে জানা যায় যে 0.02 এর অর্থ 2% এবং 0.02% নয়। তবে এটা কি সঠিক? তদ্ব্যতীত, লিনাক্সের সমস্ত বিতরণ এবং সম্ভাব্যভাবে বিভিন্ন বাস্তবায়নের জন্য এটি সঠিক top?
এই প্রশ্নের উত্তর খুঁজে পেতে, আমি কোডটি অনলাইনে অনুসন্ধান করেই চেষ্টা করেছিলাম। তবে আমি খুঁজে পেয়েছি, কমপক্ষে, topআরএইচইএল সম্পর্কিত দুটি ভিন্ন সংস্করণ খুঁজে পেয়েছি ! builtin-top.cএবং রি-ফ্যাক্টর top.c। কোডের শুরুর দিকে নোটিশটি যেমন রেড-হ্যাট দ্বারা কপিরাইটযুক্ত উভয়ই এইভাবে যৌক্তিক বলে মনে হয় যে আরএইচইএল এর মধ্যে একটি ব্যবহার করে।
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c

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

নীচের উত্তরে প্রদত্ত তথ্য থেকে, কিছু ব্যক্তিগত অনুসন্ধানের পাশাপাশি আমি সন্ধান করেছি যে:

1 - topআমি যেটি ব্যবহার করছি তা প্যাকেজ প্রোপস -৩.২.৮ এ অন্তর্ভুক্ত রয়েছে। যা ব্যবহার করে যাচাই করা যেতে পারে top -v
2 - procps-3.2.8যে সংস্করণটি আমি অফিসিয়াল ওয়েবসাইট থেকে ডাউনলোড করেছি তাতে মনে হয় যে সরঞ্জামটি ফাইল uptimeথেকে সরাসরি তার তথ্য পেয়ে থাকে (লিনাক্স ফাংশনটি ব্যবহার না করে )। 3 - এখন কমান্ডের জন্য এটি ফাংশনটিও ব্যবহার করে না । আমি যাচাই করতে পেরেছি যে প্রকৃতপক্ষে সেই একই জিনিসগুলি করেprocfs/proc/loadavggetloadavg()
topgetloadavg()topuptimeলোড গড় দেখানোর সরঞ্জাম। এটি আসলে uptimeসরঞ্জামটির ফাংশনটিকে কল করে , যা procfsফাইল থেকে তার তথ্য পায় /proc/loadavg

সুতরাং, সবকিছু /proc/loadavgফাইলকে নির্দেশ করে! সুতরাং, load averageউত্পাদিত দ্বারা উত্পাদিত সম্পর্কে সঠিক ধারণা গঠনের topজন্য, ফাইলটি loadavgকীভাবে লেখা আছে তা দেখতে কার্নেল কোডটি পড়তে হবে ।
উত্তরগুলির মধ্যে একটিতে নির্দেশিত একটি দুর্দান্ত নিবন্ধও রয়েছে যা এর তিনটি মান সম্পর্কে একটি সাধারণ ব্যক্তির শর্তাদি ব্যাখ্যা সরবরাহ করে loadavg
সুতরাং, সমস্ত উত্তর সমানভাবে কার্যকর এবং সহায়ক হয়েছে তা সত্ত্বেও, আমি যে প্রশ্নটি আমার প্রশ্নের উত্তর হিসাবে " http: //www.linuxj Journal.com//article/9001 " এ নির্দেশ করেছেন সেটিকে আমি চিহ্নিত করতে যাচ্ছি । আপনার অবদানের জন্য সবাইকে ধন্যবাদ!

শীর্ষস্থানীয় ও লোড গড় বোঝার প্রশ্নটি থেকে অতিরিক্ত , আমি কার্নেলের উত্স কোডের একটি লিঙ্ক পেয়েছি যা সেই স্থানটিকে নির্দেশ করে যেখানে loadavgগণনা করা হয়। এটি যেভাবে কাজ করে তার ব্যাখ্যা করার জন্য একটি বিশাল মন্তব্য রয়েছে বলে মনে হচ্ছে, কোডের এই অংশটিও রয়েছে C! কোডটির
লিঙ্কটি হ'ল http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
আবার আমি কোন ধরণের চৌর্যবৃত্তিতে জড়িত হওয়ার চেষ্টা করছি না, আমি কেবল এটি সম্পূর্ণতার জন্য যুক্ত করছি। সুতরাং, আমি পুনরাবৃত্তি করছি যে কর্নেল কোডের লিঙ্কটি বোঝার শীর্ষ এবং লোড গড়ের বোঝার কোনও উত্তর থেকে পাওয়া গেছে ...


সংস্করণগুলি আপনাকে কী বলে? ( top -v)
ফিক্সিম্যান

শীর্ষ: প্রোপস সংস্করণ 3.2.8
অ্যাঞ্জেলস অ্যাসোনাইটিস

উত্তর:


19

সিপিইউ লোডটি রান কাতারের দৈর্ঘ্য, অর্থাৎ রান করার অপেক্ষায় থাকা প্রসেসের সারির দৈর্ঘ্য।

uptimeকমান্ড গড় ঠিক কি সাধারণত দ্বারা প্রদর্শিত মত শেষ মিনিটে উপর চালানো কিউ দৈর্ঘ্য, গত পাঁচ মিনিট, এবং শেষ 15 মিনিট দেখতে ব্যবহার করা যেতে পারে top

একটি উচ্চ লোড মান মানে রান সারি দীর্ঘ। স্বল্পমূল্যের অর্থ এটি সংক্ষিপ্ত। সুতরাং, যদি এক মিনিটের লোড গড় 0.05 হয়, তার মানে এই যে মিনিটের সময়কালে, রান কাতারে চালানোর জন্য অপেক্ষা করা 0.05 প্রক্রিয়া ছিল। এটি শতাংশ নয়। এটি, আফাইক, সমস্ত ইউনিসে একই (যদিও কিছু ইউনিসিস I / O এর অপেক্ষার প্রসেস গণনা করতে পারে না, যা আমি মনে করি লিনাক্স করে; ওপেনবিএসডি, কিছুক্ষণের জন্য, কার্নেল থ্রেডও গণনা করে, যাতে লোড সর্বদা 1 বা 1 ছিল আরো)।

লিনাক্স topইউটিলিটি কার্নেল থেকে লোড মান পায় যা এগুলিতে লিখে /proc/loadavg। সূত্রগুলির দিকে তাকিয়ে procps-3.2.8আমরা দেখতে পাই যে:

  1. লোড গড় প্রদর্শনের জন্য, sprint_uptime()ফাংশনটি ডাকা হয় top.c
  2. এই ফাংশনটি বাস করে proc/whattime.cএবং কল loadavg()করে proc/sysinfo.c
  3. এই ফাংশনটি সহজভাবে LOADAVG_FILEলোড গড় পড়তে খোলে ।
  4. LOADAVG_FILEহিসাবে আগে সংজ্ঞায়িত করা হয় "/proc/loadavg"

আপনার উত্তরের জন্য আপনাকে অনেক ধন্যবাদ, এটি কি কোথাও অফিসিয়ালি ডকুমেন্টেড?
অ্যাঞ্জেলোস অ্যাসোনাইটিস

1
@ অ্যাজেলোস অ্যাসোনাইটিস 2006 এর এই লিনাক্স জার্নাল নিবন্ধটি আকর্ষণীয় হতে পারে। এটি লিনাক্স কার্নেল উত্স বৃক্ষের কয়েকটি উত্স ফাইলগুলিকে নির্দেশ করে যা আপনি দেখতে চাইতে পারেন। আমি কোনও লিনাক্স ব্যবহারকারী নই, তাই কার্নেলের সর্বশেষতম অবতারে এই ফাইলগুলি এখনও আছে কিনা তা আমি বলতে পারি না: linuxj Journal.com/article/9001
কুসালানন্দ

সত্যিই আকর্ষণীয় নিবন্ধ! আমি কেবল প্রোপস প্যাকেজটি খতিয়ে দেখছি প্রকৃতপক্ষে শীর্ষ কমান্ডটি / proc / loadavg ফাইল থেকে তার মান গ্রহণ করে এবং যদি এটি getloadavg () ফাংশনের ফলাফল হিসাবে একই হয়।
অ্যাঞ্জেলস অ্যাসোনাইটিস

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

সুতরাং, আমি যা জড়ো করি সেগুলি থেকে কার্নেল উত্স ছাড়া অন্য এই মানগুলির গঠন বোঝার জন্য কোনও অফিসিয়াল ডকুমেন্টেশন নেই, এটি কি সঠিক? সেখানে যাওয়ার আগে, তবুও আমাকে topপ্রোকফস ফাইল লোডভগের কাছে উপস্থাপিত মানটি বাঁধতে হবে ...
অ্যাঞ্জেলস অ্যাসোনাইটিস

7

লোড গড় সাধারণত কর্নেল দ্বারা গণনা করা হয়। অ্যাপ্লিকেশন যেমন topএবং এটি অ্যাক্সেসের জন্য লাইব্রেরি কলটি uptimeব্যবহার করতে পারে getloadavg(3)(এটি বিভিন্ন ইউনিক্স সংস্করণে বহনযোগ্য বলে বোঝানো হয়েছে)। লিনাক্স এ সাধারণত পড়া থেকে ফলাফল /proc/loadavg। ফ্রিবিএসডি-তে এটি একটি সিস্টেম কল।

উদাহরণ স্বরূপ:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
  double ld[3];

  int i=getloadavg(ld,3);
  printf("Load %.2f %.2f %.2f\n",ld[0],ld[1],ld[2]);
}

uptimeএবং topউভয়ই তাদের ডেটা পেতে অনুরূপ কল করে।

এখন 1/5/15 মিনিটের লোড গড় রান কাতারে থাকা প্রক্রিয়াগুলির সংখ্যা। বিভিন্ন অপারেটিং সিস্টেমগুলি এটি বিভিন্ন উপায়ে গণনা করতে পারে; সাধারণত সবচেয়ে বড় পার্থক্য হ'ল I / O (যেমন ডিস্কে অবরুদ্ধ) অপেক্ষার প্রসেসগুলি রানযোগ্য হিসাবে গণনা করা হয়। লিনাক্স এ তারা।

সুতরাং 3.4 এর লোড গড়ের অর্থ নমুনা উইন্ডোর (1, 5, 15 মিনিট) মধ্যে রান কাতারে গড়ে গড়ে 3.4 টি প্রক্রিয়া ছিল।

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


4

লোড এভারেজ এমন কোনও জিনিস নয় যা কোনও নির্দিষ্ট সরঞ্জাম বা বিতরণের জন্য সুনির্দিষ্ট নয়, এটি কার্নেল দ্বারা সরবরাহ করা একটি পরিমাপ বা আরও স্পষ্টতই, শিডিয়ুলার, সুতরাং এটি একটি বিতরণ স্বাধীন পরিমাপ। পরিমাপটি ফাইলের সিস্টেমের ভিতরে রেকর্ড করা হয়/proc

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

নিম্নলিখিত দুটি ম্যান পৃষ্ঠা পরীক্ষা করে দেখুন: getloadavg(3)এবং uptimeআরও তথ্যের জন্য।

লোড গড় মেট্রিক প্রথমে বোঝা একটি কঠিন ধারণা হতে পারে, আমি অনেক লোক মনে করি এটি সিপিইউ কতটা কঠোরভাবে কাজ করছে তার একটি ইঙ্গিত, তবে এটি আসলে তা নয়।


1
ঠিক আছে, তবে আমরা কি নিশ্চিত যে getloadavg()ফাংশন বিবরণে বর্ণিত লোড গড়, topরেলের কমান্ডটি একই লোড গড়কে দেখায়? আমি এটি জিজ্ঞাসা করছি কারণ আমি প্যাকেজ প্রোপস -৩.২.৮ (যা কমান্ড দ্বারা নির্দেশিত top -v) এর আন-টারার্ড সামগ্রীতে একটি সম্পূর্ণ পাঠ্য অনুসন্ধান সম্পাদন করেছিলাম এবং গেটলোডাভগ () ফাংশনটির একটি উল্লেখ নেই! সুতরাং, সম্ভবত শীর্ষে লোড
গড়কে অন্যভাবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.