it-swarm-tr.com

Takas ne yapabilir? RAM yapamaz?

Linux, takas olmadan yapamayacağı takas olduğunda özellikle ne yapabilir?

Bu soru için örneğin 32 GB RAM ve takas olmayan bir Linux PC ile 16 GB RAM ile 16 GB olan benzer bir Linux PC arasındaki farka odaklanmak istiyorum. takas. Not "evet ile ilgilenmiyorum, ancak 32 GB PC'ye takas eklerseniz X iyileştirmesi görebilirsiniz" . Bu soru için konu dışı.


İlk olarak takas eklemenin RAM önceki bir soruna yorumlarda eklemekten daha iyi olabileceği görüşüyle ​​karşılaştım.

Tabii ki bunu okudum: Yeterli RAM miktarım varsa takas alanına ihtiyacım var mı? ve ...

  • Yanıtlar çoğunlukla takas eklemeye odaklanır, örneğin RAM eklemenin elbette disk önbelleğini genişleteceği disk önbelleğe almayı tartışmak.
  • Birleştirme işleminin sadece takas ile mümkün olduğuna dair birtakım sözler var, ancak bunu destekleyecek kanıt bulamıyorum.
  • mmap için MAP_NORESERVE için bazı referanslar görüyorum, ancak bu sadece OOM durumları ve muhtemelen sadece özel mmap.

Takas genellikle belleği genişletmenin veya performansı artırmanın ucuz bir yolu olarak görülür. Ancak kitlesel gömülü Linux cihazları üretirken, bu başını açar ...

... Bu durumda takas flash bellek takacak ve garanti bitmeden yıllar önce arızalanacaktır. RAM değerini iki katına çıkarmak, cihazda birkaç ekstra dolar demektir.

Bunun eMMC flaş bir SSD DEĞİL olduğuna dikkat edin! . Genellikle eMMC flaş, SSD'lerden çok daha hızlı giydiği anlamına gelen aşınma seviyesine sahip bir teknolojiye sahip değildir


Bu konuda çok tartışmalı bir görüş var gibi görünüyor . Gerçekten yetenekler hakkında kuru gerçekler arıyorum, "yapmamalı/yapmamalı" görüşlerini değil.

RAM eklenerek de yapılmayacak olan takas ile ne yapılabilir?

43
Philip Couling

Hazırda bekletme (veya diske askıya alma). Gerçek hazırda bekletme modu sistemi tamamen kapatır, bu nedenle RAM içeriği kaybolur ve durumu kalıcı bir depolama alanına kaydetmeniz gerekir. AKA Swap. hiberfil.sys ve pagefile.sys, Linux hem aşırı bağlı bellek hem de hazırda bekletme için takas alanı kullanır.

Öte yandan, hazırda bekletme Linux üzerinde iyi çalışmak için biraz titiz görünüyor. Hazırda bekletme moduna geçip geçiremeyeceğiniz farklı bir şeydir. ¯\_ (ツ) _/¯

61
muru

RAM eklenerek de yapılmayacak olan takas ile ne yapılabilir?

Bu soru aslında yeniden ele alınabilir çucu olmayan RAM daha uçucu RAM eklenerek de yapılmaz) ne yapılabilir?. disk belleği için bir disk bölümü ayırın (geçici RAM ile etkileşim için özel bir yol), hala kalıcı bir ikincil depolama ortamının bir parçası olduğu gerçeğini değiştirmez. varolan bir bölüm üzerinde oluşturulan dosya "da kullanılabilir.

Sonunda, ister takas bölümü ister takas dosyası kullanın, depolayacağınız şey RAM'a veya RAM'den yazılacak şeylerdir. Güç kablosunu takas bölümünün etkin olduğu bir sistemden çıkarırsanız, takas bölümü sihirli bir şekilde silinmez.

Bu takas verileri bir sonraki önyüklemenizde okunmayacak olsa da (disk belleği dosyası artık çalışmayan işlemlere karşılık gelen girişler içerdiğinden) ve bazı dağıtımlar, uygun bir kapatma veya uygun bir yeniden başlatma sırasında yok etmek için kasıtlı adımlar atabilir. Birisi bir kabloyu sistemden çıkaracak olsaydı, bu takas bölümünü adli olarak inceleyebilirdi.


Bahsettiğiniz tümleşik cihazlar söz konusu olduğunda, bir tür geçici olmayan RAM (NVRAM veya EEPROM) depolama türü olan Flash, G/Ç isabetleri (Flash Hücre Dayanıklılığı, program/silme döngüsü sayısı olarak temsil edilir) uçucu RAM'inkine kıyasla söner .. Bu konuma her yazma gerçekleştirdiğinizde kelimenin tam anlamıyla bir oksit tabakasını tıraş edersiniz ve sonunda izin vermek için sadece oksit kalmaz şarjın kalıcı olarak depolanması için ve sonraki okumadan önce tam anlamıyla dışarı sızıyor.

Öte yandan, uçucu RAM'in hayatta kalabilmesi, güç kaynağını kestiğinizde veya kestiğinizde, flaşa kıyasla neredeyse hiç yoktur (ideal deney koşullarında dakikalar sırasıyla). Uçucu RAM durumunda, şarj sızıntısını ve flip-flopun karşılık gelen durumunu (girişler, çıkışları belirleyen ve daha sonra girişleri yeniden belirleyen) durduracak hiçbir şey yoktur. kontrollü sürgüler.

16
BarBar1234

32GB RAM ve 16 GB takas ile 16GB ram ile takas yok.

Böyle sorulduğunda, takas çoğunlukla paradan tasarruf eder, dolar oranı başına performansı, belki de watt başına arttırır.


Ancak takas hala "bir disk kadar yavaş bellek" ten daha fazladır. Bellek sayfaları için geçici bir depolama alanıdır ve doğrudan (oldukları gibi kirli, dosya sistemi ek yükü yoktur) RAM) gerektiğinde yüklenebilir.

Tabii ki çok şey yüke (yükün türüne bağlıdır ve takas fikri geri tepebilir. Bu nedenle, swapon/swapoff 'nin yanı sıra doğru boyut hakkında tartışma "swappiness" parametresi de vardır.

Vikipedi'den linux'da "swap" hakkında bu ifadeyi aldım ("sayfalama" makalesinde)

Linux çekirdeği neredeyse sınırsız sayıda takas arka uçlarını (cihazlar veya dosyalar ...

Birden çok takas arka ucuna aynı önceliğe atandıysa, bunlar yuvarlak bir şekilde (RAID 0 depolama düzenlerine biraz benzer) kullanılır ...

Bu, değiştirmeyi donanım düzeyinde daha anlamlı bir şeye dönüştürebileceğinizi gösterir: özel bir "çalışma diski", bu değiştirilen sayfalara daha iyi bir ev sağlayacaktır. İdeal olarak, bir çizik tahrik (çok) küçük fakat hızlı ve sağlam olmalıdır.


"Yeni" boyut kuralına (Giga'nın kare kökü göre, örneğiniz aşağıdakileri karşılaştırmalıdır:

16 GB RAM + 0 GB Swap+1000 GB Disk

16 GB RAM + 4 GB Swap+ 996 GB Disk

Çünkü gerçekten mantıklı olmayan şey:

16 GB RAM+0 GB Swap + 1000 GB Disk

12 GB RAM+4 GB Swap + 1000 GB Disk

Bu bir tmpfs ("ramdisk") bir takas bölümü olurdu - belki de çok zararlı değil, ama burada hiçbir fayda görmüyorum. Hazırda bekleme moduna bile geçemezsiniz.

(zram ve zswap için aşağıya bakın, buna sıkıştırma eklediğinizde)


Takas anlamak için Tüm sistemi ve ortalama yükü dikkate almalısınız. Ve vm/mm (sanal bellek yönetimi) karmaşık bir sistem olduğundan, açık bir avantajı adlandırmak gerçekten zordur. Aşırı yüklenmiş bir sisteme "yumuşak" geçiş fikrini seviyorum.

8 GB'ım var RAM ve takas yok. Ama yine de konsepti savunuyorum, AFA anlayabiliyorum :-)


Bu redhat alıntısını OP bağlantılarından birinde buldum. Senaryo, 2 GB RAM + 2 GB Takas ile sürekli artan bir bellek talebidir.

... Bizim durumumuzda [sadece resimlenmiş], oldukça fazla takas mevcuttur, bu nedenle düşük performans süresi uzundur.

Ama alternatif OOM daha erken!

"Kötü performans süresi" uzun, evet, ancak performans yükle orantılı olarak düşer. Bağlamı bilmiyorum, belki sadece çok büyük takas bölümüne karşı uyarmak isterler. Bu takas anti-takas, ancak ikinci bakışta değil.

Sonra tekrar, aynı nedenden dolayı, takasım yok. Ben ve uygulamalarım tavana çarptığında bilmek istiyorum ve sonra yükü azaltmak, daha fazla RAM veya takas için bir bölümü etkinleştirmek zorundayım) karar vereceğim (bir veya iki tane var) bunun için hazır küçük bölümler).


Bunu aradım zram ve sonra zswap şey: çok ilginç ...:

Buna karşılık, zswap takas cihazları için RAM tabanlı bir önbellek görevi görür. Bu, zswap'a, zram'ın eksik olduğu daha az kullanılan takas edilmiş sayfalar için bir tahliye mekanizması sağlar.

Öte yandan, zram takas cihazı olmadan çalışır. Söylediklerimin bir anlamı yok, ama sıkıştırmayı dikkate almadım.

Demek istediğim bu "takas" içinde bulunan tahliye mekanizmasıdır. Bu değiştirerek veya sıkıştırarak değiştirseniz de, yüksek yük altında çok faydalı olabilir.

15
rastafile

Belirli bir toplam için, takas yerine RAM) olması her zaman daha iyidir.

Bir noswap sistemi ile bir swapping sistemi arasında, yararlı olabilecek veya olmayabilecek davranış farkı vardır: thrashing. Değiştirme sistemi, kullanılabilir toplam sanal belleğin tükenmesine başladığında, sayfaları takas ve RAM arasında ileri geri hareket ettirmede gittikçe daha fazla engellenir. Bu sistemi yavaşlatır. Bazı durumlarda bu, yükü azaltmak ve sistemi kurtarmak için manuel veya otomatik müdahaleye izin verebilir.

Bir noswap sisteminde, performans çok yüksek bellek kullanımına kadar nispeten aynı kalır, bu noktada işletim sistemi salt okunur sayfaları bellek eşlemeli yürütülebilir dosyalardan boşaltmaya başlar ve ayrıca disk önbelleği için çok az yer tutar. OOM katilinin bu noktada tetiklenmesi muhtemeldir. Yani yavaş bozulma yerine ani bir başarısızlık.

Takasın gömülü sistemler için, özellikle küçük gömülü Flash cihazlarda çok az mantıklı olduğunu kabul ediyorum. Dünya, oldukça sabit bellek kullanımı olan ve takas olmayan küçük Linux tüketici yönlendiricileri, ampuller vb.

15
pjc50

RAM'in aksine takas kolayca devre dışı bırakılmış, kısıtlanmış, yavaşlamış veya genişletilmiş olabilir - bir uygulamanın bellek ayırma stratejisini geliştirirken kullanışlı bir özellik.

Çekirdeğinizin 4G RAM ve 4G takas gördüğünü ve işletim sistemi ve geliştirme uygulamalarının (tarayıcı, IDE vb.) 3G kullandığını varsayalım. Bu 5G ücretsiz sanal: 1G gerçek ve 4G takas.

2G'nin sıcak kaynaklarını yüklemesini isteyen yeni veritabanınızı veya oyununuzu geliştiriyorsunuz. Bu yüzden devam ediyor, sbrk ve mmap art arda ve takas ile 2G değerini çekirdeğin harikasıyla gerçekleştiriyor VM katmanı. Yaşasın, kodunuz iyi çalışıyor. (Ve tarayıcınız veya cehennemi değiştirmek için sayfadan düşmüş olan her şey.)

Şimdi programınızı durdurun. swapoff ve programınızı yeniden çalıştırın. Bu kez, sbrk rant'ı sürerken, bir ENOMEM alır ve kodunuz mutsuz bir yolla uğraşmak zorundadır. Nasıl tepki veriyor? Bu senaryoda nasıl dans ediyor?

Ya da çekirdeği USB'ye daha da fazla gitmeye zorlamak için USB çubuğuna mkswap ve swapon takın ve vm.min_free_kbytes artırın. Çubuk. Programınızı yeniden çalıştırın. Uygulamanız şimdi yavaş eloksal VM ile nasıl davranıyor?

Uygulamanız çalışırken yukarıdakilerin tümünü yapmaya ne dersiniz? Çalıştığında ve OOM koşullarını deneyimlemeye başladığında nasıl davranır?

Takas alt sisteminizi canlı olarak ayarlayarak, serbest gerçek RAM düşük bir sistemde işkence yapmanın yollarının sonu yoktur. Gruplardan veya rusage'den farklı olarak, kullanılabilir sanal RAM 'ı değiştirmek için işleminizi kapatmanız gerekmez.

ENOMEM veya yavaş brk 'ı simüle etmek için alaylar kullanarak bu tür bellek istismarlarını test edebilirsiniz ve bu istikrarlı olduğu için yapılması uygun bir şeydir. Ancak stokastik süreçlerin altını çıkarmak için düşük bellek ortamlarında canlı yangın egzersizi yapamaz. Takas, bir test cihazının çekirdeğin bellek kaynaklarını ve özelliklerini, düşük belleğin gerçek dünyasına uygun bir şekilde kolayca düzenleyin. RAM çubuk eklemek veya kaldırmak bu değeri sağlamaz.

10
bishop

Bu biraz niş bir durum ve kuşkusuz daha fazla koç ekleyebilirsiniz, ama ...

Herkes takasın, sabit sürücü veya flash sürücü gibi kalıcı bir fiziksel depolama anlamına geldiğini düşünüyor. Takas, fiziksel bir konumdan ziyade bir süreçtir.

Aşağıdaki garip maskaralıkları düşünün:

  1. 32GB RAM ve başka depolama alanı olmayan bir cihazım var.
  2. 42GB veri işlemem gerekiyor.
  3. Neyse ki veri güzel ayrı parçalar ve yüksek derecede sıkıştırılabilir (belki de çoğunlukla statik bir zaman serisi gibi bir şey) ve hepsi bir kerede erişmek gerek yok, yani ...
  4. Sıkıştırılmamış, bellek takas bölümünde kurmak için zram kullanıyorum.
  5. Böylece program kodumu değiştirmeden sınırlı belleğime daha fazla veri sığdırmama izin verin.

Takas kullanımı (RAM'de olur), bu düz RAM (içinde bir takas bölümü olmadan) elde ettiğinizden daha fazlasıdır.

Evet, teknik olarak sadece daha fazla koç ekleyebilirsiniz; bu tür bir tuhaflık, ne kadar koç eklerseniz koyun, her zaman biraz daha fazla alan tutabileceğiniz anlamına gelir (verilerinizi bildiğiniz/uygun olanı bildiğiniz sürece).

6
Alan

Cevabınız zaten var, ancak sorunuz şu cevabı henüz takdir etmediğinizi gösteriyor.

Basit cevap, "Büyük ve ucuz (ve belki de esnek olun)" dir. Bunu zaten biliyorsunuz, ama siz de reddediyorsunuz. Yapmamalısın.

RAM "birkaç ekstra dolar" değil. Gigabyte için Gigabyte, örneğin, ECC RAM 32 GB (RDIMM 2400 DDR4) için 130 £ veya yaklaşık 4/GB £ kullanıyorum. TERABYTE başına 100-130 £ veya yaklaşık 0.11/GB £ (Güç Kaybı Korumalı Micron/Intel) Sunucu çiftlikleri, yüzlerce sunucuyla sunucu başına yüzlerce ila binlerce (birçok durumda) GB alabilir.

RAM de daha fazla güce açtır - SSD'de güç kullanımı çok daha azdır = RAM = RAM güç ve yenileme SSD'de güç kullanımı çok daha azdır). bu kendi başına bir sorun olabilir.

Aşınma seviyelendirme de çoğu cihazda düşündüğünüzden daha az sorun oluşturur. SSD'ler insanların düşündüğünden daha uzun süre dayanır ve ticari olarak tasarlanmış cihazlar, bazı kartlardaki son derece fakir olanları değil, beklenen kullanımlarına uyacak bir SSD seçecektir.

Son olarak, Takas daha esnektir. Göreviniz normalde 32 GB kullanıyor ancak kısa ve nadiren bir yönünün 64 GB olması gerekiyorsa RAM ne olursa olsun 64 sağlamanız gerekir. Takas ile 32 üzerinde çalışır ve kısaca kullanır, sonra atar, olağanüstü zamanlar için takas.

Tl; Dr - ekonomik noktayı tamamen kaçırıyorsunuz.

4
Stilez

RAM eklenerek de yapılmayacak olan takas ile ne yapılabilir?

Hazırda bekletme modu, takas başka şekilde kullanılmasa bile bir takas dosyası gerektirir.

Bunun dışında hiçbir şey. Takas iyi bir stopgap

  • RAM, disk alanına kıyasla gerçekten pahalı veya sınırlı

  • Sistem, zaman zaman öngörülemeyen yazılım ve/veya iş yüklerini deneyebilen 1 kullanıcının kontrolü altındaki genel amaçlı bir sistemdir.

  • OOM senaryoları mümkünse ve diske sayfalama, programların doğrudan çökmesine tercih edilirse.

Bunu özellikle ne yapabiliriz RAM yapamaz

İki şey:

A. RAM dolduğunda orada olun.

B. RAM) başka bir şey için kullanılmasına izin vermek için, belirli bir anda işlemler tarafından kullanılmayan bellek sayfalarını tutun (bazı durumlarda engellendikleri için).

Eşzamanlı olarak çalışacak veya OOM hatalarını önemsemeyen tüm işlemlerden herhangi bir bellek isteğini karşılamak için yeterli RAM) varsa, A göz ardı edilebilir.

Linux, blok cihazı okuma ve yazma işlemlerini önbelleğe almak için ücretsiz RAM kullanır, ancak bunu yapmak zorunda değildir. RAM blok cihazlardan daha hızlıdır. Süreçlerin takas için kullanılmadığı şeyler daha fazla RAM blok cihaz okumalarını önbelleğe almak için kullanılmasına izin verir. Blok cihaz erişiminizin hızını umursamıyorsanız, yönlendiriciler gibi gömülü ortamlarda uygulayın, B göz ardı edilebilir (ve bu gibi durumlarda hazırda bekletme ile ilgilenmezsiniz).

Takas bir disk önbelleği değildir - takas edilen sayfaların bir disk dosyasıyla ilişkilendirilmemesi veya asla diske yazılması amaçlanmamıştır.

4
LawrenceC
... Bu durumda takas, flash bellek takacaktır ve bu da garanti bitmeden yıllar önce arızalanmasına neden olacaktır. RAM iki katına çıkarsa, cihazda birkaç dolar daha var.

Bence bunun yanlış olduğunu göreceksin. İlk olarak, birkaç ekstra dolar makul miktarda RAM'i ikiye katlamayacaktır. İkinci olarak, flaş RAM daha ucuzdur. Üçüncü olarak, takas, etkin olmayan veriler için kullanılır. Takas bölümünün sürekli olarak yazıldığı bir durumunuz varsa, çok az RAM ve takas olmadan bazı önemli işlemler çökebilir.

Ayrıca, tam bir SSD'ye rastgele yazma (erken başarısız olmalarına neden olan) yavaştır. Gerçekten çok, çok yavaşlar. Bilgisayarınız değiştirilerek taramayı yavaşlatmazsa SSD'niz erken ölümle ölmez.

Bilgisayarınızın belleği azaldığında, bazı önemli işlemlerin çöktüğünden daha yavaş yavaşlaması daha iyidir.

Şimdi, RAM ile yapamayacağınız takas ile ne yapabilirsiniz?

  • Hibernation
  • Çekirdek çökmesi dökümleri
  • Ucuz sanal adres alanı (RAM'den çok daha ucuz)
  • Fazla taahhüdü devre dışı bırakma
2
juhist

Takas size para kazandırabilir. RAM, karşılık gelen disk miktarından daha pahalıdır. Amaç maliyet-performans oranını optimize etmektir. Elbette, RAM her zaman takastan daha iyidir, ancak size daha pahalıya mal olur ve hepsini kullanmazsanız boşa gider.

Takasın yararlılığı da büyük ölçüde iş yükünün türüne bağlıdır. Örneğin, çok sayıda açık uygulamanız varsa ancak etkin olarak bunlardan yalnızca birini kullanıyorsanız, etkin olmayan programlar tarafından kullanılan RAM serbest bırakılabilir ve bunun yerine etkin işlem tarafından kullanılabilir. Öte yandan, RAM miktarından daha fazla belleğe ihtiyaç duyan tek bir bellek yoğun program kullanmak, takasın optimum olmayan bir kullanımıdır.

2
Johan Myréen