Vm.overcommit_ratio'nun kalan belleği nereye gidiyor?


10

Ben ayarlayarak devre dışı bellek overcommit Eğer vm.overcommit_memoryiçin 2, varsayılan olarak sistem, takas fiziksel bellek +% 50 boyutuna bellek tahsis sağlayacak olarak açıklanabilir burada .

vm.overcommit_ratioParametreyi değiştirerek oranı değiştirebilirim . Diyelim ki% 80'e ayarladım, bu yüzden fiziksel belleğin% 80'i kullanılabilir.

Sorum şu:

  • sistem kalan% 20 ile ne yapacak?
  • bu parametre neden ilk etapta gereklidir?
  • neden her zaman% 100'e ayarlamamalıyım?

Yanıtlar:


6

Sistem kalan% 20 ile ne yapacak?

Çekirdek kalan fiziksel belleği kendi amaçları için kullanacaktır (iç yapılar, tablolar, tamponlar, önbellekler, her neyse). Bellek aşırı taahhüt ayarı kullanıcı uygulama sanal bellek rezervasyonlarını işler, çekirdek sanal bellek değil fiziksel bellek kullanır.

Bu parametre neden ilk etapta gerekli?

overcommit_ratioParametre aslında (ya da en azından deneyin) belleğe erişirken makul gelecekte, yani onlar için satışa sunulacak olandan daha sanal bellek ayırmak için uygulamaları önlemek için tasarlanmış bir uygulama seçimdir.

overcommit_ratio% 50'ye ayarlamak , Linux çekirdek geliştiricileri tarafından makul bir varsayılan değer olarak kabul edildi. Çekirdeğin fiziksel RAM'in% 50'sinden fazlasını kullanması gerekmeyeceğini varsayar. Kilometreniz değişebilir, bu yüzden ayarlanabilir.

Neden her zaman% 100'e ayarlamamalıyım?

% 100 (veya herhangi bir "çok yüksek" değere) ayarlanması, çekirdeğin% 0 (veya çok az) RAM kullanacağını varsayamayacağınız için aşırı taahhüdü güvenilir bir şekilde devre dışı bırakmaz.

Çekirdek, istediği tüm fiziksel belleği zaten engelleyebileceğinden uygulamaların çökmesini engellemez.


Çekirdek zaten ihtiyacı olan tüm belleği alabilirse, bu parametreyi açığa vurmanın (veya hatta onu yaratmanın) anlamı nedir?
Dan Tumaykin

Bu parametrelerin ayrıntılı olarak açıklandığı herhangi bir resmi belge var mı? Kernel.org/doc/Documentation/vm/overcommit-accounting'in yanı sıra , çekirdek belleğine yapılan atıflar burada eksik.
Dan Tumaykin

1
"Toplam adres alanı taahhüdü" ne atıfta bulunulurken nelerin tam olarak dikkate alındığını yeterince ayrıntılı açıklayan bir belge bulamadım. Bununla birlikte, "çoğu durumda bu bir işlemin öldürülmeyeceği anlamına gelir ..." ifadesine bağladığınız belgenin başka yerlerde bir miktar belleğin kullanılabileceğini doğrulamak yeterlidir ve bu bellek için bariz tüketici çekirdeğidir.
jlliagre

2

Oranın% 100 olarak ayarlanması, dosya destekli sayfalar veya çekirdek kodu, ağ arabellekleri gibi çekirdek içi ayırmalar için yer ayırmaz.

Çekirdek yapıları ne olursa olsun tahsis edilecek ve aşırı işleme neden olacaktır. Genellikle ayrı ayrı sınırlandırılırlar (örneğin ağ arabellekleri için bir ayar vardır). Toplam sınırın% 50 olduğunu düşünmüyorum, ancak genel sınır kapsayıcıları barındırma amacıyla üzerinde çalışılan bir şey.

Dosya destekli sayfalar genellikle kullanıcı alanı kodunu çalıştırdığınız yerdir, bu nedenle bunun için de alana ihtiyacınız vardır.

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.