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
availableterus lebih rendah daripada biasanya. - Apakah penggunaan swap meningkat.
- Apakah
sidansopadavmstatterus 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.




