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ı?
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ı?
Yanıtlar:
Aslında dphys-swapfile
varsayılan bir Ubuntu kurulum CD'sinde program yoktur ve takas boyutunu hesaplamak için kullanılmaz .
Olan şey, ubiquity
yükleyicinin tüm bölümlerin boyutlarını belirlemek için partman-auto
komut dosyalarını ve yapılandırma dosyalarını ( tarifler olarak adlandırılır ) kullanmasıdır. Şöyle çalışır:
/proc/meminfo
).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:
Bu oldukça teknik olacak ama öğrenmek çok eğlenceliydi ...
dphys-swapfile
ve işte Kaynak kod . Seçenek setup
ayarlamak 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.
dphys-swapfile
ayarı 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:
Bu nedenle, bu sistem için varsayılan değer 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MBytes olacaktır.