লিনাক্স কমান্ড ব্যবহার করে কীভাবে মেমরি ব্যবহার করা (র‌্যাম ব্যবহার করা হয়)?


30

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

ফোরামগুলি থেকে, আমি জানতে পারি যে সঠিক মেমরিটি নিম্নলিখিত থেকে পাওয়া যাবে:

free -m

ফলাফল:

-/+ buffers/cache:        492       1555

- / + বাফার / ক্যাশে: সঠিক মেমরির ব্যবহার রয়েছে। আমি জানি না কীভাবে এই তথ্যটি পার্স করবেন বা শতাংশে মেমরিটি ব্যবহার করার জন্য যদি কোনও আলাদা কমান্ড থাকে।


3
ইতিমধ্যে এখানে উত্তর দেওয়া হয়েছিল! stackoverflow.com/questions/10585978/... উদাহরণ: free | grep Mem | awk '{print $4/$2 * 100.0}'
szboardstretcher

@ এসবোর্ড স্ট্রেচার আমি এটি পছন্দ করি:$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
কেবল_আমি

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

উত্তর:


33

এখানে নিখরচায় নমুনা আউটপুট দেওয়া হচ্ছে:

% free
             total       used       free     shared    buffers     cached
Mem:      24683904   20746840    3937064     254920    1072508   13894892
-/+ buffers/cache:    5779440   18904464
Swap:      4194236        136    4194100

সংখ্যাগুলির প্রথম লাইন ( Mem:) তালিকা করে

  • total স্মৃতি
  • used স্মৃতি
  • free স্মৃতি
  • ব্যবহার shared
  • ব্যবহার buffers
  • ব্যবহার ফাইল সিস্টেম ক্যাশে ( cached)

এই লাইনে used বাফার এবং ক্যাশে এবং এই প্রভাবগুলি বিনামূল্যে অন্তর্ভুক্ত রয়েছে । এটি আপনার "সত্য" ফ্রি মেমরি নয় কারণ বরাদ্দকরণের অনুরোধগুলি সন্তুষ্ট করার জন্য সিস্টেম ক্যাশে ডাম্প করবে।

পরবর্তী লাইন ( -/+ buffers/cache:) আমাদেরকে আসল ব্যবহৃত এবং ফ্রি মেমরি দেয় যাতে মনে হয় কোনও বাফার বা ক্যাশে নেই।

চূড়ান্ত লাইন ( Swap) স্ব্যাপ মেমরির ব্যবহার দেয়। অদলবদলের জন্য কোনও বাফার বা ক্যাশে নেই কারণ এই জিনিসগুলিকে কোনও শারীরিক ডিস্কে রাখার অর্থ হবে না।

ব্যবহৃত মেমরি আউটপুট করতে (বিয়োগ বাফার এবং ক্যাশে) আপনি একটি কমান্ড ব্যবহার করতে পারেন:

% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521

এটি তৃতীয় লাইনটি ধরে এবং ব্যবহৃত / মোট * 100 ভাগ করে দেয়।

এবং বিনামূল্যে স্মৃতি জন্য:

% free | awk 'FNR == 3 {print $4/($3+$4)*100}' 
76.0657

1
"- / + বাফার / ক্যাশে: 5779440 18904464" সঠিক র‌্যাম ব্যবহার / সার্ভারের স্থিতি?
কোডেলগন

2
কঠোরভাবে বলছি, না, তবে কার্যত বলছি, হ্যাঁ। আসল মেমরির ব্যবহারটি ২ য় লাইন (ব্যবহৃত: 20746840) তবে সেই মেমরির ব্যবহারের অংশটি হল বাফার এবং ক্যাশে যা কেবলমাত্র আপনার সিস্টেমে প্রতিক্রিয়া বার দ্রুত করার জন্য। তৃতীয় লাইন (ব্যবহৃত: 5779440) আপনাকে প্রোগ্রাম দ্বারা প্রকৃতপক্ষে ব্যবহৃত মেমরির পরিমাণ দেয় এবং এটি এই মেমরি চিত্র যা আপনার প্রোগ্রামগুলি আরও কত বরাদ্দ করতে পারে তা নির্ধারণ করে। আপনার লক্ষ্যটি যদি কোন প্রোগ্রামগুলি প্রকৃতপক্ষে ব্যবহার করছে এবং আপনি আসলে কী বরাদ্দ করতে পারেন সেই অর্থে মুক্ত / ব্যবহৃত স্মৃতি পেতে হয় তবে হ্যাঁ, লাইন 3 আপনার জন্য সঠিক।
কেসি

1
নোট করুন যে আরও সাম্প্রতিক সংস্করণগুলির সাথে free, -/+ buffers/cacheইচ্ছাকৃতভাবে সম্পূর্ণরূপে বাদ দেওয়া হয়েছে এবং usedকলামে প্রদর্শিত মানটি এখন ডিফল্টরূপে বাফার এবং ক্যাশে বাদ দেয়। এখানে দেখুন: bugzilla.redhat.com/show_bug.cgi?id=1158828
jdgregson

10

freeকমান্ডের তথ্যগুলিকে কীভাবে পার্স করা যায় সে সম্পর্কে আমি উল্লেখ করতে যাচ্ছি । শতাংশ খুঁজে পেতে, আপনি অন্যান্য 2 টি উত্তর হিসাবে পরামর্শ হিসাবে ব্যবহার করতে পারেন।

এটি এখানে পরিষ্কারভাবে ব্যাখ্যা করা হয়েছে । আমার সিস্টেমে আমার যা আছে তা থেকে আমি ব্যাখ্যা করার চেষ্টা করব।

free -m
             total       used       free     shared    buffers     cached
Mem:          7869       4402       3466          0        208       3497
-/+ buffers/cache:        696       7173
Swap:         3999        216       3783

এখন আসুন দেখি বিভিন্ন সংখ্যা আসলে কী উপস্থাপন করে।

লাইন 1

  • 7869 আমার মেশিনের জন্য উপলব্ধ মেমরি / শারীরিক র‌্যাম ইঙ্গিত করে।
  • 4402 আমার সিস্টেম দ্বারা ব্যবহৃত মেমরি / র‌্যাম ইঙ্গিত করে।
  • 3466 মোট র‌্যাম বিনামূল্যে এবং নতুন প্রক্রিয়া চালনার জন্য উপলভ্য নির্দেশ করে।
  • 0 ভাগ করা মেমরি ইঙ্গিত করে। এই কলামটি অপ্রচলিত এবং ভবিষ্যতে বিনামূল্যে প্রকাশে মুছে ফেলা হতে পারে।
  • 208 লিনাক্সে বিভিন্ন অ্যাপ্লিকেশন দ্বারা মোট র‌্যামের ইঙ্গিত দেয়।
  • 3497 ভবিষ্যতের উদ্দেশ্যে ডেটা ক্যাচিংয়ের জন্য ব্যবহৃত মোট র‌্যাম ইঙ্গিত করে।

Line2

-/+ buffers/cache:        696       7173

লাইন 2 এ প্রাপ্ত 696 এবং 7173 মানগুলি কীভাবে গণনা করবেন?

মোট ব্যবহৃত ( 4402 ) - মোট বাফার র‌্যাম ( 208 ) - ক্যাচিংয়ের জন্য মোট র‌্যাম ( 3497 ) সিস্টেমে প্রকৃত ব্যবহৃত র‌্যাম গঠন করা উচিত । এটি আমাকে 697 প্রদান করে যা দ্বিতীয় লাইনে প্রকৃত ব্যবহৃত র্যাম আউটপুট।

এখন, মোট উপলব্ধ ( 69 7869৯ ) - প্রকৃত ব্যবহৃত ( 6৯6 ) আপনাকে বিনামূল্যে মেমরি দেয় যা এই ক্ষেত্রে 71১7373 যা দ্বিতীয় লাইনেও আউটপুট হিসাবে পাওয়া যায়।


6

একটি যদিও ডুপ্লিকেট @szboardstretcher দ্বারা সরু যেমন, সমাধান (মূল প্রশ্নে) থেকে আমার পক্ষপাত নিচে এক, বিশেষভাবে যেহেতু আপনি একটি ওয়েব পেজ থেকে বিশ্লেষণ করতে চাই।

$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'

আউটপুট:

used: 82.68%, buffers: 42.81%, swap: 1.27%

4
এফওয়াইআই আমি এটি ব্যবহার করে নিম্নলিখিতটি used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
পেয়েছি

পুরো কমান্ডটি কী ব্যবহার করা হয়েছে? আমি এটি সেন্টোতে পরীক্ষা করেছি।
কেবল_মে

বিন্যাসের জন্য দুঃখিত তবে আপনি এখানে যান$ cat /etc/issue CentOS release 6.7 (Final) $ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}' used: 12.91%, buffers: 96.24%awk: (FILENAME=- FNR=4) fatal: division by zero attempted $ free total used free shared buffers cached Mem: 15429704 1991416 13438288 164 151556 1259584 -/+ buffers/cache: 580276 14849428 Swap: 0 0 0
কেলিফিজ

Awk (mawk) এর কয়েকটি সংস্করণের জন্য, এটি মুদ্রণের জন্য শতাংশ চিহ্নটি দ্বিগুণ করা দরকার, অন্যথায় এডক এর মতো একটি ত্রুটি নিক্ষেপ করে: প্রিন্টফ ("ব্যবহৃত:% .0f %%"), $ 3 / $ 2 * 100 এটি দিয়ে কাজ করে মাক এবং গাওক উভয়ই
জান লালিনস্কি

2
free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%\n"), $3/$2*100}' 

অদলবদলের পরে একটি নতুন লাইন যুক্ত করে


1

CentOS 7 অবধি আপনি চেষ্টা করতে পারেন

cat /proc/meminfo 

প্রক্রিয়া দ্বারা মেমরির বাস্তব ব্যবহার দেখতে।

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