গবেষণা করার পরেও র‌্যাম ব্যবহারের উপর নজরদারি সম্পর্কে বিভ্রান্ত


10

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

আমি যখন প্রথম লগইন করি তখন আমাকে এই জাতীয় পর্দা দিয়ে অভ্যর্থনা জানানো হয়:

  System information as of Sun Apr 28 21:46:58 UTC 2013

  System load:  0.0               Processes:           76
  Usage of /:   15.6% of 7.87GB   Users logged in:     1
  Memory usage: 41%               IP address for eth0: 
  Swap usage:   0%

এটি আমাকে পরামর্শ দেয় যে আমি আমার র‌্যামের ৪১% ব্যবহার করছি, যা সার্ভারটি তেমন কিছু করছে না বলে বেশ উচ্চ বলে মনে হচ্ছে। বা এই সংখ্যাটি কি র‌্যামের পাশাপাশি কিছু উল্লেখ করে?

পরবর্তী আমি free -mপদ্ধতিটি চেষ্টা করি :

ubuntu@ip-:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           590        513         76          0         67        315
-/+ buffers/cache:        130        459
Swap:            0          0          0

নিবন্ধের ব্যাখ্যামূলক গ্রাফিক অনুযায়ী, এর থেকে বোঝা যায় যে আমার কাছে ব্যবহৃত ব্যবহৃত র‌্যামের ১৩০ এমবি এবং ফ্রি র‌্যামের ৪৫৯ এমবি রয়েছে, যা বোঝায় যে আমি আমার র‌্যামের প্রায় ২২% ব্যবহার করছি।

পরবর্তী আমি চালান top:

top - 22:14:48 up 195 days, 21:30,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  77 total,   1 running,  76 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.3%us,  0.3%sy,  0.0%ni, 97.7%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    604376k total,   525692k used,    78684k free,    69124k buffers
Swap:        0k total,        0k used,        0k free,   322740k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
    1 root      20   0 24332 1864  976 S  0.0  0.3   0:08.75 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd     

এটি সবচেয়ে বিভ্রান্তিকর, কারণ সংক্ষিপ্তরটি আমাকে মোট 4০৪ এমএম এর 525 এমজি ব্যবহার করে দেখায় এবং এখনও যখন "এম" ইন্টারেক্টিভ কমান্ডটি শীর্ষ মেমরির দ্বারা বাছাই করা হয় শীর্ষ প্রক্রিয়াটি কেবল মেমরির 0.3% ব্যবহার করে ???

অবশেষে, psকমান্ডটি খুব কম মেমরির ব্যবহারও দেখায় বলে মনে হচ্ছে:

root@ip-:/home/ubuntu# ps -o command,rss
COMMAND                       RSS
ps -o command,rss             788
sudo su root                 1764
su root                      1404
bash                         2132

আমি কারও পক্ষে আমার কাছে যে কোনও ভুল বোঝাবুঝি রয়েছে যা এই স্পষ্ট দ্বন্দ্ব তৈরি করছে তা সংশোধন করতে চাই।

ধন্যবাদ!

রাহুলের জন্য ইডিআইটি

এর বাইরে cat /proc/meminfo:

MemTotal:         604376 kB
MemFree:          157564 kB
Buffers:           49640 kB
Cached:           231376 kB
SwapCached:            0 kB
Active:           290040 kB
Inactive:          97772 kB
Active(anon):     107672 kB
Inactive(anon):     4844 kB
Active(file):     182368 kB
Inactive(file):    92928 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                52 kB
Writeback:             0 kB
AnonPages:        106836 kB
Mapped:            22920 kB
Shmem:              5712 kB
Slab:              42032 kB
SReclaimable:      34016 kB
SUnreclaim:         8016 kB
KernelStack:         688 kB
PageTables:         3584 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      302188 kB
Committed_AS:     242768 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7152 kB
VmallocChunk:   34359729008 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      637952 kB
DirectMap2M:           0 kB

# 1) মেমরি এটি অনুসারে বাছাইয়ের জন্য উপরে কমান্ড নয় মি , এটা এম । # 2) সমস্ত প্রক্রিয়া দেখতে ** ps ax -o কমান্ড, আরএসএস ** চেষ্টা করুন; আপনি যা দৌড়েছিলেন তা কেবল নিজের নিজস্ব দেখায়।
Tink

দয়া করে আমাদের আউটপুটও আপডেট করুনcat /proc/meminfo
রাহুল পাতিল


@ টিঙ্ক, এই ব্যাখ্যার জন্য ধন্যবাদ। আমি ps ax -o rss | awk '{ sum+=$1} END {print sum}'এখনই চেষ্টা করেছি এবং 153156.
জোনাহ

@ রাহুলপাতিল, ওপি আপডেট হয়েছে। নোট করুন যে প্রক্রিয়াগুলি চলমানগুলি মূল সংখ্যা থেকে কিছুটা আলাদা হতে পারে তবে এটি খুব বেশি দূরে হওয়া উচিত নয়। এছাড়াও, আমি আপনার জন্য যে ফলাফল পেয়েছি তা উপরের মন্তব্যে টিঙ্কের জন্য যে ফলাফলটি পেয়েছে তার সাথে মেলে না বলে মনে হচ্ছে। এগুলি মাত্র কয়েক মিনিট দূরে নেওয়া হয়েছিল।
জোনাহ

উত্তর:


8

আপনার কেবল স্মৃতি ধারণাটি বুঝতে হবে

আপনার / আউটপুট / মেমিনফোর আউটপুট অনুসারে আপনাকে কেবল নীচের জিনিসগুলি লক্ষ্য করতে হবে:

বাফারস : - একটি বাফার এমন একটি জিনিস যা এখনও ডিস্কে "লিখিত" হয়ে যায়। এটি ক্যাচ ডিস্ক ব্লকে কতটা র‌্যাম নিবেদিত তা প্রতিনিধিত্ব করে। "ক্যাশেড" "বাফার্স" এর মতো, কেবলমাত্র এটিই এখন ফাইল পড়ার পৃষ্ঠাগুলি ক্যাশে করে

ক্যাশেড : - একটি ক্যাশে এমন কিছু যা ডিস্ক থেকে "পড়তে" এবং পরে ব্যবহারের জন্য সংরক্ষণ করা হয়। সাধারণত, আপনি ক্যাশে অঞ্চলটিকে অন্য একটি "ফ্রি" র্যাম হিসাবে বিবেচনা করতে পারেন কারণ অ্যাপ্লিকেশনটি আরও মেমরির দাবি করলে ধীরে ধীরে সঙ্কুচিত হবে।

এটি বোঝার জন্য যথেষ্ট যে "বাফার" এবং "ক্যাশেড" উভয়ই সিস্টেম ক্যাশের আকারকে উপস্থাপন করে। অভ্যন্তরীণ লিনাক্স কার্নেল ব্যবস্থার অনুরোধ অনুসারে এগুলি গতিশীলভাবে বৃদ্ধি এবং সঙ্কুচিত হয়।

ওয়েবহোস্টিং এ তারা সিএমডি নীচে ব্যবহার করে ক্যাশে পরিষ্কার করে: (বেশিরভাগ ক্রোনে কনফিগার করা থাকে):

sync && echo 3 > /proc/sys/vm/drop_caches

উদ্ধৃতি লিঙ্ক

আরও একটি প্রয়োজন অর্থাত্ প্রতি ব্যবহারকারী মেমরির ব্যবহারের জন্য সম্পাদনা করুন

#!/bin/bash
total_mem=0

printf "%-10s%-10s\n" User MemUsage

while read u m
do
        [[ $old_user != $u ]] && { printf "%-10s%-0.1f\n" $old_user $total_mem; total_mem=0; }
        total_mem=$(echo $m + $total_mem | bc);
        old_user=$u

done < <(ps --no-headers -eo user,%mem| sort -k1)

#--EOF

উপরের স্ক্রিপ্টটি পরীক্ষা করে দেখুন এবং তা সঠিকভাবে প্রদর্শিত হচ্ছে কিনা তা আমাকে জানান।


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

@ জোনাঃ আমি আপডেট করেছি .. দয়া করে চেক করুন এবং আমাকে জানান
রাহুল পাতিল

সেই স্ক্রিপ্টটি প্রত্যাশার মতো কাজ করছে না .. তবে আমি চেষ্টা করছি খুব শীঘ্রই আপডেট হবে
রাহুল পাতিল

@ জোনাহ আমার উত্তরগুলি গ্রহণ করার জন্য ধন্যবাদ .. তবে মাইকেলহ্যাম্পটনের জন্য সত্যিকারের ধন্যবাদ ...
রাহুল পাতিল

2

উত্তরের উত্তর @ রাহুলপাতিল।

পিএস বা উপরের বিষয়ে বিবেচনা করার আরেকটি বিষয় নিম্নরূপ

এই সরঞ্জামটি [এক্সম্যাপ] পিএস বা শীর্ষের চেয়ে আরও নির্ভুল কারণ এটি একাধিক অ্যাপ্লিকেশন দ্বারা ব্যবহৃত শেয়ারড লাইব্রেরিগুলিকে অ্যাকাউন্টে নেয়। উদাহরণস্বরূপ, যদি দুটি অ্যাপ্লিকেশন একই ভাগ করা লাইব্রেরি ব্যবহার করে, যা 1MB মেমরি গ্রহণ করে, পিএস উভয় অ্যাপ্লিকেশনকে 1MB অতিরিক্ত মেমরি ব্যবহার করে দেখায়, অন্যদিকে এক্সপ্যাম আরও সঠিকভাবে প্রতিটি অ্যাপ্লিকেশন 500 কেবি ব্যবহার করে দেখায়। এই বৃহত্তর যথার্থতা ডেস্কটপ এনভায়রনমেন্ট যেমন যেমন কেডি এবং জিনোমের মূল্যায়ন করার জন্য গুরুত্বপূর্ণ, যা অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করে নেওয়া লাইব্রেরিগুলির খুব ভারী ব্যবহার করে।

এর মাধ্যমে আইবিএম / developerworks / linux_memory

যেহেতু আপনার প্রশ্নটি শিরোনামহীন সার্ভারকে বোঝায় - আমি নিশ্চিত নই যে ডাবল রিপোর্টিং শীর্ষে বা পিএস আসলে কত হবে।


0

আমি আশঙ্কা করি যে আমরা সম্ভবত স্পষ্টতাকে উপেক্ষা করবো কারণ এটি আমাদের বেশিরভাগ ক্ষেত্রে "অবশ্যই" এটি একটি "অবশ্যই"।

জোনাহ, আমি ভুল হলে আমাকে ক্ষমা করুন, তবে আপনার প্রশ্নগুলি এমন মনে হচ্ছে যা আপনি বুঝতে পারেন নি যে এই সমস্ত মানগুলি, বিশেষত সিপিইউ ব্যবহার, সাধারণত দ্বিতীয় থেকে দ্বিতীয় হয়ে যায় vary

নতুন প্রক্রিয়া শুরু হওয়ার সাথে সাথে সিপিইউ ব্যবহার তত্ক্ষণাত একক অঙ্ক থেকে 100% এ যেতে পারে তবে দ্রুত (আশা করা যায়) সাব -50% পরিসরে ফিরে যেতে পারে।

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

আপনি যে প্রক্রিয়াটি ব্যবহার দেখানোর জন্য চালাচ্ছেন সেই প্রক্রিয়াটি topসিপিইউ এবং মেমরির পাশাপাশি ব্যবহার করে তাও বিবেচনা করুন। আপনি যদি ক্রমাগত সিপিইউ ব্যবহারের রিপোর্ট দেওয়ার জন্য একটি লুপ সহ একটি স্ক্রিপ্ট লিখে থাকেন তবে এটি প্রায় সর্বদা 100% প্রদর্শিত হবে কারণ ব্যবহারটি নিজেই রিপোর্ট করার কাজটি (কিছুটা sleep বিলম্ব না করে) সমস্ত সিপিইউ ব্যবহার করে।


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