Apa arti dari penghitung memori yang berbeda di FreeBSD?

20

top memberi tahu saya:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free

Munin menunjukkan ini sedikit lebih jelas:

rtr1 penggunaan memori tahunan

Seperti yang Anda lihat, server memiliki sekitar 8GB ram. Saya bertanya-tanya apakah saya dapat menjejalkan binatang ini ke server 2GB yang lebih sederhana . Sekarang saya tahu apa artinya aktif dan buffer, saya pikir. Tetapi saya benar-benar khawatir dengan gumpalan memori "berkabel" dan "tidak aktif". Itu tidak memetakan ke proses yang ada sejauh yang saya tahu.

Perhatikan bagaimana garis hijau "aktif" naik pada bulan Desember: saat itulah kami mulai menggunakan daemon BGP pada router ini. Saya tidak benar-benar mengerti apa yang terjadi pada bulan April dan Mei, tetapi saya ingat melakukan upgrade sistem dan beralih ke pkgng sekitar waktu itu.

Inilah router cadangan untuk yang pertama, dengan lebih sedikit ram (4GB):

rtr0 penggunaan memori tahunan

Tampaknya yang ini hidup dengan sangat baik dengan setengah RAM dan masih menyisakan sekitar 2GB gratis, yang membuat saya percaya saya bisa beralih ke kotak 2GB untuk server ini, menurunkan biaya dan pemeliharaan ...

Ada saran? Apa arti berbagai penghitung memori yang ditunjukkan di atas? Lebih khusus, apa yang dilakukan:

  • Aktif
  • Non-aktif
  • Cache
  • Buffer
  • Wired
  • Gratis

...sangat jahat? Saya telah menemukan beberapa tulisan yang menjelaskan bit-bit dari karya subsistem VM, dan saya ingat memiliki "ah-ah!" saat memahami semua ini sekitar 12 tahun yang lalu, tetapi saya lupa. :) Bahkan buku pegangan FreeBSD yang setia gagal menjawab pertanyaan saya ...

Bisakah saya menurunkan versi ke 2GB?

anarcat
sumber
Berikut ini adalah versi Linux dari pertanyaan ini (menjelaskan freeperintah dari procps ): linux - penggunaan memori nyata
Adam Katz

Jawaban:

25
  • Active: Memori saat ini sedang digunakan oleh suatu proses
  • Inactive: Memori yang telah dibebaskan tetapi masih di-cache karena dapat digunakan lagi. Jika lebih banyak Freememori diperlukan, memori ini dapat dihapus dan menjadi bebas. Memori ini tidak dihapus sebelum dibutuhkan, karena "memori bebas adalah memori yang terbuang", tidak ada biaya apa pun untuk menyimpan data lama di sekitar jika diperlukan lagi.
  • Wired: Memori digunakan oleh Kernel. Memori ini tidak dapat ditukar
  • Cache: Memori yang digunakan untuk menyimpan data, dapat segera dibebaskan jika diperlukan
  • Buffers: Disk cache
  • Free: Memori yang sepenuhnya gratis dan siap digunakan. Inactive, Cachedan Buffersdapat menjadi gratis jika dibersihkan.

Jadi, Anda bisa menambahkan Inactiveke Freehitungan Anda dan menganggapnya tidak digunakan. Wiredadalah memori yang digunakan oleh kernel, yang termasuk tumpukan jaringan. menjalankan netstat -makan memberi Anda ringkasan penggunaan memori oleh tumpukan jaringan.

Berdasarkan grafik Anda, selain lompatan yang menyangkut dalam wiredmemori pada awal Maret, ya, Anda harus dapat menjalankan beban kerja itu pada ram 2GB. Jika Anda melakukannya, pertimbangkan untuk menjalankan i386 daripada amd64, karena setiap alokasi memori akan mengambil lebih sedikit ruang, karena pointer akan menjadi 32bit, bukan 64bit.

Allan Jude
sumber
1
Memori 'tidak aktif' "Tidak dapat dialokasikan kembali ke proses lain", jadi itu tidak boleh dianggap 'tidak digunakan'. Lihat wiki.freebsd.org/Memory
humbads
1
Penghitung 'Tidak Aktif' telah dibagi menjadi 2 item terpisah di FreeBSD yang lebih baru. 'Tidak aktif' dan 'Binatu' (memori yang masih perlu dibilas untuk swap atau disk sebelum dapat dibebaskan). Penjelasan Tambahan di sini: lists.freebsd.org/pipermail/freebsd-arch/2016-November/…
Allan Jude