Unix'i bir süredir kullandım ve son birkaç yıldır takasın bir anakronizm olduğunu hissettim, fakat diğer insanların ne düşündüğünü merak ediyorum.
Benim argüman kabaca bu (küresel ulimit veya OOM ayarlarının twiddling varsayarak):
There is little value in swap because if you need to swap out to disk,
odds are it's going to be a vicious cycle where an app will continue
to eat not only real memory, but swap as well until it gets OOM
reaped (_if_ it gets OOM reaped).
If you have swap enabled, it will only prolong this death march to
the detriment of other processes - and in the worst case where the
process is not OOM reaped in a timely manner, grind the system to
a halt.
Without swap, it will probably get OOM reaped sooner (if at all)
Performansa göre ayarlanan herhangi bir hizmet için, kaynak kullanımının üst sınırlarını anlamanın, ilk etapta ayarlama yapmak için anahtar olacağını düşünürdüm, bu durumda ne kadar ihtiyacınız olduğunu biliyorsunuz.
Çalışan bir işlemi askıya alacağınız ve başka şeylere yer açmak için yer değiştirebileceğiniz birçok durumu (bazılarını değil birçoklarını) hayal edemiyorum, ancak bunu yaparsanız hala prizlerinizi kaybedersiniz, gcc aracılığıyla çekirdek dökümü veya belleği elle kopyalamak, işlevsel olarak eşdeğerdir.
Kesinlikle gömülü bir sistemde takas etmek istemem (daha küçük bir ram olsa bile), ram bittiğinde, bir milyon başına bir flash bellek kesmek yerine sürecimin ölmesini tercih ederim. sektörleri nub'a kadar aşındırarak bir hafta sonu boyunca sürün.
Unix-sakalları takas etmek için zorlayıcı sebepler var mı?
GÜNCELLEME cevapları ve analizi:
ONAYLANMIŞ? - fork () alt işlem için alt işlem için aynı miktarda belleği gerektirir.
Modern fork () POSIX (çocuklar için) genelindeki çocuklara yönelik yazılabilir bir kopyadır , ancak özellikle Linux ve FreeBSD'dir ve OSX'i varsayım yoluyla kabul ediyorum. Takas yapan anakronistik valizlerin bu bölümünü taşıdığını düşünüyorum.
Tuhaf bir şekilde, Bu Solaris makalesinde , Solaris çatal üzerine Yazma Kopyala () kullanılmasına rağmen, çatalın () çatalın içinde çökmemesi için en azından 2x (!) Ana işlem büyüklüğünün boş sanal bellekte boş kalması gerektiğini () orta. Solaris elemanı iken biraz takas bir anakronizm olduğunu argüman büstleri - Yeterince işletim sistemleri düzgün takas için daha ileri gerekçe olarak işaretlemeye olmadığı kadar miti ortadan daha önemli şekilde inek uygulamak düşünüyorum. Dan beri. Kabul edelim. Bu noktada Solaris'i gerçekten kullanan insanlar muhtemelen sadece Oracle'lılar. Alınma Solaris!
ONAYLANMIŞ - tmpfs / ramfs dosyaları, tmpfs / ramfs doldurduğunda bir uyumluluk olarak değişebilir
Limitsiz tmpfs / ramfs kullanmayın! Her zaman açıkça tmpfs / ramfs kullanmak istediğiniz ram miktarını tanımlayın.
PLAUSABLE - 'Sadece durumda' biraz takas var
Eski patronlarımdan biri eskiden, 'Bilmediğiniz şeyleri bilmiyorsunuz' demişlerdi - aslında, henüz sahip olmadığınız bilgilere dayanarak bir karar veremezsiniz. Bu bana takas için makul bir argümandır, ancak - Başvurunuzun değişip değişmediğini saptamak için yapabileceğiniz şeylerin türlerinin malloc () 'un istisnayı kazanıp kazanmadığını görmek için kontrol etmekten daha ağır olacağından şüpheleniyorum. başarısız bir yeni ().
Bu, bir masaüstünü çalıştırdığınız ve bir sürü rastgele şeylerin olduğu durumlarda faydalı olabilir, ama yine de - bir şey delirirse, takas cehennemine dalmaktan ziyade OOM'un elde edilmesini tercih ederim. Sadece ben.
Yakalandın! - Açık Solaris , takas olan nedenlerden bir çift için önemli
tmpfs - devletler tmpfs için mevcut boş alan miktarı, sistemdeki ayrılmamış takas alanı miktarına bağlıdır. Bir tmpfs dosya sisteminin boyutu, kendisine yazılmış dosyaları barındıracak şekilde büyür, ancak yoğun tmpfs kullanıcıları için bazı doğal tradeoffiler vardır. Tmpfs, kaynakları yürütme programlarının veri ve yığın bölümleriyle paylaşır. Tmpfs dosya sistemleri izin verilebilir maksimum boyutlarına yakınsa çok büyük programların çalıştırılması etkilenebilir. Tmpfs, sistemin 4 MB dışındaki alanını değiştirebilir.
Solaris'in takas hakkındaki gerçekleri ve mitleri - Günümüzdeki sanal bellek, diskteki toplam RAM ve takas alanlarının toplamından oluşur. Solaris, yapılandırılması için herhangi bir takas alanı gerektirmez. Bu seçeneği tercih ederseniz, RAM dolduktan sonra yeni işlemler başlatamazsınız. .
Bunun oluşturabileceğiniz maksimum sanal haritanın ram + swap olduğu veya mmap () gibi bir şey yapıp yapamayacağınızdan emin değilim , mmap () 'ın tembel kullanıma koyulmasına güvenebilirsiniz. Solaris'i muhtemelen günümüzde takas olmadan çalıştırabiliyor, diğer POSIXy işletim sistemlerinden daha az arkadaşça görünüyor.
Yakalandın! Popüler Linux hazırda bekleme araçları takas güveniyor gibi görünüyor
TuxOnIce varsayılan olarak hazırda bekletme modunun takas işlemine dayanıyor gibi görünmektedir - diğer arka uçlar mevcut olmasına rağmen. Ancak, hazırda bekletilmesi gereken bir kutu çalıştırmıyorsanız, hala 'takasın linux'da aktiftir' ifadesinin arkasında dururdum.