GNU/Linux >> Belajar Linux >  >> Linux

Memori tidak aktif Linux

Ada kasus di mana melihat memori yang tidak aktif itu menarik, rasio memori aktif dan tidak aktif yang tinggi dapat menunjukkan tekanan memori misalnya, tetapi kondisi tersebut biasanya disertai dengan paging/swapping yang lebih mudah dipahami dan diamati. File /proc/kpageflags berisi bitmap 64-bit untuk setiap halaman memori fisik, Anda bisa mendapatkan ringkasan dengan page-types yang mungkin disertakan dengan kernel Anda.

Pemahaman Anda tentang aktif dan tidak aktif namun salah

  • memori aktif adalah halaman yang telah diakses "baru-baru ini"
  • memori tidak aktif adalah halaman yang belum diakses "baru-baru ini"

"baru-baru ini" bukanlah ukuran waktu yang mutlak, tetapi juga bergantung pada aktivitas dan tekanan memori (Anda dapat membaca beberapa detail teknis di buku gratis Memahami Manajer Memori Virtual Linux , Bab 10 relevan di sini), atau dokumentasi kernel (pagemap.txt).

Setiap daftar disimpan sebagai LRU (kurang lebih). Halaman memori tidak aktif adalah kandidat yang baik untuk menulis ke swapfile, baik secara pre-emptive (sebelum halaman memori bebas diperlukan) atau ketika memori bebas turun di bawah batas yang dikonfigurasi dan halaman bebas (segera) diperlukan.

Salah satu flag berlaku untuk halaman yang dialokasikan untuk menjalankan proses, dengan pengecualian memori persisten atau bersama, semua memori dibebaskan saat proses keluar, sebaliknya akan dianggap sebagai bug.

Penandaan halaman tingkat rendah ini tidak perlu mengetahui PID (dan halaman memori dapat memiliki lebih dari satu PID yang dipetakan dalam hal apa pun), jadi informasi yang diperlukan untuk menyediakan data yang Anda minta tidak ada di satu tempat.

Untuk melakukannya berdasarkan per proses, Anda perlu mengekstrak rentang alamat virtual dari /prod/PID/maps , konversikan ke PFN (halaman fisik) dengan /proc/PID/pagemap , dan indeks ke /proc/kpageflags . Semuanya dijelaskan dalam pagemap.txt , dan membutuhkan sekitar 60-80 baris C. Kecuali jika Anda memecahkan masalah sistem VM, jumlahnya tidak terlalu menarik. Satu hal yang dapat Anda lakukan adalah menghitung halaman tidak aktif dan halaman yang didukung swap per proses, angka ini harus menunjukkan proses yang memiliki ukuran RSS (penduduk) rendah dibandingkan dengan VSZ (ukuran total VM). Hal lain mungkin menyimpulkan kebocoran memori, tetapi ada alat yang lebih baik untuk tugas itu.


Tidak ada alat seperti itu karena sama sekali tidak berguna untuk program eksternal apa pun.

Satu-satunya bagian dari sistem yang perlu diketahui adalah penangan memori kernel yang akan menggunakannya untuk mengetahui apa yang harus di-page (tukar) jika kehabisan memori yang tersedia.

Satu-satunya kasus terkait yang dapat menimbulkan kekhawatiran adalah jika swap Anda hampir penuh. Jika itu pernah terjadi, tingkatkan saja.

Saya belum pernah melihat masalah aktual yang menyiratkan penyelidikan pada memori yang tidak aktif.


Linux
  1. Kernel Linux:5 inovasi teratas

  2. Cara Menghapus Cache Memori di Linux

  3. Linux – Penggunaan Memori Nyata?

  1. Kali Linux 2018.1 Rilis

  2. Bisakah Linux menggosok memori?

  3. Buang memori proses linux ke file

  1. Penggunaan Memori Linux

  2. Linux – Menentukan Penggunaan Memori dengan Benar di Linux?

  3. Pembunuh Kehabisan Memori Linux