Perintah free Linux: memahami memori tersedia, cache, dan swap

Perintah free merangkum penggunaan memori fisik (RAM) dan swap pada Linux. Untuk menilai apakah memori mulai terbatas, perhatikan terutama available, yaitu perkiraan memori yang dapat dipakai untuk memulai aplikasi baru tanpa swap, bukan hanya angka free.

free -h

Linux memanfaatkan RAM yang tidak terpakai, misalnya untuk cache berkas, dan dapat mengambil kembali sebagian memori itu saat dibutuhkan. Karena itu, nilai free yang kecil dan buff/cache yang besar saja tidak berarti sistem kekurangan memori.

Informasi yang ditampilkan free

free membaca /proc/meminfo yang disediakan kernel untuk menghitung ringkasan memori fisik dan swap. Definisi kolom dan opsinya dijelaskan dalam manual resmi free dari procps-ng.

free -h

Berikut contoh ilustratif dengan nilai yang dibulatkan; format dan angka sebenarnya bergantung pada sistem dan versi procps-ng.

               total        used        free      shared  buff/cache   available
Mem:            15Gi       5.0Gi       1.1Gi       320Mi       9.7Gi        10Gi
Swap:          2.0Gi       128Mi       1.9Gi

Memahami arti setiap kolom

total, used, dan free

Kolom Arti Interpretasi
total Total memori fisik yang dapat digunakan Dapat berbeda dari jumlah RAM yang terpasang karena area yang dicadangkan kernel dan perangkat keras tidak termasuk.
used Memori yang dipakai atau tidak segera tersedia procps-ng saat ini menghitung memori fisik sebagai total - available; rumusnya dapat berbeda pada versi lain.
free Memori yang tidak digunakan untuk tujuan apa pun Tidak mencakup cache yang dapat diambil kembali.

shared dan buff/cache

shared terutama menunjukkan memori yang dipakai tmpfs. buff/cache menggabungkan buffer kernel, page cache, dan memori slab yang dapat diambil kembali.

Cache menyimpan data yang dibaca dari disk di RAM agar dapat diakses lagi lebih cepat. Kernel dapat mengambil kembali sebagian cache saat aplikasi membutuhkan memori, sehingga cache yang besar bukan masalah dengan sendirinya.

Mengapa available penting

available adalah perkiraan memori untuk memulai aplikasi baru tanpa menggunakan swap. Nilainya bukan sekadar free + buff/cache: kernel menghitung MemAvailable dengan mempertimbangkan page cache dan sebagian slab yang dapat diambil kembali.

Angka ini bukan jaminan mutlak. Permintaan memori yang tiba-tiba besar atau kesulitan kernel mengambil kembali memori dapat mengubah keadaan dengan cepat.

Perbedaan baris Mem dan Swap

Baris memori fisik

Baris Mem merangkum kapasitas dan penggunaan RAM, termasuk memori aplikasi, kernel, cache, dan memori bersama.

Baris swap

Baris Swap menunjukkan kapasitas total, terpakai, dan bebas pada ruang swap, bukan RAM. Penggunaan swap yang tidak nol tidak selalu berarti sistem sedang kekurangan memori: halaman tidak aktif yang sebelumnya dipindahkan dapat tetap berada di swap meskipun RAM tersedia.

Sebaliknya, penggunaan swap yang terus meningkat, nilai si dan so dalam vmstat yang terus muncul, dan waktu respons yang memburuk bersama-sama dapat menandakan tekanan memori.

vmstat 1

Laju pada laporan pertama merupakan rata-rata sejak sistem dimulai; laporan berikutnya menunjukkan aktivitas selama interval pengamatan. Nilai memori dan proses adalah nilai sesaat. Hentikan tampilan berulang dengan Ctrl+C.

Opsi yang sering digunakan

Menampilkan satuan yang mudah dibaca

free -h

Opsi -h atau --human memilih satuan biner seperti Ki, Mi, dan Gi secara otomatis. Untuk satuan tetap, gunakan misalnya -m atau -g.

free -m
free -g

Memisahkan buffer dan cache

free --wide

Opsi -w atau --wide memisahkan buff/cache menjadi kolom buffers dan cache. Untuk analisis lebih rinci, periksa juga /proc/meminfo dan alat seperti slabtop.

Menampilkan hasil secara berkala

free -h -s 2

-s 2 menampilkan hasil setiap dua detik sampai dihentikan dengan Ctrl+C. Gunakan -c untuk membatasi jumlah tampilan:

free -h -s 2 -c 5

Menampilkan total memori fisik dan swap

free -h --total

-t atau --total menambahkan baris total. RAM dan swap memiliki fungsi dan kecepatan berbeda, jadi jumlahnya tidak boleh dianggap seluruhnya sebagai memori cepat yang tersedia.

Menilai apakah memori tidak mencukupi

Amati memori tersedia dan I/O swap bersama-sama

Jangan menyimpulkan hanya dari satu hasil free. Amati beberapa sinyal berikut:

  • Apakah available terus lebih rendah daripada biasanya.
  • Apakah penggunaan swap meningkat.
  • Apakah si dan so pada vmstat terus menunjukkan aktivitas.
  • Apakah waktu respons layanan memburuk bersamaan dengan I/O disk.
  • Apakah log kernel mencatat penghentian OOM (out of memory, kehabisan memori).
free -h
vmstat 1
journalctl -k -g 'oom|Out of memory|Killed process'

Jalankan perintah satu per satu. Karena vmstat 1 berjalan terus, tekan Ctrl+C sebelum menjalankan journalctl. Pencarian log mungkin tidak menghasilkan apa pun, tergantung distribusi dan pengaturan log, dan membaca log dapat memerlukan izin.

Mencari proses yang banyak memakai memori

Urutkan proses berdasarkan penggunaan memori dengan ps:

ps -eo pid,user,%mem,rss,comm --sort=-rss | head

RSS menunjukkan halaman proses yang berada dalam RAM, dalam KiB pada keluaran ini. Halaman bersama dapat dihitung pada beberapa proses. Untuk menganalisis kontainer, pustaka bersama, dan pemetaan berkas lebih tepat, periksa juga metrik cgroup dan alat seperti smem.

Jangan mengosongkan cache tanpa alasan

Kernel mengelola page cache untuk meningkatkan kinerja. Memaksa pengosongan cache hanya agar angka pada free berubah dapat meningkatkan pembacaan disk dan menurunkan kinerja. Lakukan hanya dengan tujuan yang jelas, misalnya uji kinerja yang dapat diulang, setelah memahami dampak dan cara pemulihannya.

Satuan dan otomasi

Satuan biner dan desimal

Secara default, -h menggunakan satuan KiB, MiB, dan GiB berbasis 1024. Tambahkan --si untuk satuan kB, MB, dan GB berbasis 1000:

free -h --si

Perbedaan satuan dapat menghasilkan angka yang tampak berbeda. Sebutkan standar satuan saat membuat dokumentasi atau pemantauan.

Jangan langsung mem-parsing tampilan

Kolom dan cara perhitungan free dapat berubah menurut versi procps-ng; satuan yang mudah dibaca juga tidak cocok untuk parsing. Untuk otomasi, gunakan entri yang diperlukan dari /proc/meminfo atau metrik terstruktur dari agen pemantauan jika memungkinkan, dan tetapkan satuan serta versinya.

Mengapa angka free dalam kontainer terlihat besar?

free membaca /proc/meminfo. Bergantung pada runtime kontainer dan konfigurasi cgroup, berkas ini dapat menampilkan angka mendekati total memori host, yang berbeda dari batas memori yang diterapkan pada kontainer.

Periksa juga request dan limit pada orkestrator, batas dan penggunaan memori cgroup, serta kejadian OOM. Jangan menentukan kapasitas kontainer hanya dari hasil free milik host.

Pertanyaan umum

Apakah free yang hampir nol berarti memori tidak cukup?

Belum tentu. Linux dapat memakai memori tersisa sebagai cache. Periksa available, I/O swap, dan kinerja layanan bersama-sama.

Apakah seluruh buff/cache dapat diambil kembali?

Sebagiannya dapat diambil kembali saat diperlukan, tetapi tidak semuanya segera tersedia. available memperkirakan hal itu; jangan sekadar menambahkan seluruh buff/cache ke memori bebas.

Apakah penggunaan swap selalu berarti RAM tidak cukup?

Tidak. Halaman tidak aktif dari sebelumnya dapat tetap berada di swap. Periksa tren penggunaan swap, I/O swap yang terjadi, dan keterlambatan layanan.

Mengapa nilai used berbeda dari alat lain?

Klasifikasi cache dan memori yang dapat diambil kembali dapat berbeda menurut alat dan versi. Bandingkan /proc/meminfo pada waktu yang sama, versi procps-ng, dan definisi masing-masing alat.

Ringkasan

free -h membantu memeriksa RAM dan swap dengan cepat. Untuk menilai tekanan memori, gabungkan available, I/O swap, penggunaan proses, dan waktu respons layanan.

Jika beban juga tinggi, lihat cara membaca load average dengan perintah uptime untuk memeriksa kemungkinan hambatan CPU dan I/O.