2014-10-22 16 views
6

512MB RAM ile gömülü bir sistem üzerinde çalışıyorum ve uygulamayı desteklemek için yeterli bellek. Çekirdekten, RAM boyutunu çekirdek cmd argümanından 130MB'ye sınırladım. Ve swapoff -a kullanarak takas devre dışı bırakıldı. Ayrıca, kernel overcommit'i de devre dışı bıraktım, böylece uygulama sadece fiziksel bellekte çalışabilir. /proc/cmdline ve /proc/meminfo arasındaki değişiklikleri doğruladım. Şimdi uygulamayı çalıştırdığımda ve üst değerleri kontrol ettiğimde, benim uygulama için VSZ gerçek bellekten daha fazla olan 177m'dir !! Bu nasıl mümkün olabilir? Bu hafıza nereden geldi?Linux'ta bellek kullanımı neden fiziksel RAM'den daha fazla?

+2

Hafıza dosyalarını eşlenen? Aynı adres sanal adres alanında iki kez eşlendi mi? İşlem hafıza haritasını kontrol edin. –

+0

http://linuxatemyram.com/ ve/proc/$ PID/maps' –

cevap

6
0ZVSZ, işlem tarafından kullanılan sanal bellek boyutudur. Fiziksel hafızanızın boyutundan daha yüksek olması normaldir çünkü bu, bunun ana fikirlerinden biridir. İşlem tarafından kullanılan gerçek fiziksel bellek olan Yerleşik boyutuna (RSS) bakmalısınız. Bu örneğe

Görünüş:

ps -o rss,vsz,cmd ax | grep -i nginx | head -n1 
    956 31248 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 

rss - 956 kB 
vsz - 31248 kB 

Yani, bu süreç fiziksel bellek 956KB kullanmakta olduğu anlamına gelir, ve sanal bellek 31MB:

Bir nginx sürecini çalıştıran var.

Takası devre dışı bırakmak (swapoff -a), yaptığınız gibi, sanal bellek kullanımını devre dışı bırakmaz. Burada

Oku hakkında sanal bellek: Virtual memory

+0

Sanal bellekte bir limit ayarlamak mümkün mü ?? Sadece merak ediyorum .... – Griffin

+0

Neden swapoff-a'nın VMM kullanımına neden olmadığını açıkladığını sanmıyorum. * swap * sadece * read-write * bellek veya program verileri için kullanılır. Program kodu için, Linux * sanal dosya sistemi * bir sayfayı bulmak (yeniden yüklemek) için bir yol sunar. Kod bir adrese atlarsa, kod * hata verir * ve veriler diskten yüklenir. Bu şekilde, bir program başladığında her şey belleğe yüklenmez; sadece * başlangıç ​​* adres sayfası. Benzer şekilde, bellek baskısı altında, nadiren kullanılan kod çarpılabilir. –

İlgili konular