Varsayılan takas boyutu nedir?


16

Yükleyici hangi boyutta takas bölümünün oluşturulacağını nasıl hesaplar? Muhtemelen kurulu RAM boyutuna dayanmaktadır, ancak bu ne kadar RAM'e bağlı?


Ne kadar RAM'iniz olduğuna bağlı olarak Varsayılan değer yoktur.
Uri Herrera

1
Evet, ama "duruma göre" biraz daha fazla ayrıntı arıyordum. Her zaman RAM boyutunun belirli bir katı mıdır, yoksa ne kadar RAM olduğuna bağlı mıdır? Örneğin, büyük RAM boyutlarının hazırda bekletme modunu etkinleştirmek için asla fazlasıyla yeterli olması gerekmez, ancak çok küçük RAM boyutları 1: 1'den çok daha büyük bir takastan yararlanabilir.
Seret

Yanıtlar:


5

Aslında dphys-swapfilevarsayılan bir Ubuntu kurulum CD'sinde program yoktur ve takas boyutunu hesaplamak için kullanılmaz .

Olan şey, ubiquityyükleyicinin tüm bölümlerin boyutlarını belirlemek için partman-autokomut dosyalarını ve yapılandırma dosyalarını ( tarifler olarak adlandırılır ) kullanmasıdır. Şöyle çalışır:

  • Partman, bilgisayarın türüne ve kullanıcının seçtiği seçeneğe göre doğru tarif dosyasını bulur.
  • Orada bölümün minimum ve maksimum boyutunu ve önceliğini bulur. İçin takas 512 (öncelik)% 300 (maks) - ile 96 (MB dakika) olabilir.
  • Sonra RAM boyutunu alır (üzerinden /proc/meminfo).
  • Boyutları hesaplamak için kendi algoritmasını kullanır.

Detaylar:

Bir tarif dosyası şöyle görünebilir:

1 1 1 free
    $iflabel{ gpt }
    method{ biosgrub } .

500 10000 -1 $default_filesystem
    $lvmok{ }
    method{ format }
    format{ }
    mountpoint{ / } .

96 512 300% linux-swap
    $lvmok{ }
    method{ swap }
    format{ } .

Boyutları hesaplamak için algoritma:

for(i=1;i<=N;i++) {
   factor[i] = priority[i] - min[i];
}
ready = FALSE;
while (! ready) {
   minsum = min[1] + min[2] + ... + min[N];
   factsum = factor[1] + factor[2] + ... + factor[N];
   ready = TRUE;
   for(i=1;i<=N;i++) {
      x = min[i] + (free_space - minsum) * factor[i] / factsum;
      if (x > max[i])
         x = max[i];
      if (x != min[i]) {
         ready = FALSE;
         min[i] = x;
      }
   }
}

Daha fazla bilgi için:


İlginç tartışma: tuhaf bir debian web sitesinden daha iyi bir referans mı?
enzotib

Bunu da aradığımda buldum ama paketin "Uyarı: Bu paket sadece debian-installer görüntülerinin oluşturulmasında kullanılmak üzere tasarlanmıştır. Normal bir Ubuntu sistemine kurmayın." Ben bu arama yapılmadı ve dphys-swapfile>: - D Hmm gerçekten ilginç buldum varsayılmadı.
Rinzwind

@enzotib: neden garip?
düzenleyin

@arrange: garip çünkü resmi bir ubuntu sitesi değil, aynı zamanda bir debian sitesi olarak resmi bir site gibi görünmüyor.
enzotib

Takas boyutu D'yi hesaplamak için 2 yöntem daha buldum: Bu yöntem grep ^ Mem: / proc / meminfo kullanıyorsa veya 0 grep ^ MemTotal: / proc / meminfo ise ve 2 (varsayılan) veya 3 (çoğu % 300). Bir mipsel-sb1-bcm91250a sabit 512 kullanır. İ386-efi% 200 kullanır.
Rinzwind

19

Bu oldukça teknik olacak ama öğrenmek çok eğlenceliydi ...

  • Bir paket buldum dphys-swapfileve işte Kaynak kod . Seçenek setupayarlamak için kullanılır:
kurulumu - dphys-swapfile'a en iyi takas dosyası boyutunu hesaplamasını ve
(yeniden) bir takas dosyası oluşturun. Varsayılan olarak RAM boyutunun 2 katı.
Bu önyükleme sırasında çağrılabilir, böylece dosya her zaman
geçerli RAM için doğru boyut veya RAM boyutu her
değişti.
  • İçeride önceden tanımlanmış bir boyut dphys-swapfileayarı vardır conf_swapsize(Natty'de bu boştur):
zorlamak istediğimiz boyut, varsayılan (boş) 2 * RAM verir
CONF_SWAPSIZE =

ve swapfactor...

this is what we want, 2 times RAM size
SWAPFACTOR=2
  • Gerçek boyut biraz daha hesaplanır:

    eğer ["$ {CONF_SWAPSIZE}" = ""]; sonra
      # compute otomatik optimum boyut
      echo -n "bilgi işlem boyutu"
      # Bu fiziksel RAM boyutuna en yakın gibi görünüyor, yaklaşık 60k yok
      KCORESIZE = "` ls -l / proc / kcore | awk '{print $ 5}' '"
      # aşağı yuvarlanmış MBytes yapmak tam 1 çok az olacak, bu yüzden ekleyin 1
      MEMSIZE = "" ifade {$ KCORESIZE} "/ 1048576 + 1" "
      # varsayılan, yapılandırma dosyası üzerine yazma olmadan, takas = 2 * RAM
      CONF_SWAPSIZE = "` ifade "$ {MEMSIZE}" '*' "$ {SWAPFACTOR}" `"
    fi

Bu pakette nasıl hesapladıklarını görebileceğiniz gibi, büyüklüğüne bağlıdır /proc/kcore, daha sonra 1048576, +1'ye yuvarlanır ve daha sonra swapfactor ile çarpılır. Makinemden:

resim açıklamasını buraya girin

Bu nedenle, bu sistem için varsayılan değer 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MBytes olacaktı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.