GNU/Linux >> Belajar Linux >  >> Linux

Berapa banyak RAM yang digunakan kernel?

Kernel sedikit keliru. Kernel Linux terdiri dari beberapa proses/utas + modul (lsmod ) jadi untuk mendapatkan gambaran lengkap, Anda perlu melihat keseluruhan bola dan bukan hanya satu komponen.

Kebetulan milik saya menunjukkan slabtop :

 Active / Total Size (% used)       : 173428.30K / 204497.61K (84.8%)

Halaman manual untuk slabtop juga mengatakan ini:

Header statistik slabtop melacak berapa banyak byte slab yang digunakan dan ini bukan ukuran memori fisik. Bidang 'Slab' di file /proc/meminfo melacak informasi tentang memori fisik slab yang digunakan.

Membuang cache

Menjatuhkan cache saya seperti yang disarankan @derobert di komentar di bawah pertanyaan Anda melakukan hal berikut untuk saya:

$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$

 Active / Total Size (% used)       : 61858.78K / 90524.77K (68.3%)

Mengirim 3 melakukan hal berikut:cache halaman gratis, gigi palsu, dan inode. Saya membahas ini lebih lanjut dalam U&L Q&A berjudul:Apakah ada cara atau alat untuk membuang cache dan buffer memori?". Jadi 110 MB ruang saya digunakan hanya dengan mempertahankan info tentang pagecache, dentries, dan inode.

Informasi Tambahan

  • Jika Anda tertarik, saya menemukan entri blog ini yang membahas slabtop dalam sedikit lebih detail. Judulnya:Perintah Linux saat ini:slabtop.
  • Cache Slab dibahas lebih detail di sini di Wikipedia, berjudul:Alokasi Slab.

Jadi, berapa banyak RAM yang digunakan Kernel saya?

Gambar ini agak kabur bagi saya, tetapi berikut adalah hal-hal yang menurut saya "kita tahu".

Lapisan

Kita bisa mendapatkan snapshot dari penggunaan Slab menggunakan teknik ini. Pada dasarnya kita dapat menarik informasi ini dari /proc/meminfo .

$ grep Slab /proc/meminfo
Slab:             100728 kB

Modul

Kita juga bisa mendapatkan nilai ukuran untuk modul Kernel (tidak jelas apakah ukurannya dari disk atau saat di RAM) dengan menarik nilai ini dari /proc/modules :

$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758

Info pelat

Sebagian besar detail tentang SLAB dapat diakses dalam struktur proc ini, /proc/slabinfo :

$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000      0      0    320   25    2 : tunables    0    0    0 : slabdata      0      0      0
fuse_request         100    125    632   25    4 : tunables    0    0    0 : slabdata      5      5      0
fuse_inode            21     21    768   21    4 : tunables    0    0    0 : slabdata      1      1      0

Dmesg

Saat sistem Anda melakukan booting, ada baris yang melaporkan penggunaan memori kernel Linux tepat setelah dimuat.

$ dmesg |grep Memory:
[    0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)

Referensi

  • Kemana memori pergi? Penggunaan memori di kernel 2.6

Bagaimana dengan ini:

Active / Total Size (% used)       : 4709.24K / 5062.03K

Itu pada mesin yang baru di-boot, sangat kecil, berjalan tanpa kepala dengan kernel normal. Jadi tidak membutuhkan banyak.

Seperti petunjuk derobert, kernel akan menggunakan memori yang tersedia untuk caching dan itulah yang Anda lihat di slabtop . Selain cache file, ini berkaitan dengan memori yang dapat dibagikan dari proses userspace yang tidak lagi digunakan. Kernel meninggalkannya di sana sampai hal yang sama diperlukan lagi, atau sesuatu yang secara aktif membutuhkan RAM, dalam hal ini akan dilupakan. Analoginya adalah mengambil buku dari rak dan membukanya untuk dibaca di atas meja:setelah selesai membaca, Anda dapat membiarkan buku terbuka di atas meja jika perlu melihatnya lagi.


Pada server RAM 512 GB yang menjalankan Solaris ini, kernel menggunakan 25 GB:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    3210102             25078    5%
Anon                     15266226            119267   23%
Exec and libs               41457               323    0%
Page cache                3539331             27651    5%
Free (cachelist)         13799571            107809   21%
Free (freelist)          30093164            235102   46%

Total                    65949851            515233
Physical                 65927406            515057

Yang lebih kecil memiliki lebih dari setengah RAM yang digunakan oleh kernel:

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    2149699             16794   52%
Anon                       517016              4039   13%
Exec and libs               15420               120    0%
Page cache                  21840               170    1%
Free (cachelist)             8768                68    0%
Free (freelist)           1404862             10975   34%

Total                     4117605             32168
Physical                  4096002             32000

Tidak ada yang perlu dikhawatirkan, RAM yang tidak digunakan adalah RAM yang terbuang sia-sia.


Linux
  1. Bagaimana cara menggunakan perintah nama dasar?

  2. Bagaimana kernel Linux menentukan urutan panggilan __init?

  3. Mengkompilasi kernel Linux, berapa ukuran yang dibutuhkan?

  1. Berapa banyak data yang biasanya digunakan SSH?

  2. Bagaimana cara mengidentifikasi distro linux yang digunakan?

  3. Bagaimana saya bisa memesan satu blok memori dari kernel Linux?

  1. Cara menggunakan perintah grep Linux

  2. Bagaimana menemukan informasi tentang RAM?

  3. Apakah kernel Linux 3.x menggunakan penjadwal proses CFS?