Şu anda bellek kullanımını görmek için top
kullandım. Ancak bir süredir hafıza kullanımını izlemek istiyorum. E.g izlemeye başlayın ve ardından birkaç komutu yürütün ve son olarak izlemeyi durdurun ve dönem boyunca ne kadar hafıza kullanıldığını görün.
Bunu Ubuntu Sunucusunda nasıl yapabilirim?
Sanırım her 5 saniyede bir cronjob başlatabilirim ve mevcut bellek kullanımını bir metin dosyasına kaydeden bir komutu çağırabilirim. Ancak mevcut bellek kullanımını bir metin dosyasına kaydedilmesi kolay bir biçimde almak için hangi komutu kullanmalıyım?
Önceki cevapları birleştirmenizi öneririm
watch -n 5 free -m
Linux'un ekstra önbellek sabit disk blokları için fazladan bellek kullanmayı sevdiğini unutmayın. Yani sadece ücretsiz Mem
bakmak istemiyorum. -/+ buffers/cache:
satırının free
sütununa bakmak istiyorsunuz. Bu, uygulamalar için ne kadar hafıza kullanılabilir olduğunu gösterir. Böylece sadece free -m
koştum 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
Kullandığımı biliyorum 1528 MB ve 2170 MB ücretsiz .
Not: Bunu durdurmak için watch
döngüsü Ctrl+C.
Sanırım htop
en iyi çözüm.
Sudo apt-get install htop
Bu şekilde hangi programların en çok RAM kullandığını göreceksiniz. ve isterseniz kolayca sonlandırabilirsiniz. İşte bir ekran görüntüsü!
Her çalışan işlem tarafından kullanılan hafızanın güzel bir dökümünü arıyorsanız, o zaman kontrol etmenizi tavsiye edebilirim ps_mem.py (found burada) , pixelbeat.org'da).
Yukarıdaki açıklamalarda, tek satırlık anlık görüntü almaktan ücretsiz istediğinizi söyledim, ancak başkalarının da 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 bölüm, betiğin kök ayrıcalıkları gerektirdiğini iddia etmesi. Bunun neden böyle olduğunu tam olarak anlama fırsatım olmadı.
free komutunu kullanın. Örneğin, bu free -m
çıktısı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 /+
sadece ikinci satırı döndürür:
-/+ buffers/cache: 947 1064
watch komutu faydalı olabilir. Her beş saniyede bir güncelleme ile bellek kullanımını izlemek için watch -n 5 free
'u deneyin.
cat /proc/meminfo
kullanarak bunu yapabilirsiniz.
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
Genel RAM kullanımının görsel izlenmesi için Byob kullanırsanız, bellek kullanımınızı terminalin sağ alt köşesinde tutar ve herhangi bir terminal oturumu.
Ekran görüntüsünden görebileceğiniz gibi, sanal makinemde 1h3m çalışma süresi, 0.00 yük, 2.8GHz (sanal) işlemci ve 994MB (% 21) sistemde mevcut RAM.
Tek hat çözümü ve çıktı:
free -m | grep "Mem:"
Beklenen çıktıya bir örnek:
Mem: 3944 652 302 18 2990 2930
Bellek Kullanımını İzleme
Daha çok bellek kullanımını izlemek için harika bir yol olarak Cacti'den bahseden önceki yayınlardan birine paralelim. Ancak, kaktüsler artık ana akımda popüler olmadığı için, Grafit adı verilen alternatif bir grafik uygulaması var.
Grafit, bir ubuntu sunucuya kurmak ve onu yüklemek için nispeten kolaydır, kurulum prosedürlerini takip etmek için bu bağlantıya göz atın 'ı kullanabilirsiniz.
Grafit yüklendikten sonra, şimdi, istediğiniz aralıkta, ona bellek ölçümleri gönderebilirsiniz; her 5 saniyede bir, her dakika, her saat ... vb.
Bellek ölçümlerini grafik olarak çizmek için, daha önceki yayınlarda önerildiği gibi, gerekli komut bilgilerini toplamak için sistem araçlarını kullanarak kendi komut dosyanızı yazabilirsiniz. Veya, tüm işi sizin için yapacak olan önceden yazılmış bir snmp eklentisini kullanabilirsiniz.
Kendi bellek betiğinizi yazmak istiyorsanız, kullanılmış belleği hesaplarken arabelleğe alınan ve önbelleğe alınmış belleği hesaba katarsanız, aksi halde yanlış veri toplamanız gerekecektir.
Bunun yerine, zaten sizin için gerekli tüm hesaplamaları yapan bir snmp eklentisini kullanmak istiyorsanız, işte size oldukça iyi çalışan bir link: checkMemoryviaSNMP .
SNMP’nin Artıları:
İzlediğim tüm uzak düğümlere snmp kurulu. Bu, uzaktaki düğümlere bir eklenti kopyalamak veya koymak zorunda kalmadan tüm sistemlerimi bir merkezi sunucudan izlememe izin veriyor.
SNMP Eksileri:
Belleği izlemek istediğiniz uzak düğümlerin her birine snmp aracısının yüklendiğinden emin olmanız gerekir. Ancak, bu kurulum tek seferlik bir anlaşma olacak. Aşçı veya kukla gibi otomasyon araçlarını veya ortamınızdaki benzer araçları kullanıyorsanız, bu hiç sorun değil.
Uzak düğümlerdeki SNMP aracısının yapılandırması:
Snmp aracısı yüklendikten sonra, sadece /etc/snmpd/snmpd.conf dosyasını vi ve bu satırı buna ekleyin:
rocommunity (specify-a-community-string-aka-password-here)
Sonra snmpd aracısını yeniden başlatın:
/etc/init.d/snmpd restart
Ardından, 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
Ben kullanırdım Cacti . Bu, belirli bir süre boyunca hafıza kullanımınızı vb. Grafikler ve web tarayıcınızı kullanarak kullanımı kontrol edebilirsiniz.