Smem ile Linux RAM Kullanımınızı Kolayca Anlayın
Yayınlanan: 2022-01-29 Linux bellek kullanımını yorumlamak ve anlamak zor olabilir. smem
ile bir işlemin hangi belleği kullandığını ve hangi işlemlerin en çok kullandığını bulmak kolaydır.
Hafıza kullanımı
Linux, bilgisayarınızın RAM'inde neler olduğunu kontrol etmenin birçok yolunu sunar. Sorun şu ki, bellek yönetimi, işletim sisteminiz için karmaşık bir zorluktur. Fiziksel RAM'i, takas alanı biçimindeki sanal RAM'i ve herhangi bir zamanda çalışan farklı türdeki işlemlerin taleplerini dengelemesi gerekir.
İşlemler kendilerini belleğe yükledikçe RAM tüketirler. Daha sonra daha fazla RAM talep ederler, böylece yapmak üzere tasarlandıkları görevleri yerine getirmek için alana sahip olurlar. Bazı işlemler RAM'i pek etkilemez, diğerleri ise çok fazla belleğe ihtiyaç duyar.
Çekirdek ve işletim sisteminin geri kalanı, masaüstü ortamınız ve çalıştırdığınız her uygulama veya komut satırı oturumu, bilgisayarınızda yüklü olan sınırlı miktardaki RAM'in bir kısmı için yaygara koparıyor. Bazı süreçler diğer süreçleri doğurur. Bazı işlemler RAM'i diğer işlemlerle paylaşır.
Tüm bunları deşifre etmeye çalışmak ve “Bu program veya işlem ne kadar RAM kullanıyor?” sorusuna basit bir cevap bulmaya çalışmak. şaşırtıcı bir meydan okuma olabilir. Parçacıklılık harikadır ve yeri vardır, ancak aynı şekilde, aşırı bilgi bir engel olabilir.
Örneğin, /proc/meminfo sözde dosya sistemine göz atmak için cat
kullanmak, bu makaleyi araştırmak için kullanılan makinede 50 satır çıktı döndürdü. Nereden başlarsın?
kedi /proc/meminfo
Ve bazı Linux yardımcı programları farklı cevaplar verir. Test makinemizde, 2183 işlem kimliğine sahip less
çalışan bir örneğimiz vardı.
Bir işlemin bellek kullanımının tam bir resmini elde etmek için pmap
yardımcı programını -x
(genişletilmiş) seçeneğiyle kullanabiliriz. Bunu less
örneğimizin işlem kimliğiyle kullanacağız:
pmap -x 2183
Çıktının alt kısmında, kullanılan ana RAM miktarı olan Yerleşik Set Boyutu için bir toplam alırız.
Daha sonra -o
(çıktı) seçeneğiyle ps
yardımcı programını kullandık, RSS
sütununu seçtik ve ona aynı less
örneğinin işlem kimliğini ilettik:
ps -o rss 2183
Farklı bir sonuç elde ederiz. Bu, ps
yazarlarının bir tasarım kararıdır. Bu, ps
man
sayfasından:
Diğer yardımcı programların yazarları, RAM kullanımının nasıl ölçüleceği konusunda kendi görüşlerine sahiptir.
RSS, USS ve PSS
Yerleşik Küme Boyutu (RSS), takas alanı hariç, ancak işlemin kullandığı paylaşılan kitaplıkların gerektirdiği tüm RAM'ler dahil, bir işleme ayrılan RAM miktarıdır.
RSS neredeyse her zaman RAM kullanımını aşırı rapor eder. İki veya daha fazla işlem bir veya daha fazla paylaşılan kitaplık kullanıyorsa, RSS her kitaplığın RAM kullanımını bu işlemlerin her biri için RAM kullanım sayısına ekleyecektir. Yanlışlığın yanı sıra, bunda belirli bir ironi var. Paylaşılan kitaplıklar, her işlemin kendi özel kitaplık örneğini yüklemesine gerek olmadığı anlamına gelir. Kitaplık zaten bellekteyse, onu paylaşacak ve RAM yükünü azaltacaktır.
Orantılı Küme Boyutu, paylaşılan bellek miktarını, onu paylaşan işlemler arasında bölerek bu sorunu çözmeye çalışır. Bir belleği paylaşan dört işlem varsa, PSS, paylaşılan RAM'in %25'inin bu işlemlerin her biri tarafından kullanıldığını bildirir. Bu bir yaklaşıklıktır, ancak olup bitenlere RSS'nin çizdiği resimden daha çok benzemektedir.
Benzersiz Küme Boyutu, ister doğrudan işlem tarafından tüketilsin, ister yalnızca işlem tarafından kullanılan kitaplıklar tarafından kullanılsın, yalnızca bir işlem tarafından kullanılan RAM miktarıdır. Yine, takas alanını yok sayar. Yalnızca gerçek, fiziksel RAM ile ilgileniyor.
USS ve PSS, smem
yazarı Matt Mackall tarafından önerilen terim ve kavramlardır.
smem Yardımcı Programı
smem
yardımcı programı, süreçler, kullanıcılar, eşleme veya sistem genelinde kullanılan bellek hakkında raporlar. Test ettiğimiz tüm dağıtımlarda kurulum gerekiyordu. Ubuntu'ya kurmak için şu komutu kullanın:
sudo apt smem yükleyin
smem
yüklemek için şunu yazmanız gerekir:
sudo dnf smem yükleyin
smem
smem yüklemek için şunu kullanın:
sudo pacman -Sy smem
smem
kullanmak, size RAM kullanan işlemlerin bir listesini verir.
küçük
Terminal penceresinde bir bilgi tablosu görüntülenir.
Sütunlar:
- PID : Belleği kullanan işlemin işlem kimliği.
- Kullanıcı : Sürecin sahibi olan kullanıcının kullanıcı adı.
- Komut : İşlemi başlatan komut satırı.
- Swap : İşlemin ne kadar takas alanı kullandığı.
- USS : Eşsiz Set Boyutu.
- PSS : Oransal Küme Boyutu.
- RSS : Yerleşik Küme Boyutu.
Yüzde olarak ifade edilen boyutları görmek için -p
(yüzde) seçeneğini kullanın.
smem -p
Bayt cinsinden boyutlar yüzdelerle değiştirilmiştir.
Rakamları daha insan dostu bir şekilde görmek için -k
(kısalt) seçeneğini kullanın. Bu, rakamları küçültür ve birim göstergeleri ekler.
smem -k
Boyutlar ham bayt yerine megabayt, gigabayt vb. olarak gösterilir.
Toplamlar satırı eklemek için -t
(toplamlar) seçeneğini kullanın.
smem -k -t
Çıktının son satırı, her sütun için toplamları gösterir.
Raporun İyileştirilmesi
smem
kullanıcılar, haritalama (kütüphaneler) veya sistem genelinde bellek kullanımı hakkında rapor vermesini isteyebilirsiniz. Çıktıyı kullanıcıya göre filtrelemek için -u
(kullanıcı) seçeneğini kullanın. Kendi kullanımınızdan fazlasını görmek istiyorsanız, sudo
ile smem
çalıştırmanız gerekeceğini unutmayın.
smem -u
sudo smem -u
Gördüğünüz gibi, çıktı sekiz karakterden uzun kullanıcı adları için şekilsizleşiyor.
Hangi süreçlerin kitaplıkları kullandığına veya hangi kullanıcıların bu işlemlere sahip olduğuna bakılmaksızın, kullanımda olan kitaplıklarla eşlenen kullanımı görmek için -m
(eşleme) seçeneğini kullanın.
smem -m -k -t
Ayrıca insan tarafından okunabilir değerler ve toplam istedik.
Sistem genelinde bellek kullanımını görmek için -w
(sistem genelinde) seçeneğini kullanın.
smem -w -k -t
Tek Bir Programda Raporlama
Biraz komut satırı büyüsü ile tek bir program ve tüm alt süreçleri hakkında rapor verebiliriz. Çıktıyı tail
smem
ve tail
yalnızca son satırı göstermesini isteyeceğiz. smem
insan tarafından okunabilir değerleri kullanmasını ve bir toplam sağlamasını söyleyeceğiz. Toplam son satır olacak ve bu bizim için gösterilecek satır tail
.
-c
(sütunlar) seçeneğini smem
ile kullanacağız ve çıktımıza hangi sütunların dahil edilmesini istediğimizi söyleyeceğiz. Bunu Orantılı Küme Boyutu sütunuyla sınırlayacağız. -P
(işlem filtresi) seçeneği, smem
bir arama dizisi vermemizi sağlar. Yalnızca eşleşen çıktı satırları dahil edilecektir.
smem -c pss -P firefox -k -t | kuyruk -n 1
Bu, bir programın RAM tüketimini ve alt işlemlerini bulmanın hızlı ve temiz bir yoludur.
Grafik Oluşturma
Smem'in grafikler oluşturmasını sağlamak için --pie
veya --bar
seçeneklerini smem
. Çok fazla kategori ile grafiklerin çabucak anlaşılmaz hale geldiği söylenmelidir, ancak hızlı bir görsel genel bakış için faydalı olabilirler.
Komut formatı:
smem --pie name -s uss
Pasta grafiği kendi görüntüleyici penceresinde görünür.
Diğer grafikleri görmek için uss
yerine pss
veya rss
kullanın. Bir çubuk grafiği görmek için --bar
yerine --pie
kullanın.
Bunun çalışması için matplotlib
kitaplığı ile birlikte Python'un kurulu olması gerekir. Bunlar, test ettiğimiz Ubuntu, Fedora ve Manjaro dağıtımlarında zaten yüklüydü.
Güzel şeyler küçük paketlerde gelir
smem
yardımcı programının birkaç püf noktası daha var ve kılavuz sayfasına göz man
önerilir. Ana repertuarı burada özetlediğimiz şeydir ve CLI araç kutunuzda olması gereken harika bir küçük araçtır.
İLGİLİ: Bilmeniz Gereken 37 Önemli Linux Komutu