Ingatan

Perintah untuk Menguruskan Memori Linux

Perintah untuk Menguruskan Memori Linux
Sistem UNIX / Linux mengandungi alat baris perintah untuk hampir semua perkara. Ini termasuk juga program untuk mengendalikan memori. Dalam artikel ini kami menunjukkan pilihan perintah yang sangat berguna untuk anda sebagai pengguna Linux.

Kesan perkakasan menggunakan dmidecode

Pengesanan perkakasan automatik selalu seperti lotere, tetapi menjadi lebih baik dalam beberapa tahun kebelakangan ini kerana banyak pengeluar mendokumentasikan produk mereka dengan lebih terperinci dan mempunyai maklumat khusus yang tersedia dalam talian juga. Untuk mengetahui mengenai maklumat perkakasan mengenai RAM yang dipasang di mesin anda, gunakan dmidecode arahan (pakej untuk Debian GNU / Linux, Ubuntu dan Linux Mint: dmidecode).

Antara maklumat lain, alat ini melaporkan data terperinci mengenai komponen sistem yang dipasang seperti pemproses, papan bawah, dan RAM. Maklumat tersebut berdasarkan pada Desktop Management Interface (DMI) [1], yang merupakan kerangka kerja yang mengklasifikasikan komponen tunggal pada desktop, notebook atau pelayan dengan mengabstrak komponen-komponen ini dari perisian yang mengurusnya [2]. Pilihannya --taip memori merujuk kepada peranti memori. Untuk kelas DMI lain, lihat halaman manual dmidecode.

# dmidecode - jenis memori
# dmidecode 2.12
SMBIOS 2.7 hadir.
Kendalikan 0x0007, DMI jenis 16, 23 bait
Susunan Ingatan Fizikal
Lokasi: Papan Sistem Atau Papan Induk
Penggunaan: Memori Sistem
Jenis Pembetulan Ralat: Tiada
Kapasiti Maksimum: 16 GB
Pengendali Maklumat Ralat: Tidak Diberikan
Bilangan Peranti: 1
Kendalikan 0x0008, DMI jenis 17, 34 bait
Peranti Memori
Pemegang Array: 0x0007
Pengendali Maklumat Ralat: Tidak Diberikan
Lebar Jumlah: 64 bit
Lebar Data: 64 bit
Saiz: 8192 MB
Faktor Bentuk: SODIMM
Set: Tiada
Pencari: SaluranA-DIMM0
Pencari Bank: BANK 0
Jenis: DDR3
Jenis Perincian: Segerak
Kelajuan: 1600 MHz
Pengilang: Samsung
Nombor Siri: 25252105
Tag Aset: Tiada
Nombor Bahagian: M471B1G73DB0-YK0
Kedudukan: Tidak diketahui
Kelajuan Jam yang Dikonfigurasi: 1600 MHz

Mesin ini kini dilengkapi dengan RAM 8G DDR3 dengan kelajuan jam yang dikonfigurasi 1600 MHz. Seperti yang anda lihat, kapasiti maksimum RAM on-board adalah 16G yang bermaksud ia dapat dilanjutkan dengan modul 8G kedua.

Maklumat grafik mengenai memori

Sekiranya anda memilih antara muka grafik untuk mendapatkan maklumat ini, alat Hardinfo [3] dan Hardware Lister (versi GTK +) [4] mungkin menarik bagi anda. Pada Debian GNU / Linux, Ubuntu dan Linux Mint, program ini tersedia melalui pakej hardinfo dan lshw-gtk. Gambar 2 menunjukkan antara muka pengguna Hardinfo yang memaparkan maklumat memori pada pemasangan Xubuntu.

Berapa banyak memori yang ada pada masa ini

Kadang kala, lebih kurang lebih. Pada baris perintah, maklumat mengenai memori tersedia melalui percuma perintah. Pada Debian GNU / Linux, Ubuntu dan Linux Mint, program ini adalah sebahagian daripada pakej procps [5]. Gambar 2 menunjukkan output di tetingkap terminal.

Sebagai pilihan pilihan seterusnya, percuma menerima pelbagai parameter seperti:

Pada rajah 3 output ditunjukkan dalam megabait menggunakan pilihan -m. Sistem ini mempunyai RAM 4G sedangkan 725M sedang digunakan.

Maklumat memori dari sudut pandangan kernel Linux

Alat yang disebutkan di atas bergantung pada maklumat mentah yang disimpan di sistem fail proc kernel Linux. Untuk menunjukkan butiran ini keluarkan kandungan fail / proc / meminfo menggunakan kucing utiliti di terminal:

$ kucing / proc / meminfo
Jumlah: 7888704 kB
MemFree: 302852 kB
MemA Tersedia: 448824 kB
Penampan: 17828 kB
Cache: 326104 kB
TukarCached: 69592 kB
Aktif: 2497184 kB
Tidak aktif: 650912 kB
Aktif (anon): 2338748 kB
Tidak aktif (anon): 525316 kB
Aktif (fail): 158436 kB
Tidak aktif (fail): 125596 kB
Tidak dapat diramalkan: 64 kB
Terkunci: 64 kB
Jumlah Pertukaran: 16150524 kB
SwapFree: 15668480 kB
Kotor: 3008 kB
Balik tulis: 0 kB
Halaman Anon: 2774656 kB
Dipetakan: 4414752 kB
Shmem: 59900 kB
Papak: 130216 kB
SR Boleh dituntut: 61748 kB
Tuntutan balas: 68468 kB
KernelStack: 7328 kB
Jadual Meja: 42844 kB
NFS_Tidak stabil: 0 kB
Lantunan: 0 kB
WritebackTmp: 0 kB
CommitLimit: 20094876 kB
Komitmen_AS: 10344988 kB
VmallocJumlah: 34359738367 kB
VmallocDigunakan: 367296 kB
VmallocChunk: 34359345768 kB
Perkakasan rosak: 0 kB
AnonHugePages: 0 kB
Jumlah Besar_Jumlah: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

Untuk lebih banyak maklumat statistik mengenai penggunaan, memori dan proses CPU, anda mungkin dapat melihat alat tersebut vmstat, dan iostat (Pakej Debian procps dan sysstat).

Bekerja dengan proses - ps, htop dan pstree

Untuk menunjukkan proses aktif sistem Linux anda gunakan ps perintah. Biasanya, output disusun mengikut abjad. Tetapi ps arahan boleh melakukan lebih banyak lagi. Menggunakan aux pilihan --urutkan -rss output senarai proses disusun mengikut penggunaan memori mereka dalam urutan atas-bawah. Gambar 4 menunjukkan proses yang mempunyai permintaan tertinggi pada memori. Keluarannya disusun mengikut ruangan ke-6 bertajuk RSS yang menyingkat Resident Set Size. Nilai diberikan dalam kilobyte.

Perintahnya ps, pstree dan htop berkait rapat dari segi maklumat yang dipaparkan alat ini. Kedua-duanya pstree dan htop paparkan grafik untuk menggambarkan kebergantungan proses. htop bertindak sebagai versi interaktif yang membolehkan anda menatal senarai proses ke atas dan ke bawah. Rajah 5 menunjukkan htop pada sistem desktop dengan pilihan proses yang disusun berdasarkan penggunaan memori tertentu (lajur ke-5).

Mencari proses yang menggunakan memori Swap

Semakin banyak proses dilancarkan, semakin banyak memori digunakan pada masa yang sama. Sebaik sahaja sistem Linux anda kehabisan halaman memori yang tidak digunakan, kernel Linux memutuskan untuk menukar halaman memori ke cakera menggunakan kaedah Least Latest Used (LRU). Untuk menjawab soalan, proses mana yang menggunakan memori pertukaran dan berapa banyak yang digunakan khususnya, anda mungkin melihat output program teratas. Pada tahun 2016, Erik Ljungstrom menerbitkan penerangan ringkas mengenai bagaimana mendapatkan maklumat tersebut dan memanjangkan lajur ini ke output teratas [6]. Gambar 6 menunjukkan output ini pada sistem yang mempunyai banyak halaman memori di RAM yang tersisa dan tidak menggunakan Swap, pada masa ini.

Selanjutnya, pada tahun 2011 ia telah menerbitkan skrip bash yang menilai maklumat dari sistem file proc untuk memaparkan penggunaan proses pertukaran dengan proses [7]. Walaupun 7 tahun kemudian dan sudah digambarkan sebagai usang, skripnya masih bagus dan menunjukkan cara mengotomatisasi tugas pada sistem Linux. Itulah sebabnya kami yakin dapat menunjukkannya sekali lagi di sini.

Output skrip adalah seperti berikut (jalankan seperti akar pengguna mengambil data penuh):

# ./ tukar.sh
PID = 1 - Tukar yang digunakan: 0 - (systemd)
PID = 2 - Tukar yang digunakan: 0 - (kthreadd)
PID = 3 - Tukar yang digunakan: 0 - (ksoftirqd / 0)
PID = 5 - Tukar yang digunakan: 0 - (kworker / 0: 0H)
PID = 6 - Tukar yang digunakan: 0 - (kworker / u16: 0)
PID = 7 - Tukar yang digunakan: 0 - (rcu_sched)
PID = 8 - Tukar yang digunakan: 0 - (rcu_bh)
PID = 9 - Tukar yang digunakan: 0 - (migrasi / 0)
PID = 10 - Tukar yang digunakan: 0 - (pengawas / 0)
PID = 11 - Tukar yang digunakan: 0 - (pengawas / 1)
PID = 12 - Tukar yang digunakan: 0 - (migrasi / 1)
PID = 13 - Tukar yang digunakan: 0 - (ksoftirqd / 1)
PID = 15 - Tukar yang digunakan: 0 - (kworker / 1: 0H)
PID = 16 - Tukar yang digunakan: 0 - (pengawas / 2)
PID = 17 - Tukar yang digunakan: 0 - (migrasi / 2)
PID = 18 - Tukar yang digunakan: 0 - (ksoftirqd / 2)
PID = 20 - Tukar yang digunakan: 0 - (kworker / 2: 0H)

#

Kesimpulannya

Kotak alat Linux mengandungi senarai program tanpa henti yang tersedia untuk membantu anda menganalisis penggunaan memori sistem Linux anda. Kami hanya melihat sekejap - dari data mentah hingga maklumat yang diproses - semuanya ada di sana. Ketahui alat anda sahaja. Untuk membiasakan diri dengan mereka luangkan sedikit masa dan bermain dengan mereka.

Ini adalah bahagian 2 dari siri Pengurusan Memori Kernel Linux.  Bahagian 1 membincangkan Swap Memory, di Bahagian Tiga siri ini kita akan membincangkan bagaimana mengoptimumkan penggunaan memori. Ini akan merangkumi pengurusan ramdisk serta fail pertukaran mampatan.

Pautan dan Rujukan

Siri Pengurusan Memori Linux

Ucapan terima kasih

Penulis ingin mengucapkan terima kasih kepada Mandy Neumeyer dan Gerold Rupprecht atas sokongan mereka semasa menyiapkan artikel ini.

Cara Menggunakan Xdotool untuk Merangsang Klik dan Penekanan Tetikus di Linux
Xdotool adalah alat baris arahan sumber terbuka dan bebas untuk mensimulasikan klik dan tekan kekunci tetikus. Artikel ini akan merangkumi panduan rin...
5 Produk Tetikus Komputer Ergonomik Teratas untuk Linux
Adakah penggunaan komputer yang berpanjangan menyebabkan rasa sakit di pergelangan tangan atau jari anda? Adakah anda mengalami sendi kaku dan selalu ...
Cara Mengubah Tetapan Tetikus dan Pad Sentuh Menggunakan Xinput di Linux
Sebilangan besar pengedaran Linux dihantar dengan perpustakaan "libinput" secara lalai untuk menangani peristiwa input pada sistem. Ia dapat memproses...