Hafıza kullanımını nasıl izleyebilirim?

234

Şu anda bellek kullanımını görmek için top kullanmıştım. Ama bellek kullanımını bir süre boyunca izlemek istiyorum. E.g izleme işlemini başlatın ve ardından birkaç komutu çalıştırın ve son olarak izlemeyi durdurun ve bu süre zarfında ne kadar hafıza kullanıldığını görün.

Ubuntu Sunucusunda bunu nasıl yapabilirim?

Sanırım her 5 saniyede bir cronjob başlatabilirim ve bir bellek dosyasında geçerli bellek kullanımını kaydeden bir komutu başlatabilirim. Ancak geçerli bellek kullanımını bir metin dosyasına giriş yapmak için kolay bir biçimde almak için hangi komutu kullanmalıyım?

    
sordu Jonas 26.10.2010 18:50

10 cevap

288

Önceki yanıtları birleştirmenizi öneriyorum

watch -n 5 free -m

Linux'un fazladan bir bellek kullanmayı sabit disk bloklarını önbelleğe almayı unutmayın. Yani sadece Mem 'sine bakmak istemezsiniz. % Co_de% satırının free sütununa bakmak istiyorsunuz. Bu, uygulamalarda ne kadar bellek olduğunu gösterir. Bu yüzden -/+ buffers/cache: az önce çalıştırdım ve şunu aldım:

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

1528 MB kullanıyorum ve 2170 MB kullanıyorum.

Not: Bu free -m döngüsünü durdurmak için Ctrl + C tuşlarına basabilirsiniz.

    
verilen cevap Justin Force 26.10.2010 19:40
191

Sanırım htop en iyi çözümdür.

  • sudo apt-get install htop

Bu şekilde, hangi programların RAM'in çoğunu kullandığını göreceksiniz. ve eğer istersen kolayca son verebilirsin. İşte bir ekran görüntüsü!

    
verilen cevap Alvar 18.05.2012 02:11
38

Her çalışan işlem tarafından kullanılan belleğin güzel bir dökümünü arıyorsanız, ps_mem.py 'i ( burada pixelbeat.org adresinde.)

Yukarıdaki yorumlarda, ücretsiz 'den tek satırlık bir fotoğraf çekmek istediğinizi söylediniz, ancak başkalarının bunu yararlı bulabileceğini düşündüm.

Örnek çıktı:

[email protected]:~$ 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

Sevmediğim tek kısım, betiğin root ayrıcalıklarını gerektirdiğini iddia etmesidir. Bunun neden böyle olduğunu tam olarak göremedim.

    
verilen cevap Jason Mock 02.10.2015 01:47
21

Ücretsiz komutunu kullanın. Örneğin, bu free -m öğesinin çıkış noktasıdır:

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

free -m | grep /+ , yalnızca ikinci satırı döndürecektir:

-/+ buffers/cache:        947       1064
    
verilen cevap Isaiah 26.10.2010 19:19
9

izle komutu yararlı olabilir. Her beş saniyede bir güncellemeyle bellek kullanımını izlemek için watch -n 5 free deneyin.

    
verilen cevap mgunes 26.10.2010 19:27
4

Genel RAM kullanımının görsel olarak izlenmesi için Byobu 'yu kullanırsanız, bellek kullanımınızı sağ altta tutacaktır. terminalin köşesi - ve herhangi bir terminal oturumundayken çalışır.

Ekran görüntüsünden görebileceğiniz gibi, sanal makinem 1h3m çalışma süresine, 0.00 yüke, 2.8 GHz (sanal) işlemciye ve sistemde bulunan RAM'in 994 MB (% 21) belleğine sahip.

    
verilen cevap bafromca 19.01.2015 21:09
3

Bunu cat /proc/meminfo kullanarak yapabilirsiniz.

    
verilen cevap Amir 16.04.2016 21:15
3

Tek satır çözüm ve çıktı:

free -m | grep "Mem:"

İşte beklenen çıktının bir örneği:

    
verilen cevap Tim 27.09.2016 15:30
1

Cacti 'yi kullanırdım. Bu, hafıza kullanımınızı vb. Bir süre içinde grafikleyecektir ve web tarayıcınızı kullanarak kullanımınızı kontrol edebilirsiniz.

    
verilen cevap Matt 26.10.2010 20:01
1

Bellek Kullanımı İzleme

Cacti'den bahseden önceki mesajlardan birine paralel olarak, bellek kullanımını izlemek için harika bir yol. Ancak, kaktüslerin ana akımda artık popüler olmadığı için, Graphite adı verilen alternatif bir grafik uygulaması vardır.

Grafit bir ubuntu sunucuya yüklemek ve yüklemek için nispeten kolaydır, yapabilirsiniz kurulum prosedürlerini takip etmek için bu bağlantıya bakın .

Grafit kurulduktan sonra, şimdi, istediğiniz zaman dilimlerinde bellek ölçümlerini gönderebilirsiniz; her 5 saniyede, her dakika, her saat ... vb.

Önceki mesajlarda daha önce önerildiği gibi, grafik bellek ölçütlerine, gerekli bellek bilgilerini toplamak için sistem araçlarını kullanarak kendi komut dosyanızı yazabilirsiniz. Veya, tüm işi sizin için yapacak önceden yazılmış bir snmp eklentisini kullanabilirsiniz.

Eğer kendi bellek senaryonuzu yazmak isterseniz, kullanılmış belleği hesaplarken arabelleğe alınmış ve önbelleğe alınmış belleği hesaplamanız akıllıca olacaktır, aksi takdirde yanlış veriler toplarsınız.

Bunun yerine, sizin için gerekli tüm hesaplamaları yapan bir snmp eklentisini kullanmak isterseniz, oldukça iyi çalışan bir bağlantı: checkMemoryviaSNMP .

SNMP Artıları:

İzlediğim tüm uzak düğümlere snmp yüklüyorum. Bu, uzaktaki düğümlere bir eklenti kopyalamak veya eklemek zorunda kalmadan tüm sistemlerimi tek bir merkezi sunucudan izlememi sağlar.

SNMP Eksileri:

Belleği izlemek istediğiniz uzak düğümlerin her birinde snmp aracısının yüklü olduğundan emin olmanız gerekir. Ancak, bu yükleme bir kez anlaşma olacaktır. Ortamınızda şef veya kukla veya benzeri araçlar gibi otomasyon araçlarını kullanıyorsanız, bu hiç sorun değil.

Uzak düğümdeki / dizinlerdeki SNMP aracısının yapılandırması:

Snmp aracısı yüklendikten sonra, /etc/snmpd/snmpd.conf dosyasını vi dosyasına ekleyin ve bu satırı ona ekleyin:

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

Ardından snmpd aracısını şu şekilde yeniden başlatın:

/etc/init.d/snmpd restart

Ardından, tüm diğer sunucularınızı izlemek istediğiniz merkezi sunucunuzda, aşağıdaki komutu çalıştırabilirsiniz:

$ 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
    
verilen cevap SimplisticSpeed 22.10.2016 17:32

Etiketlerdeki diğer soruları oku