Yang Anda cari adalah keluaran dari "free":
$ free
total used free shared buffers cached
Mem: 775556 759456 16100 0 22132 592484
-/+ buffers/cache: 144840 630716
Swap: 500344 21972 478372
Berikut turnya:
Ini adalah kotak dengan RAM fisik 768MB dan partisi swap 500344KB.
759456KB "digunakan" (kolom kedua, baris atas). Dari memori "bekas" ini, 23132KB adalah buffer (kolom ke-5, baris atas) dan 592484KB (kolom keenam, baris atas) adalah cache, menyisakan 144840KB (kolom ke-2, baris ke-2) memori fisik yang sedang digunakan oleh proses aktif.
Jika Anda mempertimbangkan bahwa memori yang digunakan oleh buffer dan cache dapat digunakan untuk proses, hal itu menyisakan memori fisik sebesar 630716KB (kolom ke-3, baris ke-2).
Partisi swap, seperti yang saya katakan, adalah 500344KB (kolom 1, baris bawah). 21972KB (kolom ke-2, baris bawah) dari file swap sedang digunakan, menyisakan 478372KB (kolom ke-3, baris bawah) gratis.
Jadi, definisi Anda tentang % memori bebas bergantung pada apakah Anda menghitung buffer dan cache atau tidak, dan apakah Anda menghitung swap atau tidak.
Itu seharusnya memberi Anda cukup untuk terus menghitung persentase sesuai keinginan Anda.
Inilah output dari top dan free:
$ top -n1 | grep "used," ; free
Mem: 775556k total, 751472k used, 24084k free, 20776k buffers
Swap: 500344k total, 21972k used, 478372k free, 586648k cached
total used free shared buffers cached
Mem: 775556 751344 24212 0 20776 586648
-/+ buffers/cache: 143920 631636
Swap: 500344 21972 478372
Anda dapat melihat bagaimana top dan gratis setuju (walaupun dengan sedikit perbedaan-- ini adalah mesin multi-pengguna dan penggunaan memori dari program teratas dan gratis tercermin di sana).
Tambahkan "-s" saat Anda memanggil vmstate, dan Anda akan melihat keluaran yang hampir sama, hanya dalam bentuk yang berbeda:
$ vmstat -s ; free
775556 total memory
759920 used memory
674680 active memory
18440 inactive memory
15636 free memory
21892 buffer memory
594372 swap cache
500344 total swap
21972 used swap
478372 free swap
... output truncated ...
total used free shared buffers cached
Mem: 775556 759920 15636 0 21892 594372
-/+ buffers/cache: 143656 631900
Swap: 500344 21972 478372
Anda dapat melihat bahwa vmstat menampilkan semua nomor yang sama dengan gratis.
Saya memiliki pertanyaan yang sama dengan Anda dan menghasilkan rumus
vmstat -s | awk ' $0 ~ /total memory/ {total=$1 } $0 ~/free memory/ {free=$1} $0 ~/buffer memory/ {buffer=$1} $0 ~/cache/ {cache=$1} END{print (total-free-buffer-cache)/total*100}'
Saya telah mengujinya pada versi vmstat dari procps-ng 3.3.10 dan vmstat dari procps-ng 3.3.9