Saya perlu mendapatkan penggunaan memori dalam% dari vmstat, tapi saya tidak begitu mengerti beberapa angka yang berkaitan dengan memori yang ditampilkan di vmstat.
Secara khusus, diberi output seperti ini
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 139728 45396 199128 1236360 1 2 4 622 3 1 51 4 43 2 0
Berapa jumlah total memori sistem? Apakah 'swpd' + 'gratis' + 'buff' + 'cache', yang berjumlah total 1620612?
Berapa jumlah memori bebas dari sistem? Apakah 45396, seperti yang ditampilkan di kolom 'gratis'?
Masalahnya adalah mereka tidak menambahkan atau bahkan melihat dekat dengan apa yang dilaporkan 'atas'. Output dari 'top' yang saya ambil sekitar waktu yang sama dengan 'vmstat di atas adalah:
[...]
Mem: 4059616k total, 3965504k used, 94112k free, 200020k buffers
[...]
Jadi ... saya berasumsi pasti ada angka / opsi tersembunyi di 'vmstat' yang tidak saya ketahui?
Saya perlu menggunakan 'vmstat' untuk tujuan ini dan bukan perintah lain karena ini adalah persyaratan yang dinyatakan.
Jadi idealnya, apa yang ingin saya capai dari 'vmstat' adalah penggunaan% memori, seperti pada:
<used_memory>/<total_memory> * 100%.
Terima kasih!
Jawaban:
Apa yang Anda cari adalah output dari "gratis":
Inilah tur:
Ini adalah kotak w / 768MB RAM fisik dan partisi swap 500344KB.
759456KB "digunakan" (kolom kedua, baris atas). Dari memori "bekas" ini, 23132KB adalah buffer (kolom 5, baris atas) dan 592484KB (kolom keenam, baris atas) adalah cache, meninggalkan memori fisik 144840KB (kolom ke-2, baris ke-2) yang digunakan oleh proses aktif.
Ketika Anda menganggap bahwa memori yang digunakan oleh buffer dan cache dapat digunakan untuk proses, yang membuat 630716KB (kolom ke-3, baris ke-2) dari memori fisik bebas.
Partisi swap, seperti yang saya katakan, adalah 500344KB (kolom 1, baris bawah). 21972KB (kolom 2, baris bawah) dari file swap sedang digunakan, meninggalkan 478372KB (kolom 3, baris bawah) gratis.
Jadi, definisi Anda% memori bebas tergantung pada apakah Anda menghitung buffer dan cache atau tidak, dan apakah Anda menghitung swap atau tidak.
Itu seharusnya memberi Anda cukup untuk melanjutkan untuk menghitung persentase sesuai keinginan Anda.
Inilah output top dan gratis:
Anda dapat melihat bagaimana persetujuan atas dan bebas (meskipun dengan sedikit perbedaan - ini adalah mesin multi-pengguna dan penggunaan memori program teratas dan gratis tercermin di sana).
Tambahkan "-s" saat Anda memanggil vmstate, dan Anda akan melihat banyak keluaran yang sama, hanya dalam bentuk yang berbeda:
Anda dapat melihat bahwa vmstat menampilkan semua angka yang sama dengan gratis.
sumber
Saya memiliki pertanyaan yang sama dengan Anda dan menghasilkan formula
Saya telah mengujinya pada versi vmstat dari procps-ng 3.3.10 dan vmstat dari procps-ng 3.3.9
sumber
Saya akan merekomendasikan agar Anda membaca IBM Redbook ini "Pedoman Kinerja dan Penyesuaian Linux" ( http://www.redbooks.ibm.com/abstracts/redp4285.html?Open ). Ini memiliki detail pada data yang dikembalikan oleh banyak perintah dan akan membantu Anda.
Saya biasanya menggunakan perintah "gratis" di Linux atau "cat / proc / meminfo".
sumber
Berikut adalah fungsi shell POSIX yang membulatkan persen yang diinginkan ke bilangan bulat terdekat (untuk tujuan penulisan ini mungkin lebih bermanfaat, karena tes perbandingan aritmatika shell POSIX hanya bekerja dengan bilangan bulat):
Output (di sistem saya):
Hal yang sama, dengan
free
:sumber