Linux'ta gerçek önbelleklenmiş / önceden kaydedilmiş bellek kullanımı nasıl elde edilir?


1

Bu yazıyla aynı askıda kalıyorum: https://askubuntu.com/questions/41778/computer-freezing-on-almost-full-ram-possibly-disk-cache-problem

Özetle: Önceden takılmış / önbelleğe alınmış / disk belleği olan RAM geri kazanma işleminin uzun sürmesi gibi gözüküyor, bu yüzden sürekli olarak, bilgisayarın kilitlenip beni yeniden başlatmaya zorladığı noktaya delice disk okumaları yapma korkusuyla yaşıyorum.


Bu yüzden bu soruna daha fazla daldım ve şu yararlı komutu aldım:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Hangi önceden yerleştirilmiş RAM'i bırakıyor ... bir noktaya kadar kaldı, çünkü hala bir miktar kaldı, ki bu da "statik" bir parça gibi görünüyor.

Bunu prefetchless RAM kullanımına eklemenin üst kullanılan RAM ile eşleştiğini fark ettim .

Ancak, bu bana ne kadar "statik" önceden ayarlanmış RAM kullandığımı söylemiyor. Bunu bilmek, toplam RAM sayımını elde etmek üzereyken, Linux'un disk belleği önbellek boşaltmasına işini yapmak için yeterli zaman vermeme izin verecek.

Örn: Önbellek ~ 1000 MiB, ardından "echo 3 | sudo tee / proc / sys / vm / drop_caches" yaptıktan sonra ~ 700 MiB oldu; ~ 700 MiB, bilmem gereken önceden kaydedilmiş RAM'in "statik" kısmıdır.

Öyleyse sorum şu: Prefetched / Cached / Paged RAM kullanımının -real- "statik" kısmını nasıl alıyorsunuz?


Not:

Öte yandan, bir yol kökün ones- (gibi Htop en -hatta her süreçler tarafından kullanılan toplam RAM sadece çıkışa yoktur Mem değeri)?

Yanıtlar:


2

Her işlem tarafından kullanılan RAM’i tüm kullanıcılar için aşağıdaki komutu kullanarak bulabilirsiniz:

ps -eo pid,command,rss,user

Bu, sırayla işlem kimliğini, komutunu, kullanılan belleği ve işlem kullanıcısını verir.

Tüm işlemler tarafından kullanılan toplam RAM miktarını istiyorsanız, aşağıdaki komut çalışacaktır.

free

Her işlem tarafından kullanılan belleğin TOPLAMI'nı istiyorsanız, aşağıdaki kodu kullanın:

ps -eo rss | awk '{sum+=$1} END {print sum}'

Bu size tüm işlemler tarafından kullanılan toplam bellek miktarı olan bir değer verecektir.


Doh, net olmasaydım üzgünüm. "Tüm RAM'ler" derken, her işlem tarafından kullanılan toplam RAM'i kastediyordum.
X.LINK

1
Yukarıdaki düzenlememe bakın
Nasir Riley

Toplam tutarı gösterdi, ancak başka çıktılar da var. Bunu anlayabiliyordum, ancak tek ve sadece bir çıktıya ihtiyacım var, böylece çok fazla kaynak kullanmadan bazı tekrar eden matematik işlemleri yapabiliyorum. Daha da apriopriate, bu değeri dahili olarak elde etmede özgür olabilirdi, fakat ne yazık ki nasıl kodlanacağını bilmiyorum. Öyleyse bu sayıları almanın başka bir yolu olmalı.
X.LINK,

1
Başka bir düzenleme ekledim.
Nasir Riley,

Lanet olsun, "% mem" yerine "rss" yazarak, beni tüm cevap için doğru yola koydunuz. RSS toplamının gösterdiği şey, önceden kaydedilmiş RAM'in "dinamik" kısmı olmadan ve ne "ne" ne "ne kullanılmış ne de hiçbirinin RAM saçma değerlerini içermeyen gerçek bellek kullanımı! Teşekkürler !
X.LINK
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.