Takas alanını neden fiziksel belleğimizden iki kat daha büyük olarak ayarlamamız gerekiyor?


11

Bir linux sistemi kurmak istediğimizde, takas alanını fiziksel belleğinizin iki katı kadar ayarlamak için yaygın bir öneri vardır. Neden buna ihtiyacımız olduğunu ve bu önerinin nasıl ortaya çıktığını bilmek istiyorum.

Yanıtlar:


8

Kısa cevap "Sen yok olduğunu var etmek".

Çekirdek / sistem türüne bağlı olarak, takas alanını bu şekilde boyutlandırmak mantıklı olabilir, örneğin, FreeBSD'nin ayarlama (7) kılavuz sayfasında, fiziksel bellek boyutunun en az 2 katı bir takas boyutunun arkasında aşağıdaki mantığı buluruz:

2 GB'tan az RAM bulunan sistemler için takas alanınızı genellikle yaklaşık 2x ana belleğe veya daha fazlasına sahipseniz yaklaşık 1x ana belleğe boyutlandırmalısınız. Çok fazla RAM'iniz yoksa, genellikle çok daha fazla takas isteyeceksiniz. Bir sistemde 256M'den daha az takas yapılandırmanız önerilmez ve takas bölümünü boyutlandırırken gelecekteki bellek genişletmeyi aklınızda bulundurmalısınız. Çekirdeğin VM çağrı algoritmaları, ana belleğe karşı en az 2x takas olduğunda en iyi performansı gösterecek şekilde ayarlanmıştır. Çok az takas yapılandırılması, VM sayfası tarama kodunda verimsizliklere yol açabilir ve makinenize daha fazla bellek eklerseniz daha sonra sorun oluşturabilir. Son olarak, birden fazla SCSI diskli (veya farklı denetleyicilerde çalışan birden çok IDE diskli) daha büyük sistemlerde, her sürücüde takas yapılandırmanızı önemle öneririz. Sürücülerdeki takas bölümleri yaklaşık olarak aynı boyutta olmalıdır. Çekirdek rasgele boyutları işleyebilir ancak dahili veri yapıları en büyük takas bölümünün 4 katına kadar ölçeklendirilir. Takas bölümlerinin aynı boyutta tutulması, çekirdeğin N diskleri arasındaki takas alanını en uygun şekilde şeritlemesine olanak tanır. Biraz aşırıya kaçma konusunda endişelenmeyin, takas alanı UNIX'in tasarruf lütfudur ve normalde çok fazla takas kullanmasanız bile, yeniden başlatmaya zorlanmadan önce kaçak bir programdan kurtarmak için size daha fazla zaman verebilir. Takas bölümlerinin aynı boyutta tutulması, çekirdeğin N diskleri arasındaki takas alanını en uygun şekilde şeritlemesine olanak tanır. Biraz aşırıya kaçma konusunda endişelenmeyin, takas alanı UNIX'in tasarruf lütfudur ve normalde çok fazla takas kullanmasanız bile, yeniden başlatmaya zorlanmadan önce kaçak bir programdan kurtarmak için size daha fazla zaman verebilir. Takas bölümlerinin aynı boyutta tutulması, çekirdeğin N diskleri arasındaki takas alanını en uygun şekilde şeritlemesine olanak tanır. Biraz aşırıya kaçma konusunda endişelenmeyin, takas alanı UNIX'in tasarruf lütfudur ve normalde çok fazla takas kullanmasanız bile, yeniden başlatmaya zorlanmadan önce kaçak bir programdan kurtarmak için size daha fazla zaman verebilir.

Ne kadar takas alanı tahsis edeceğinize, nereye tahsis edeceğinize vb. Karar verirken diğer faktörler önemli olabilir. Örneğin, 128 GB fiziksel belleğe sahip büyük bir sunucu kuruyorsanız, asla kullanılmayacak olan takas için 256 GB disk alanı ayırmaktan kaçınmak iyi bir fikir olabilir.

Öte yandan, bazı takas alanlarına sahip olmak çoğu zaman çekirdek dökümü (örneğin Open-, Net- ve FreeBSD'de) yakalamayı mümkün kılar. Bu yüzden panik üzerinde tam bir çekirdek dökümü almak için en az yeterli takas alanına sahip olmak iyi bir fikirdir.

Uyan mutlak kural yok yoktur bütün davaları. Sen, özel sistemin davranışı hakkında okumak nasıl çalıştığını öğrenmek, sistemin kullanım amacı düşünmek ve uygun takas alanı en iyi boyutunu karar vermek zorunda senin ihtiyaçlarını.


5

Hiç gerek yok. Pencerelerin eski sürümleri, ayrılan belleğin her sayfasını takas dosyasında bir mmap olarak ele alır, bu yüzden yararlı olması için en azından toplam fiziksel RAM boyutuna ihtiyacınız vardı - bu artık bugünkü durum değildi ve asla Linux'ta durum böyle ama söylenti devam ediyor.

Bununla birlikte, RAM kadar en az takasın istendiği bir durum vardır - hazırda bekletme. Linux, hazırda bekletme için takas dosyasını kullandığından (diğer bir deyişle, diske askıya alma), RAM'deki tüm verileri ve zaten değiştirilmiş olan tüm verileri (eksi önbellek RAM'i) tutmak için yeterli takas gerekir. Tabii ki bu sadece dizüstü bilgisayarlar gibi hazırda bekletilmesi gereken makineler için geçerlidir.

Son olarak, başkalarının söylediklerine rağmen, çok fazla takasın olması kötü bir şey olabilir. Düşünün - 4G RAM'iniz varsa ve bunun üzerine ek bir 8G takas gerekiyorsa, sisteminizin hala kullanılabilir olacağını düşünüyor musunuz? Belleğin tükendiğinde, bellek değiştirme işleminin hemen öldürülmesini sağlamak daha iyidir, tüm sistemi takas içinde ve dışında zaman harcayarak tüm sistemi harcanmaya başladığında tüm sistemi kullanılamaz bir seviyeye yavaşlatmak daha iyidir.


1

Uzun zaman önce, takas alanındaki her sanal bellek sayfasını tahsis edecek ortak bir unix varyantı vardı (bence bu bir BSD idi, ancak şu anda referansı bulamıyorum). Yani RAM kadar takasınız olsaydı, sanal belleğinizin boyutu hala RAM'inizle aynı olurdu. Her zamanki öneri, sanal belleği RAM'den iki kat daha büyük hale getiren RAM'den iki kat fazla takas yapılmasıydı.

Modern birleşimler bu şekilde davranmazlar, bu yüzden kuralın nedeni eski (bence 1992'de zaten eskiydi, bu yüzden Linux için asla alakalı değildi). Ama garip bir şekilde kural hayatta kaldı. Şimdi takip ederseniz, RAM miktarınızın üç katı olan sanal bellek alırsınız, oysa asıl amaç iki kat daha fazla almaktı.

Kuralın arkasındaki tarihsel nedenin yanlış olması onun aptal olduğu anlamına gelmez. Disk alanı daha ucuz hale geldi, bu yüzden daha fazla takas ayırmak mantıklı olabilir. Ne kadar takasınızın olması gerektiği, ne kadar RAM'iniz olduğuna ve onu nasıl kullandığınıza bağlıdır. Bir sistemi takas olmadan çalıştırabilirsiniz, ancak daha sonra RAM'iniz dolarsa hangi programları öldüreceğinizi seçme şansınız olmaz ve sistem daha yavaş olabilir (bazen önbellek için RAM kullanmak ve bazı program belleğini değiştirmek daha iyidir. dışarı). Çok fazla takas tahsis etmek, küçük bir RAM miktarına (çekirdek veri yapıları için) ve elbette disk alanına (ama günümüzde SSD dışında genellikle ucuzdur) mal olur. Hazırda bekletme modunu kullanmak istiyorsanız, tüm sanal belleğinize sığacak kadar takas yapmanız gerekir.


Windows da bunu yapar: eğer bellek yöneticisinde yeterli takas alanı varsa, bellekte olan sayfaların da bir kopyasını tutar (sanırım en son değiştirilenlerden başlayarak), bu yüzden takas etmesi gerekiyorsa bunu yapabilir sayfaları bellekten uzaklaştırarak.
pqnet

0

Tipik sistem bellek kapasitesi, bellek veri yolu hızı ve disk hızı ve çeşitli bekleme durumlarında harcanan zaman yüzdesi hakkındaki varsayımlara dayanan eski bir öneri. Bu günlerde takas alanında belki de 1 / 2'den fazla fiziksel bellek isteyeceğinizden şüpheliyim - tam bellek kullanımının yakınında çalışırken rastgele OOM öldürmeyi önlemek için yeterli. Ancak tamamen tipik iş yükünüze, YMMV vb.

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.