takas bölümü vs performans için dosya?


62

Performans için daha iyi olan nedir? Diskin içine daha yakın olan bir bölüm yavaş erişim sürelerine sahip olacak ve sürücünün işletim sistemi ve takas bölümleri arasında geçiş yapmasını beklemeliyiz.

Öte yandan, takas bölümü doğrudan diske yazmaya izin veren tüm dosya sistemlerini atlar ve bu da bir dosyadan daha hızlı olabilir.

Performans takası nedir?

Sabit boyutlu bir takas dosyasının olması ne kadar fark yaratır?

Bir takas bölümünün değiştirilmesinin daha uzun süreceği bir durum mu var, ancak takas bölümündeki bir takas dosyası olsaydı performans daha mı iyi olacak?


Sadece meraktan. Çekirdek sürümü, RAM, bölüm ve dosya sistemi şeması gibi sistem ayrıntılarını sağlayabilir misiniz?
Viky

Hangi işletim sistemini arıyorsunuz?
Mathieu Chateau

4
Linux bilgi için bkz lkml.org/lkml/2005/7/7/326
Adam Monsen

Soru cevaplarında herhangi bir güncelleme var mı?
kokbira

Yanıtlar:


29
  1. Sabit disklerde, çıkış ve arama genellikle diskin başlangıcına göre daha hızlıdır, çünkü bu veriler diskin dışına daha yakın depolanır, bu da silindir başına daha fazla sektöre sahiptir. Bu nedenle, diskin başında takas oluşturmak, performansı artırabilir.

  2. 2.6 Linux çekirdeği için, bir takas bölümü ile bir parçalı takas dosyası arasında performans farkı yoktur . Bir takas bölümü / dosyası takas işlemi ile etkinleştirildiğinde , 2.6 çekirdeği takas diskinin hangi diske takıldığını bulur , böylece takas zamanı geldiğinde, dosya sistemi ile uğraşmak zorunda kalmaz.

Dolayısıyla, eğer takas dosyası parçalanmış değilse, tam olarak aynı konumda bir takas bölümü varmış gibi. Veya başka bir deyişle, bir takas bölümünü ham kullandıysanız ya da bir dosya sistemiyle biçimlendirdiyseniz ve ardından tüm alanı dolduran bir takas dosyası oluşturduysanız aynı performansı elde edersiniz, çünkü bu diskte her iki durumda da takas için kullanılan bitişik bir bölge vardır, hangi çekirdeğin doğrudan kullandığı.

Bu nedenle, dosya sistemi yeni olduğunda bir takas dosyası oluşturulursa (bu nedenle parçalı olmadığından ve birimin başında olduğundan emin olarak), performans birimin hemen önünde bir takas bölümüne sahip olmakla aynı olmalıdır. Dahası, eğer biri değiştirilirse, her iki tarafta da dosyalar varken bir swapfile oluşturulduysa, daha iyi performans elde edilebilir, çünkü değiş tokuş yapmak isteyenlerin sayısı daha azdır.

Linux'ta, eğer takas dosyası parçalanmamışsa ve hiç genişletilmemişse, en azından ext3 / 4 gibi normal dosya sistemlerinde parçalanamaz. Her zaman bitişik olan aynı disk bloklarını kullanır.

Atanmış bir takas bölümünün tek yararı hakkında, genişletmeniz gerektiğinde birleştirilmenin garanti edildiğine karar verdim; takasınız hiçbir zaman genişletilmeyecekse, yeni bir dosya sisteminde oluşturulan bir dosya için fazladan bir bölüm gerekmez.


5
Buraya eklenecek tek şey, makinenizi "diski askıya almak" üzere yapılandırılmış olmanız durumunda, gerçekte olan şey, bellekteki şeylerin takas için yazılmış olmasıdır. Bunun çalışması için, takas bunun gerçekleşmesi için aktif bir dosya sisteminde bulunamadığından takas kendi bölümünde olmalıdır. Bu nedenle, bir sunucunuz varsa, muhtemelen bu özelliği kullanmazsınız ve mutlu bir takas dosyası kullanırsınız. Dizüstü bilgisayarınız varsa, büyük olasılıkla bir takas bölümü istersiniz, bu nedenle hazırda bekletme için "dosyayı askıya alabilir".
Nathan S. Watson-Haigh

@ NathanS.Watson-Haigh Takasta olan verilerde ne olur? Atılamaz.
XTF,

3
@ NathanS.Watson-Haigh Bir kaynağa link verebilir misiniz? Ubuntu 17.04, varsayılan olarak bir takas dosyası kullanır. "Diski askıya alamazsa" şaşırtıcı olurdu.
Matthias Weiler

22

Aslında, seyrek dosyaları kullanmadığınız sürece pek bir fark yaratmaz .

Dd ile "normal" bir dosya oluşturmak, dosyayı (eğer mümkünse) tek bir çalıştırmada tahsis eder, seyrek bir dosya oluşturmak size etrafta yatar, ancak gerçekte tüm alanı kullanmayan bir 10GB dosyanız olduğunu söyler. Mkswap'in alanı yine de tahsis etmeyeceğinden emin değilim, ancak genellikle bir takas dosyası zamanla büyüyecek ve bu nedenle sürekli bir sektör tahsis etmeyecek (diskin bir bölümünde olduğu gibi) yerine daha çok gerekli olan blokları tahsis etmeyecek zamanla parçalanma (disk kullanımına bağlı olarak elbette)

Dahili olarak Linux çekirdeği bir takas dosyasının altındaki bloklara doğrudan ya da daha az doğrudan erişecek - şu anda bağlantıyı bulamıyorum, kaputun altında ne olduğunu, birileri daha resmi bir şey bulamazsa bu konuda bana güvenmelisin. Şu an bulabildiğim tek şey:

Bütün bunlar sadece 2.6 Linux çekirdeği için geçerlidir.

En iyi performansı istiyorsanız (ve bu gerçekten ne?? ... takas yavaş, dönem. En iyi performans için takas yapmamak için RAM'i artırın ), bir bölüm kullanmak istersiniz.


18
Modern swapon sürümleri, takas olarak biçimlendirilmiş seyrek dosyalarla çalışmayı reddeder ve dosyanın delikleri olduğunu gösterir.
Tim Post

3

Bu ilginç bir soru ve aynı konuda çok şey okuyordum. Genellikle bir takas bölümü, temel dosya sistemi nedeniyle bir dosyadan daha iyidir. Ancak her zaman takas alanınızın boyutunu artırmanız gerekiyorsa, dosya daha iyi bir seçenektir. Çekirdek 2.4'e kadar, bir takas bölümünün bir dosyadan daha hızlı olduğu düşünüldü, ancak şimdi çekirdek 2.6'daki gelişmelerle performanslar neredeyse aynı.

İnternette de bulduğum bir şey.

http://www.go2linux.org/swap-file-vs-swap-partition

ve

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html


Ancak bu bağlantıların hiçbiri kararlarının ardındaki nedenleri gerçekten açıklamıyor.
Bill Gray

Sebep, dosyanın altında yatan dosya sistemi aşırı yüklenmesidir. Bir dosya oluşturursanız, parçalanmış olabilir. ve takasta önbelleğe alınan dosyaya bağlı olarak, okumalar, kendi başına bir takas dosya sistemi olan bütün bir bölüme kıyasla daha yavaş olabilir.
Viky

Daha fazla kazmaya çalıştım ve wiki'de göreceli yazı bulundu. Sadece size yardımcı olmak için kontrol edebileceğiniz birkaç takas ayarı parametresi vardır. Ayrıca Linux için uygulamadaki açıklamayı da kontrol ediniz. Yardımcı olabilir. en.wikipedia.org/wiki/Paging
Viky

Yukarıda belirtilen wiki linkindeki alıntılardan birini takip etti ve aynı konuda ilginç bir konu bulundu. Bunu kontrol etmek isteyebilirsin. lkml.org/lkml/2005/6/28/427
Viky

Benim sorumla dosya sistemi aşırı yükünden bahsettim, ancak iç diskin yanında bir bölüme sahip olduğu kadar bir performans bloğu değil. Bu gecikme, genel dosya sisteminden daha iyi olurdu.
Bill Gray

2

Bence şu anda olduğumuz aşamada, askıda kaldığında / uyurken verileri takas yazabilen bir konfigürasyona sahip bir dizüstü bilgisayar çalıştırmıyorsanız, takas gerçekten "son çare" olarak düşünülmelidir. En iyisi, hiçbir zaman diske yazdırmaması için bir kutuya yeterli RAM koymaktır.

Olduğu söyleniyor, bir bölüm muhtemelen daha iyi bir yol, performans bilge, bir dosya daha esnek olmasına rağmen. Sadece 7200'den fazla bir RPM iş milinde olduğundan emin olun.


1
Erişim zamanları gecikme faktörü olarak daha fazla olduğunda, neden bir bölüm daha iyi performans göstersin ki?
Bill Gray

5
Çünkü bir dosyayı kullanmak daha fazla kafa hareketi gerektirebilir, çünkü verileri okumak / yazmak için sayfa bulurken, dosya sisteminde herhangi bir yerde olabilir, bu yüzden fs yapılarının aranması gerekebilirken, takas bölümü ile her sayfa, içinde bilinen bir konumda olacaktır. bölüm. Bu, erişim zamanını (toplu iş hacmine göre) farklılaştırıcı bir faktör yapar.
David Spillett

2
"Hazırda bekletme moduna geçmeden takas yapılandırmayın" tartışmalı bir görünümdür. Bazen sistem düşükken gerçek bellek takası sistemin iyileşmesini sağlayabilir. Takas yapmamak sizi büyük bellek tahsisleri yapan programlar çalıştırmakla sınırlandırabilir, ancak çoğuna dokunmayın (örneğin, bazı hata ayıklama araçları). Bazen dolu fakat boşta bir bellek bölgesi disk önbelleği olarak daha iyi kullanılır ve bu tradeoff yalnızca takas kullanılabilir olduğunda yapılabilir. Tartışma için unix.stackexchange.com/questions/2658/… adresine bakın .
Anon

1
@Anon ne dedi. Chrome, ünlü bir hafıza kartıdır ve <100 sekme ile bile, 16GB dizüstü bilgisayarım, bellek kullanımı% 90 civarında olduğunda ve takas dosyası olmadığında birkaç dakika boyunca yanıt vermiyor. Şaşırtıcı bir şekilde, Ubuntu'nun kullanıcıyı işletim sisteminin hafızası tükettiği konusunda uyarması için yerleşik bir mekanizması yoktur .
Dan Dascalescu

2

İşimizdeki düşünce, bir Swap dosyası parçalanabileceği ve parçalanmanın takas erişimini yavaşlattığı için bir bölüm daha iyi bir yaklaşımdır. Tabii ki, statik boyutta bir takas dosyasının tanımlanması da aynı şeyi yapar, ancak bu sadece öznel olarak daha temiz görünür.

Bu yaklaşım tek yol mu? Muhtemelen hayır, uygulama 10 yıl öncesine kadar kuruldu. Aradan geçen yıllarda tahrik teknolojisindeki tek büyük değişiklik, kullandığımız RAID denetleyicilerinin karmaşıklığıdır (henüz SSD'ler için yeterince zengin değiliz). Sürücü boyutlarındaki artış, yarattığımız takas bölümünün, sürücünün başlangıcına 18GB sürücüler standart olarak geri gönderilenden daha yakın olduğu anlamına gelir, bu nedenle takas hızları eski günlerde olduğundan daha hızlıdır.

Tabii ki, ESX tabanlı Windows sistemlerimizde, takas dosyasının konumu tamamen karışıktır. Takas dosyası ile fiziksel disk tablaları arasında farketmeyecek kadar çok sanallaştırma katmanı var. Ama ayrı bir bölümde tutuyoruz çünkü bu sadece standart.


4
Çekirdek doğrudan bir mmap yaklaşımı kullandığından ve hiçbir zaman dosyayı küçültmeyecek veya daraltmayacağından takas dosyası parçalanmaz. Sanallaştırma hakkındaki yorumunuz için + 1: bu önemli değil.
parasietje

0

Bir takas dosyası kullanmak, dosya-hafızaya çeviri için biraz daha fazla hafıza kullanabilir. 1GB takas başına 1 MB'tan daha az bellek kullanıyoruz. Dosya sistemi önbelleği, takılan verileri önbelleğe almaz, yalnızca ek bellek gereksinimlerinin çoğu olması gereken kurumsal verileri önbelleğe almaz.

Bunun yanında, belki de 1000 kez bir kez ek bir baş arayışında olmak dışında makul bir performansı kaybedeceğinizden şüpheliyim.

Komik gerçek, zswap'i dinamik olarak genişleyen bir takas dosyasıyla birlikte kullanmak, kullanılmadığı zamanlarda takas işlemlerinde etkileyici bir hızlanma sağlar.


1
İddialarınız için herhangi bir gerekçe sunabilir misiniz? Bu oldukça anekdot gibi görünüyor.
avustinian
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.