আমি কীভাবে মেমরির ব্যবহার নিরীক্ষণ করতে পারি?


265

আমি topএই মুহুর্তে স্মৃতি ব্যবহার দেখতে ব্যবহার করেছি। তবে আমি সময়ের সাথে সাথে মেমরির ব্যবহার নিরীক্ষণ করতে চাই। উদাহরণস্বরূপ মনিটরিং শুরু করুন এবং তারপরে কয়েকটি কমান্ড কার্যকর করুন এবং চূড়ান্তভাবে পর্যবেক্ষণ বন্ধ করুন এবং দেখুন যে সময়ের মধ্যে কত স্মৃতি ব্যবহৃত হয়েছে।

আমি কীভাবে এটি উবুন্টু সার্ভারে করতে পারি?

আমি অনুমান করি যে আমি প্রতি 5 তম বা সেকেন্ডে একটি ক্রোনজব শুরু করতে পারি এবং একটি কমান্ড প্রার্থনা করতে পারি যা বর্তমান পাঠ্যপুস্তকে মেমরির ব্যবহার করতে পারে। তবে টেক্সট ফাইলটিতে লগইন করা সহজ যে বিন্যাসে বর্তমান মেমরির ব্যবহার পেতে আমার কোন আদেশ ব্যবহার করা উচিত?

উত্তর:


322

আমি পূর্ববর্তী উত্তরগুলি একত্রিত করার পরামর্শ দিচ্ছি

watch -n 5 free -m

নোট করুন যে হার্ড ড্রাইভ ব্লকগুলি ক্যাশে করতে লিনাক্স অতিরিক্ত কোনও মেমরি ব্যবহার করতে পছন্দ করে । সুতরাং আপনি নিখরচায় দেখতে চান না Mem। আপনি সারিটির freeকলামটি দেখতে চান -/+ buffers/cache:। এটি অ্যাপ্লিকেশনগুলিতে কত স্মৃতি উপলব্ধ তা দেখায়। তাই আমি দৌড়ে free -mএসেছি:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

আমি জানি যে আমি 1528 এমবি ব্যবহার করছি এবং 2170 এমবি নিখরচায় রয়েছে।

দ্রষ্টব্য: এই watchচক্রটি বন্ধ করতে আপনি কেবল Ctrl+ টিপতে পারেন C


1
ধন্যবাদ, এটি তথ্যবহুল। তবে আপনার প্রথমে ব্যবহৃত কলামে 2896এবং তারপরে 1528বাফারগুলির জন্য, এর অর্থ এই নয় যে আপনি ব্যবহার করছেন 2896 + 1528?
জোনাস

8
Mem: usedআপনার মোট ব্যবহৃত ব্যবহৃত স্মৃতি। -/+ buffers/cache: usedআপনার মোট ব্যবহৃত মেমরি বিয়োগ বাফার এবং ক্যাশে। আমি জানি আউটপুটটি মজাদার দেখাচ্ছে, তবে এখানে কোনও গাণিতিকের প্রয়োজন নেই। আপনি কেবল - / + বাফার / ক্যাশে সারিতে ব্যবহৃত / নিখরচায় সন্ধান করছেন।
জাস্টিন ফোর্স

6
-H

1
নিবন্ধন করুন -হ / - যদিও আমি এটি লিখেছিলাম তখন মানুষের অস্তিত্ব ছিল না। gitlab.com/procps-ng/procps/commit/…
জাস্টিন ফোর্স

3
@ cbradsh1 আপনি ঠিক free -hযেমন watch -n 5 free -hকরতে পারেন , যেমন "মানব পাঠযোগ্য" আউটপুট পেতে, যেমন আউটপুট 2.1Gপরিবর্তে 2170in
জাস্টিন ফোর্স

213

আমি মনে করি htopএটিই সেরা সমাধান।

  • sudo apt-get install htop

এই পদ্ধতিগুলি আপনি কীভাবে সবচেয়ে বেশি র‌্যাম ব্যবহার করছেন তা লক্ষ্য করবেন। এবং আপনি চাইলে সহজেই একটিটিকে সমাপ্ত করতে পারেন। এখানে একটি স্ক্রিনশট!


2
htopএটি দুর্দান্ত কারণ এটি আরও "গ্রাফিকাল" এবং এর চেয়ে সম্ভবত পড়া সহজ free
mjswensen

1
আমি আউটপুট বুঝতে পারি না। এমবিতে কি RESসেই অ্যাপ্লিকেশনটি ব্যবহার করে স্মৃতি? তাহলে কি SHR?
ফিজাল

1
@ ফাইজাল: ভার্চুয়াল, সংরক্ষিত এবং ভাগ করা মেমরি।
উইচক্র্যাফট

1
কীভাবে htopআপনাকে 'সময়ের সাথে সাথে স্মৃতি ব্যবহার' দেখায়?
ডাঙ্গেল

htop -s M_SHARE htop -s TIME
Tomachi

40

আপনি প্রতিটি চলমান প্রক্রিয়া দ্বারা ব্যবহৃত মেমরি একটা চমৎকার ভাঙ্গন খুঁজছেন তবেই আমি চেক আউট সুপারিশ পারে ps_mem.py (পাওয়া এখানে pixelbeat.org এ)।

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

উদাহরণ আউটপুট:

user@system:~$ sudo ps_mem.py
[sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

আমি যে অংশটি পছন্দ করি না তা হ'ল স্ক্রিপ্টটি মূল সুবিধার প্রয়োজন বলে দাবি করে। কেন এই ঘটনাটি ঠিক তা দেখার আমার এখনও সুযোগ হয়নি opportunity


আমি ভাবছি মেমরিটি থ্রেডগুলির মধ্যে ভাগ করা আছে কিনা। এটি প্রক্রিয়াগুলির মধ্যে ভাগ করা হয়, তাই না? কমপক্ষে উইন্ডোজে ...
থমাস ওয়েলারের

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

4
এখন পাইপিআই ( pip install ps_mem) এবং গিটহাবে পাওয়া যায়
লিফ আর্ন স্টারসেট

@ থমাস ওয়েলার: হ্যাঁ, থ্রেডগুলি সর্বদা স্মৃতি ভাগ করে দেয়, তবে প্রক্রিয়াগুলি কিছু কিছু নির্দিষ্ট শর্তে ভাগ করতে পারে।
লিফ আর্ন স্টারসেট

এর জন্য আমি জিনোম-সিস্টেম-মনিটর ব্যবহার করি

24

ফ্রি কমান্ড ব্যবহার করুন । উদাহরণস্বরূপ, এটি এর আউটপুট free -m:

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+ কেবল দ্বিতীয় লাইনে ফিরে আসবে:

-/+ buffers/cache:        947       1064

ধন্যবাদ, দুর্দান্ত দেখাচ্ছে। সুতরাং 947এটি মেমরি ইউজার মেমোরিটি বাফার এবং ক্যাশে ব্যবহৃত মেমরি?
জোনাস

11

ঘড়ি কমান্ড দরকারী হতে পারে। watch -n 5 freeপ্রতি পাঁচ সেকেন্ডে আপডেট সহ মেমরির ব্যবহার নিরীক্ষণ করার চেষ্টা করুন ।


ধন্যবাদ, এটি দুর্দান্ত ছিল! যাইহোক, আমি একক লাইনে মেমরির ব্যবহার পেতে পছন্দ করব, তাই কোনও পাঠ্য ফাইলে লগইন করা সহজ।
জোনাস

8

আপনি এটি ব্যবহার করে করতে পারেন cat /proc/meminfo

MemTotal:        4039160 kB
MemFree:          309796 kB
MemAvailable:    3001052 kB
Buffers:          345636 kB
Cached:          2341288 kB
SwapCached:            8 kB
Active:          1725160 kB
Inactive:        1551652 kB
Active(anon):     538404 kB
Inactive(anon):    70076 kB
Active(file):    1186756 kB
Inactive(file):  1481576 kB
Unevictable:          32 kB
Mlocked:              32 kB
SwapTotal:       4194300 kB
SwapFree:        4194044 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        589988 kB
Mapped:           255972 kB
Shmem:             18596 kB
Slab:             374888 kB
SReclaimable:     310496 kB
SUnreclaim:        64392 kB
KernelStack:        6976 kB
PageTables:        26452 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6213880 kB
Committed_AS:    3589736 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      147392 kB
DirectMap2M:     4046848 kB

1
এই কমান্ডটির সম্মুখভাগে ঘড়ি যুক্ত করা এটি দুর্দান্ত করে তোলে! যেমনটি রয়েছেwatch cat /proc/meminfo
বয়স্ক গীত

freeকমান্ড থেকে তার তথ্য লাগে /proc/meminfoএবং তাদের একটি কম্প্যাক্ট ভাবে উপস্থাপন করে। free -hমানব-পঠনযোগ্য আউটপুট জন্য ব্যবহার করুন ।
LoMaPh

4

সামগ্রিক উপস্থিত RAM- র ব্যবহার চাক্ষুষ পর্যবেক্ষণ, যদি আপনি ব্যবহার Byobu, , এটি আপনার মেমোরি ব্যবহার টার্মিনাল নীচের ডান দিকের কোণায় অবস্থিত রাখা হবে এবং যখন আপনি কোনো টার্মিনালের সেশনে হয় চালানো হবে।

আপনি যেমন স্ক্রিনশট থেকে দেখতে পাচ্ছেন, আমার ভার্চুয়াল মেশিনটিতে 1h3m আপটাইম, 0.00 লোড রয়েছে, এতে 2.8GHz (ভার্চুয়াল) প্রসেসর এবং সিস্টেমে র‌্যামের 994MB (21%) রয়েছে।

ব্যবহারে বাইবু


3

একক লাইন সমাধান এবং আউটপুট:

free -m | grep "Mem:"

এখানে প্রত্যাশিত আউটপুট উদাহরণ:

Mem:           3944         652         302          18        2990        2930

1

আমি ব্যবহার করেন cacti । এটি সময়ের সাথে সাথে আপনার স্মৃতি ব্যবহার ইত্যাদি গ্রাফ করবে এবং আপনি আপনার ওয়েব ব্রাউজার ব্যবহার করে পরীক্ষা করতে সক্ষম হবেন।


1

মেমরি ব্যবহার নিরীক্ষণ

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

গ্রাফাইটটি একটি উবুন্টু সার্ভারে ইনস্টল করা তুলনামূলকভাবে সহজ এবং এটি ইনস্টল করার জন্য, ইনস্টলেশন প্রক্রিয়াগুলি অনুসরণ করার জন্য আপনি সহজেই এই লিঙ্কটি পরীক্ষা করে দেখতে পারেন ।

গ্রাফাইট ইনস্টল হওয়ার পরে, এখন আপনি যেকোন বিরতিতে এটিতে মেমরি মেট্রিকগুলি প্রেরণ করতে পারেন; প্রতি 5 সেকেন্ড, প্রতি মিনিটে, প্রতি ঘন্টা ... ইত্যাদি।

পূর্ববর্তী পোস্টগুলিতে ইতিমধ্যে প্রস্তাবিত মেমরি মেট্রিকগুলি লেখার জন্য, প্রয়োজনীয় মেমরির তথ্য সংগ্রহের জন্য আপনি সিস্টেম সরঞ্জামগুলি ব্যবহার করে নিজের স্ক্রিপ্ট লিখতে পারেন। অথবা, আপনি একটি প্রাক-লিখিত স্ন্যাম্প প্লাগইন ব্যবহার করতে পারেন যা আপনার জন্য সমস্ত কাজ করবে।

আপনি যদি নিজের নিজস্ব স্মৃতি স্ক্রিপ্ট লিখতে চান, তবে ব্যবহৃত মেমরির গণনা করার সময় আপনি বার্ফার এবং ক্যাশেড মেমরির জন্য অ্যাকাউন্ট করেছেন তা নিশ্চিত হওয়া ভাল otherwise

আপনি যদি এর পরিবর্তে এমন একটি স্যাম্প প্লাগইন ব্যবহার করতে চান যা ইতিমধ্যে আপনার জন্য সমস্ত প্রয়োজনীয় গণনা করে, তবে এখানে একটি লিঙ্ক রয়েছে যা বেশ ভালভাবে কাজ করে: চেকমেমরিভিয়াএসএনএমপি

এসএনএমপির পেশাদাররা:

আমি নিরীক্ষণ করে এমন সমস্ত রিমোট নোডগুলিতে স্যাম্প ইনস্টল করেছি। এটি আমাকে দূরবর্তী নোডগুলিতে অনুলিপি বা প্লাগিন না রেখে, একটি কেন্দ্রীয় সার্ভার (গুলি) থেকে আমার সমস্ত সিস্টেমগুলি পর্যবেক্ষণ করতে দেয় ।

এসএনএমপির কনস:

আপনি নিশ্চিত করতে হবে যে আপনি স্মৃতিতে নজরদারি করতে চান এমন প্রতিটি প্রত্যন্ত নোডে স্্যাম্প এজেন্ট ইনস্টল করা আছে। তবে এই ইনস্টলেশনটি এক সময়ের চুক্তি হবে। আপনি যদি নিজের পরিবেশে শেফ বা পুতুল বা অনুরূপ সরঞ্জামগুলির মতো অটোমেশন সরঞ্জাম ব্যবহার করেন তবে এটি মোটেই সমস্যা নয়।

রিমোট নোডে এসএনএমপি এজেন্টের কনফিগারেশন:

স্ন্যাম্প এজেন্ট ইনস্টল হওয়ার পরে, কেবলমাত্র /etc/snmpd/snmpd.conf ফাইলটিতে vi এই লাইনটি যুক্ত করুন:

rocommunity  (specify-a-community-string-aka-password-here)

তারপরে স্ন্যাম্পড এজেন্টটি পুনরায় চালু করুন:

/etc/init.d/snmpd restart

তারপরে, আপনার কেন্দ্রীয় সার্ভারে, যা থেকে আপনি অন্য সমস্ত সার্ভার নিরীক্ষণের পরিবর্তে, নিম্নলিখিত কমান্ডটি চালাতে পারেন:

$ time ./checkMemoryviaSNMP -v2 public gearman001.phs.blah.com 30 90 graphite,10.10.10.10,2003,typical
WARNING: Used = [ 3.26154 GB ], Installed = [ 5.71509 GB ], PCT.Used = [ 57.069% ], Available.Memory = [ 2.00291 GB ]. Buffer = [ 137.594 MB ], Cached = [ 1.3849 GB ]. Thresholds: [ W=(30%) / C=(90%) ].  System Information = [ Linux gearman001.phs.blah.com 2.6.32-504.30.3.el6.x86_64 #1 SMP Thu Jul 9 15:20:47 EDT 2015 x86_64 ].

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