Bagaimana menafsirkan output dari perintah "bebas-m"?

48

Output dari free -madalah:

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0

Nilai memori yang digunakan mana yang benar, 482 atau 93?

amoooc
sumber

Jawaban:

41

Memori Anda benar-benar bebas 112 MB, TETAPI 501 mb yang Anda lihat tanpa memori 'cache'. Ini berarti bahwa OS telah memasukkan beberapa hal dalam memori Anda menjadi lebih cepat. Ia menyebut ini "bekas" (oleh karena itu nomor 'bebas' Anda hanya 112), tetapi sebenarnya tersedia untuk Anda jika Anda membutuhkannya.

Ini adalah hal yang baik, karena memori yang tidak digunakan adalah memori yang tidak berguna. Memori yang di-cache dapat dihapus jika diperlukan. Hal-hal lama "Saya harus membersihkan memori" yang digunakan orang untuk windows 95 tidak diperlukan di sini: semuanya baik-baik saja dan bahagia :)

Nomor yang Anda cari adalah 501 gratis (dalam megabita karena -m).

lihat untuk referensi halaman-halaman ini:

http://www.linuxatemyram.com/
http://www.itworld.com/it-managementstrategy/280695/making-sense-memory-usage-linux

Nanne
sumber
Pada dasarnya: "lihat saja baris kedua, baris dengan buffer / cache".
Nanne
25

Output interpretasi dari free:
Baris pertama dari freedaftar output:

  • total Memori total, fisik Anda (dengan asumsi tidak ada virtualisasi)
  • used Berapa banyak dari yang saat ini digunakan (oleh apa saja)
  • free Berapa banyak dari itu benar-benar gratis (tidak digunakan sama sekali)
  • shared (tidak pernah ada apa pun di sana, abaikan kolom itu)
  • buffers Memori yang digunakan oleh buffer kernel
  • cached Memori yang digunakan untuk cache

Dua item terakhir, cache dan buffer, adalah memori yang tidak dialokasikan untuk proses pengguna tertentu. Ini adalah memori yang dicadangkan oleh kernel untuk meningkatkan kinerja secara keseluruhan, tetapi bukan memori "aplikasi". Area ini akan tumbuh atau menyusut tergantung pada kebijakan kernel sehubungan dengan caching, tekanan memori, pola I / O aplikasi, dll.

Karena dua kolom ini bukan memori yang dialokasikan pengguna, dan zona dapat menyusut (praktis menjadi nol) jika alokasi pengguna memerlukannya, mereka dalam arti "bebas" - ada RAM di sana yang dapat dibebaskan oleh kernel jika aplikasi Anda secara aktif membutuhkannya.

Itulah yang dikatakan baris kedua kepada Anda. Ini menghapus memori buffer dan cache dari usedkolom (itulah -artinya), dan menambahkan ( +) ke freekolom. (Masalah pembulatan akan terjadi.)

(Baris terakhir menunjukkan status ruang swap Anda.)

Courtesy: https://unix.stackexchange.com/a/33549/14497

Jadi, dalam kasus Anda, 112MB adalah memori yang benar-benar bebas, dan jika Anda mempertimbangkan memori yang digunakan untuk cache, yang dapat dialokasikan ke aplikasi pengguna, jika diperlukan; maka 501 MB adalah memori maksimum aktual yang tersedia untuk digunakan.

disajikan89
sumber
Seseorang yang mencari pembacaan memori tidak pernah tertarik (atau hampir tidak pernah) dalam berapa banyak memori benar-benar gratis, tetapi berapa banyak yang bebas untuk digunakan. memori yang di-cache adalah 'sedang digunakan' tetapi juga bebas untuk digunakan, jadi Anda harus melihatnya.
Nanne
Saya tidak begitu yakin mengapa Anda mengatakan itu? Tampaknya menyiratkan bahwa seseorang akan dengan sengaja menghapus cache (yang memang merupakan hal yang buruk)? Intinya adalah bahwa memuat barang acuall (seperti program yang ingin Anda gunakan) ke dalam memori itu sebenarnya adalah pilihan. Anda ingin agar angka 112 serendah mungkin, tetapi menurut teori Anda, Anda tidak dapat membuka program apa pun. Bukan tujuan yang saya katakan. Juga: cache itu bukan hanya disc-cache, itu juga cache sistem dan sejenisnya
Nanne
@Nanne, Ok. Saya setuju pria. Terima kasih atas koreksinya. Saya telah memperbarui jawaban saya untuk mencerminkan hal yang sama.
saji89
##### TERIMA KASIH SEMUA @ Nanne @ devav2 @ saji89 UNTUK BERBAGI PENGETAHUAN - ANDA MENGAGUMKAN #####
amoooc
10

Jawaban oleh @ saji89 sangat bagus, tetapi hari ini free -mtidak lagi mencetak -/+ buffers/cachebaris, tetapi sebaliknya menempatkan jumlah RAM yang tersedia di availablekolom baru di baris pertama, misalnya:

ubuntu@pg_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
ubuntu@pg_master:~$ free -V
free from procps-ng 3.3.10

Anda dapat membaca komit untuk membebaskan (1) yang menghapus baris di repo mereka . Juga komit untuk menambahkan availablekolom baru .

Paul A Jungwirth
sumber
4

free perintah menunjukkan informasi tentang memori dan ruang swap yang tidak digunakan dan digunakan.

Di bawah ini adalah penjelasan yang diberikan oleh http://www.linfo.org/free.html

Baris pertama, berlabel Mem , menampilkan pemanfaatan memori fisik, termasuk jumlah memori yang dialokasikan untuk buffer dan cache. Buffer, juga disebut buffer memory, biasanya didefinisikan sebagai bagian dari memori yang disisihkan sebagai tempat penyimpanan sementara untuk data yang dikirim ke atau diterima dari perangkat eksternal, seperti HDD, keyboard, printer atau jaringan.

Baris kedua data, yang dimulai dengan - / + buffer / cache , menunjukkan jumlah memori fisik yang saat ini digunakan untuk cache buffer sistem. Ini sangat berarti sehubungan dengan program aplikasi, karena semua data diakses dari file pada sistem yang dilakukan melalui penggunaan read () dan write () system calls1 melewati cache ini. Cache ini dapat sangat mempercepat akses ke data dengan mengurangi atau menghilangkan kebutuhan untuk membaca atau menulis ke HDD atau disk lain.

Baris ketiga, yang dimulai dengan Swap , menunjukkan total ruang swap serta berapa banyak yang saat ini digunakan dan berapa banyak yang masih tersedia.

Mari kita menganalisis penggunaan memori sistem Anda

Anda telah menggunakan freeperintah dengan opsi '-m', yang digunakan untuk menampilkan hasilnya dalam megabyte

-m, --mega
              Display the amount of memory in megabytes.

Total memori adalah 595 (Digunakan + gratis)

Digunakan: 482 Gratis: 112

482MB dari 595MB digunakan oleh sistem Anda, di mana hanya 93MB digunakan oleh program aktif dan sisanya 324MB berada dalam cache

Jadi, ketika Anda menjalankan program apa pun di masa depan, katakan yang membutuhkan lebih dari 120MB. Semua 112MB (saat ini gratis) akan diberikan dan sisa 8MB akan diambil dari buffer / cache program yang tidak aktif.

Sunting : Ditemukan tautan ini , yang memberikan penjelasan yang baik.

devav2
sumber
Saya pikir ini tidak benar. Jika Anda membuang cache, Anda telah menggunakan 93mb sehingga Anda memiliki sisa 501.
Nanne
Menurut Anda mengapa itu tidak benar. Memori bebas pada sistem OP adalah 112MB + 324MB (yang di-cache). Jadi ketika sebuah program baru dijalankan, ia akan menggunakan 112MB terlebih dahulu dan kemudian cache.
devav2
pada dasarnya, karena 595-93=501 dan (memberi atau mengambil 1mb untuk pembulatan), dan itu agaknya seolah-olah 112adalah angka yang menurut Anda dicari oleh op.
Nanne
501 benar dan itulah yang saya coba jelaskan. Dari 595, 482 digunakan. Di mana hanya 93 adalah memori aktif yang digunakan oleh program. Jadi 112 adalah + gratis yang tersedia jika diperlukan lebih banyak, memori dapat diambil dari cache, yang sebelumnya digunakan dan saat ini tidak aktif.
devav2
ok, setuju ya :)
Nanne