Mudah Memahami Penggunaan RAM Linux Anda Dengan Smem

Diterbitkan: 2022-01-29
Layar laptop menampilkan logo shell Bash di atas latar belakang merah
fatmawati achmad zaenuri/Shutterstock

Penggunaan memori Linux bisa jadi sulit untuk ditafsirkan dan sulit dipahami. Dengan smem , mudah untuk mengetahui memori apa yang digunakan suatu proses, dan proses mana yang paling banyak digunakan.

Penggunaan Memori

Linux memberi Anda banyak cara untuk memeriksa apa yang terjadi dengan RAM komputer Anda. Masalahnya, manajemen memori merupakan tantangan yang rumit untuk sistem operasi Anda. Itu harus menyulap RAM fisik, RAM virtual dalam bentuk ruang swap, dan tuntutan berbagai jenis proses yang berjalan pada satu waktu.

Berapa Banyak RAM yang Dibutuhkan Komputer Anda untuk Game PC?
TERKAIT Berapa Banyak RAM yang Dibutuhkan Komputer Anda untuk Game PC?

Proses mengkonsumsi RAM saat mereka memuat dirinya ke dalam memori. Mereka kemudian meminta lebih banyak RAM sehingga mereka memiliki ruang untuk melakukan tugas apa pun yang dirancang untuk mereka lakukan. Beberapa proses hampir tidak mempengaruhi RAM, yang lain sangat haus memori.

Kernel dan sistem operasi lainnya, lingkungan desktop Anda, dan setiap aplikasi atau sesi baris perintah yang Anda jalankan semuanya menuntut sebagian dari jumlah terbatas RAM yang terpasang di komputer Anda. Beberapa proses menelurkan proses lain. Beberapa proses berbagi RAM dengan proses lain.

Cara Memeriksa Penggunaan Memori Dari Terminal Linux
TERKAIT Cara Memeriksa Penggunaan Memori Dari Terminal Linux

Mencoba menguraikan semua ini dan memberikan jawaban sederhana untuk pertanyaan "Berapa banyak RAM yang digunakan program atau proses ini?" bisa menjadi tantangan yang mengejutkan. Granularitas sangat bagus dan memiliki tempatnya, tetapi, sama halnya, informasi yang berlebihan dapat menjadi hambatan.

Iklan

Misalnya, menggunakan cat untuk mengintip ke dalam sistem file semu /proc/meminfo mengembalikan 50 baris output pada mesin yang digunakan untuk meneliti artikel ini. Di mana Anda mulai?

 kucing /proc/meminfo

Dan beberapa utilitas Linux memberikan jawaban yang berbeda. Pada mesin uji kami, kami memiliki instance yang less berjalan, yang memiliki ID proses 2183.

Kita dapat menggunakan utilitas pmap dengan opsi -x (diperpanjang) untuk mendapatkan gambaran lengkap tentang penggunaan memori suatu proses. Kami akan menggunakannya dengan ID proses dari instance kami less :

 pmap -x 2183 

Menanyakan peta memori dari satu proses

Di bagian bawah output, kami mendapatkan total Ukuran Resident Set, yang merupakan jumlah RAM utama yang digunakan.

Output pmap untuk satu instance less

Kami kemudian menggunakan utilitas ps dengan opsi -o (output), memilih kolom RSS , dan memberikan ID proses dari instance yang sama less :

 ps -o rss 2183 

Menggunakan ps untuk melihat RSS dari instance less yang sama

Kami mendapatkan hasil yang berbeda. Ini adalah keputusan desain dari pihak penulis ps . Ini dari halaman man ps :

Bidang SIZE dan RSS tidak menghitung beberapa bagian dari suatu proses termasuk tabel halaman, tumpukan kernel, struct thread_info, dan struct task_struct. Ini biasanya setidaknya 20 KiB dari memori yang selalu ada. SIZE adalah ukuran virtual dari proses (code+data+stack).
Iklan

Penulis utilitas lain memiliki pandangan mereka sendiri tentang cara mengukur penggunaan RAM.

RSS, USS, dan PSS

Resident Set Size (RSS) adalah jumlah RAM yang dialokasikan untuk suatu proses, tidak termasuk ruang swap, tetapi termasuk RAM apa pun yang diperlukan oleh pustaka bersama yang digunakan proses tersebut.

Mengapa RAM Komputer Anda Penuh?
TERKAIT Mengapa Ada baiknya RAM Komputer Anda Penuh

RSS hampir selalu melaporkan penggunaan RAM secara berlebihan. Jika dua atau lebih proses menggunakan satu atau lebih perpustakaan bersama, RSS hanya akan menambahkan penggunaan RAM dari setiap perpustakaan ke jumlah penggunaan RAM untuk setiap proses tersebut. Selain ketidakakuratan, ada ironi tertentu dalam hal ini. Pustaka bersama berarti setiap proses tidak perlu memuat instance perpustakaan pribadinya sendiri. Jika perpustakaan sudah ada di memori, perpustakaan itu akan membagikannya—dan mengurangi overhead RAM.

Ukuran Set Proporsional mencoba mengatasi ini dengan membagi jumlah memori bersama di antara proses yang membagikannya. Jika ada empat proses yang berbagi beberapa memori, PSS melaporkan bahwa 25% dari RAM bersama digunakan oleh masing-masing proses tersebut. Ini adalah perkiraan tetapi lebih mirip dengan apa yang terjadi daripada gambar yang dilukis RSS.

Unique Set Size adalah jumlah RAM yang digunakan secara eksklusif oleh suatu proses apakah itu dikonsumsi secara langsung oleh proses, atau digunakan oleh perpustakaan yang hanya digunakan oleh proses. Sekali lagi, itu mengabaikan ruang swap. Ini hanya tertarik pada RAM fisik asli.

USS dan PSS adalah istilah dan konsep yang diusulkan oleh Matt Mackall, penulis smem .

Utilitas UKM

Utilitas smem melaporkan memori yang digunakan oleh proses, pengguna, pemetaan, atau seluruh sistem. Pada semua distribusi yang kami uji, diperlukan penginstalan. Untuk menginstalnya di Ubuntu, gunakan perintah ini:

 sudo apt install smem 

Menginstal smem di Ubuntu

Untuk menginstal smem di Fedora Anda perlu mengetik:

 sudo dnf instal smem 

Menginstal smem di Fedora

Untuk menginstal smem di Manjaro gunakan:

 sudo pacman -Sy smem 

Menginstal smem di Manjaro

Iklan

Menggunakan smem tanpa opsi memberi Anda daftar proses yang menggunakan RAM.

 kecil 

Menjalankan smem tanpa opsi baris perintah

Tabel informasi ditampilkan di jendela terminal.

Output default dari smem

Kolom-kolom tersebut adalah:

  • PID : ID proses dari proses yang menggunakan memori.
  • Pengguna : Nama pengguna pengguna yang memiliki proses.
  • Command : Baris perintah yang meluncurkan proses.
  • Swap : Berapa banyak ruang swap yang digunakan proses.
  • USS : Ukuran Set Unik.
  • PSS : Ukuran Set Proporsional.
  • RSS : Ukuran Set Resident.

Untuk melihat ukuran yang dinyatakan sebagai persentase, gunakan opsi -p (persentase).

 smem -p 

Menggunakan opsi smem -p untuk meminta persentase

Ukuran dalam byte telah diganti dengan persentase.

keluaran smem menunjukkan persentase

Untuk melihat gambar yang dirender dalam bentuk yang lebih ramah manusia, gunakan opsi -k (singkat). Ini mengecilkan angka dan menambahkan indikator unit.

 smem -k 

Menggunakan opsi smem -k untuk menampilkan ukuran dengan indikator satuan

Alih-alih byte mentah, ukurannya ditampilkan dalam megabyte, gigabyte, dan seterusnya.

keluaran smem menggunakan indikator satuan seperti K, M, dan G

Iklan

Untuk menambahkan garis total, gunakan opsi -t (total).

 smem -k -t 

Menggunakan opsi smem -t untuk menambahkan baris total ke output

Baris terakhir dari output menunjukkan total untuk setiap kolom.

Garis total di bagian bawah keluaran smem

Menyempurnakan Laporan

Anda dapat meminta smem untuk melaporkan penggunaan memori oleh pengguna, pemetaan (perpustakaan), atau seluruh sistem. Untuk memfilter output menurut pengguna, gunakan opsi -u (pengguna). Perhatikan bahwa jika Anda ingin melihat lebih dari sekadar penggunaan Anda sendiri, Anda harus menjalankan smem dengan sudo .

 smem -u
 sudo smem -u 

Menggunakan opsi smem -u dengan dan tanpa sudo

Seperti yang Anda lihat, output menjadi tidak berbentuk untuk nama pengguna yang lebih panjang dari delapan karakter.

Untuk melihat penggunaan yang dipetakan ke pustaka yang sedang digunakan, terlepas dari proses mana yang menggunakan pustaka, atau pengguna mana yang memiliki proses tersebut, gunakan opsi -m (pemetaan).

 smem -m -k -t 

Menggunakan opsi smem -m untuk mendapatkan laporan mapper

Kami juga meminta nilai yang dapat dibaca manusia dan total.

Laporan yang dipetakan smem menunjukkan penggunaan memori oleh perpustakaan

Untuk melihat penggunaan memori di seluruh sistem, gunakan opsi -w (seluruh sistem).

 smem -w -k -t 

Laporan seluruh sistem smem

Pelaporan pada Program Tunggal

Dengan sedikit keajaiban baris perintah, kami dapat melaporkan satu program dan semua sub-prosesnya. Kami akan menyalurkan output dari smem ke tail dan meminta tail untuk hanya menampilkan baris terakhir. Kami akan memberi tahu smem untuk menggunakan nilai yang dapat dibaca manusia dan memberikan total. Totalnya akan menjadi baris terakhir, dan itulah garis tail yang akan ditampilkan untuk kita.

Iklan

Kami akan menggunakan opsi -c (kolom) dengan smem dan memberi tahu kolom mana yang ingin kami sertakan dalam output kami. Kami akan membatasi ini pada kolom Proportional Set Size. Opsi -P (filter proses) memungkinkan kita memberikan string pencarian ke smem . Hanya garis keluaran yang cocok yang akan disertakan.

 smem -c pss -P firefox -k -t | ekor -n 1 

Menggunakan smem untuk menunjukkan penggunaan memori oleh suatu proses dan anak-anaknya

Itulah cara cepat dan rapi untuk mengetahui konsumsi RAM suatu program dan proses turunannya.

Menghasilkan Grafik

Anda dapat melewatkan opsi --pie atau --bar agar smem menghasilkan grafik. Harus dikatakan bahwa dengan terlalu banyak kategori, grafik dengan cepat menjadi tidak dapat dipahami, tetapi mereka dapat berguna untuk tinjauan visual yang cepat.

Format perintahnya adalah:

 smem --nama kue -s uss 

Meminta smem untuk membuat diagram lingkaran

Diagram lingkaran muncul di jendela penampilnya sendiri.

Bagan pai kecil di jendela penampilnya sendiri

Untuk melihat plot lain, gunakan pss atau rss alih-alih uss . Untuk melihat grafik batang, gunakan --bar alih-alih --pie .

Iklan

Agar ini berfungsi, Anda harus menginstal Python, bersama dengan pustaka matplotlib . Ini sudah diinstal pada distribusi Ubuntu, Fedora, dan Manjaro yang kami uji.

Hal-Hal Baik Datang Dalam Paket Kecil

Utilitas smem memiliki beberapa trik lagi, dan Anda dianjurkan untuk memeriksa halaman man . Repertoar utamanya adalah apa yang telah kami uraikan di sini, dan ini adalah alat kecil yang hebat untuk dimiliki di kotak alat CLI Anda.

TERKAIT: 37 Perintah Linux Penting yang Harus Anda Ketahui