Pertanyaan Bagaimana saya bisa memonitor penggunaan memori?


Saya telah menggunakan top untuk melihat penggunaan memori saat ini. Tetapi saya ingin memantau penggunaan memori selama jangka waktu tertentu. Mulai gali pemantauan dan kemudian jalankan beberapa perintah, dan terakhir hentikan pemantauan dan lihat berapa banyak memori yang telah digunakan selama periode tersebut.

Bagaimana saya bisa melakukan ini di Ubuntu Server?

Saya kira saya bisa memulai cronjob setiap 5 detik atau lebih, dan menjalankan perintah yang mencatat penggunaan memori saat ini dalam sebuah file teks. Tapi apa perintah yang harus saya gunakan untuk mendapatkan penggunaan memori saat ini dalam format yang mudah untuk masuk ke file teks?


235
2017-10-26 16:50


asal




Jawaban:


Saya merekomendasikan menggabungkan jawaban sebelumnya

watch -n 5 free -m

Perhatikan bahwa Linux suka menggunakan memori ekstra untuk blok cache hard drive. Jadi Anda tidak ingin hanya melihat yang gratis Mem. Anda ingin melihat free kolom dari -/+ buffers/cache: baris. Ini menunjukkan berapa banyak memori yang tersedia untuk aplikasi. Jadi saya hanya berlari free -m dan dapatkan ini:

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

Saya tahu saya menggunakannya 1528 MB dan miliki 2170 MB bebas.

catatan: Untuk menghentikan ini watch siklus Anda cukup tekan Ctrl+C.


290
2017-10-26 17:40



Terima kasih, itu informatif. Tetapi pada kolom yang digunakan pertama kali Anda miliki 2896 lalu 1528 untuk buffer, bukankah ini berarti yang Anda gunakan 2896 + 1528? - Jonas
Mem: used adalah total memori yang Anda gunakan. -/+ buffers/cache: used adalah total memori yang Anda gunakan minus buffer dan cache. Saya tahu hasilnya terlihat lucu, tetapi aritmatika tidak diperlukan di sini. Anda hanya mencari bekas / gratis di - / + buffer / baris cache. - Justin Force
Opsi -h jauh lebih baik - frmdstryr
@ frmdstryr Poin bagus! -h / - manusia tidak ada ketika saya menulis ini, meskipun. gitlab.com/procps-ng/procps/commit/… - Justin Force
@ cbradsh1 Anda bisa melakukannya free -h, mis. watch -n 5 free -h untuk mendapatkan keluaran "yang dapat dibaca manusia", mis. 2.1G dari pada 2170 dalam output. - Justin Force


kupikir htop adalah solusi terbaik.

  • sudo apt-get install htop

Dengan cara ini Anda akan melihat program apa yang paling banyak menggunakan RAM. dan Anda dapat dengan mudah mengakhiri satu jika Anda mau. Ini screenshot!


191
2018-05-18 00:11



htop bagus karena lebih "grafis" dan mungkin lebih mudah dibaca daripada free. - mjswensen
saya tidak mengerti hasilnya. Aku s RES memori yang digunakan oleh aplikasi itu di MB? Lalu apa itu? SHR? - faizal
@faizal: virtual, pendiam & memori bersama. - WitchCraft
bagaimana htop menunjukkan 'penggunaan memori selama periode waktu'? - dangel
htop -s M_SHARE htop -s TIME - Tomachi


Jika Anda mencari perincian memori yang bagus yang digunakan oleh setiap proses yang sedang berjalan, maka saya mungkin menyarankan untuk memeriksa ps_mem.py (ditemukan sini di pixelbeat.org).

Saya tahu di komentar di atas, Anda menyebutkan ingin satu baris snapshot dari bebas, tapi saya pikir orang lain mungkin menganggap ini berguna.

Contoh keluaran:

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

Satu-satunya bagian yang tidak saya sukai adalah kenyataan bahwa skrip mengklaim membutuhkan hak akses root. Saya belum punya kesempatan untuk melihat persis mengapa ini terjadi.


38
2017-10-26 17:19



Saya bertanya-tanya apakah memori dibagi antara utas. Itu dibagi antara proses, bukan? Setidaknya di Windows ... - Thomas Weller
Jadi kasus ini, memori bersama mengacu pada halaman yang dipetakan oleh beberapa proses dalam bentuk pustaka bersama. Selain itu dalam konteks aplikasi multi-threaded seluruh ruang memori proses dapat diakses oleh semua thread dalam proses itu. - Jason Mock
Sekarang tersedia di PyPI (pip install ps_mem) dan di GitHub. - Leif Arne Storset
@ThomasWeller: Ya, utas selalu berbagi memori, sedangkan proses dapat berbagi sebagian atau seluruhnya dalam kondisi tertentu. - Leif Arne Storset
untuk ini saya menggunakan gnome-system-monitor - jms


Menggunakan bebas perintah. Misalnya, ini adalah ouput dari 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 /+ hanya akan mengembalikan baris kedua:

-/+ buffers/cache:        947       1064

22
2017-10-26 17:27



Terima kasih, kelihatan hebat. Jadi ini 947 penggunaan memori dikurangi memori yang digunakan untuk buffer dan cache? - Jonas


Itu menonton perintah mungkin berguna. Mencoba watch -n 5 free untuk memantau penggunaan memori dengan pembaruan setiap lima detik.


9
2018-01-19 20:09



Terima kasih, ini luar biasa! Namun, saya lebih memilih untuk menggunakan memori pada satu baris, sehingga mudah untuk masuk ke file teks. - Jonas


Untuk pemantauan visual penggunaan RAM secara keseluruhan, jika Anda menggunakan Byobu, itu akan menjaga penggunaan memori Anda di sudut kanan bawah terminal dan akan berjalan saat Anda berada di sesi terminal apa pun.

Seperti yang Anda lihat dari tangkapan layar, mesin virtual saya memiliki ontime 1h3m, beban 0,00, memiliki prosesor 2.8GHz (virtual) dan 994MB (21%) dari RAM yang tersedia pada sistem.

Byobu in use


4
2018-04-16 19:15





Anda dapat melakukannya menggunakan cat /proc/meminfo.

enter image description here


3
2017-09-27 13:30



menambahkan jam ke depan perintah ini membuatnya luar biasa! seperti dalam watch cat /proc/meminfo - Elder Geek
Itu free perintah mengambil informasinya dari /proc/meminfo dan menyajikannya dengan cara yang kompak. Menggunakan free -h untuk hasil yang dapat dibaca manusia. - LoMaPh


Solusi dan keluaran satu baris:

free -m | grep "Mem:"

Berikut ini contoh hasil yang diharapkan:

enter image description here


3
2017-10-26 18:01



Ini juga akan memungkinkan Anda melihat penggunaan memori saat ini ... - mook765


Saya akan menggunakan Cacti. Ini akan membuat grafik penggunaan memori Anda dll selama jangka waktu tertentu, dan Anda akan dapat memeriksa penggunaan menggunakan browser web Anda.


1
2017-10-22 15:32