インストーラーは、作成するスワップパーティションのサイズをどのように計算しますか?おそらく、インストールされているRAMサイズに基づいていますが、それはRAMの量に依存しますか?
実際、デフォルトのUbuntuインストールCDにはdphys-swapfile
プログラムはなく、swapサイズの計算には使用されません。
起こるのは、ubiquity
インストーラーがpartman-auto
スクリプトと構成ファイル(recipesと呼ばれる)を使用してすべてのサイズを決定することですパーティション。それはこのように動作します:
/proc/meminfo
経由)。詳細:
recipeファイルは次のようになります。
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{ } .
サイズを計算するアルゴリズム:
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;
}
}
}
詳しくは:
これはかなり技術的になりますが、見つけるのは楽しかったので、ここに行きます...
dphys-swapfile
を見つけました。これは ソースコード です。オプションsetup
を使用して設定します。setup-dphys-swapfileに最適なスワップファイルサイズを計算し、 (再)フィッティングスワップファイルを生成するよう指示します。デフォルトで2倍RAMサイズ。 これはブート時に呼び出すことができるため、ファイルは常に現在のRAMに対して 正しいサイズのままであるか、RAMサイズが に変更されました。
dphys-swapfile
は、事前定義されたサイズの設定conf_swapsize
です(Nattyではこれは空です):強制したいサイズ、デフォルト(空)は2 * RAM CONF_SWAPSIZE =を提供します
およびswapfactor
...の設定.
this is what we want, 2 times RAM size
SWAPFACTOR=2
実際のサイズはさらに少し計算されます:
if ["$ {CONF_SWAPSIZE}" = ""]; then #自動最適サイズの計算 echo -n "computing size、" #これは物理的なRAMサイズに最も近いようで、約60k不足 KCORESIZE = "` ls -l/proc/kcore | awk '{print $ 5}' `" #切り捨てられたMBytesがちょうど1つ少なすぎるため、1 [.____を追加します。] MEMSIZE = "` expr "$ {KCORESIZE}"/1048576 + 1` " #デフォルト、設定ファイルの上書きなし、swap = 2 * RAM CONF_SWAPSIZE =" `expr" $ { MEMSIZE} "'*'" $ {SWAPFACTOR} "` " fi
このパッケージでの計算方法は、/proc/kcore
のサイズに依存し、1048576で除算され、+ 1で切り上げられてから、swapfactorで乗算されます。私のマシンから:
したがって、このシステムのデフォルトは1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MBytesです。