ตัวติดตั้งคำนวณขนาดของพาร์ติชั่นการสว็อปเพื่อสร้างได้อย่างไร? สมมุติว่ามันขึ้นอยู่กับขนาดแรมที่ติดตั้ง แต่มันขึ้นอยู่กับแรมเท่าไหร่?
ตัวติดตั้งคำนวณขนาดของพาร์ติชั่นการสว็อปเพื่อสร้างได้อย่างไร? สมมุติว่ามันขึ้นอยู่กับขนาดแรมที่ติดตั้ง แต่มันขึ้นอยู่กับแรมเท่าไหร่?
คำตอบ:
จริงๆแล้วไม่มีdphys-swapfile
โปรแกรมในแผ่นซีดีติดตั้งเริ่มต้นของ Ubuntu และไม่ได้ใช้ในการคำนวณขนาดสวอป
สิ่งที่เกิดขึ้นคือตัวubiquity
ติดตั้งใช้partman-auto
สคริปต์และไฟล์กำหนดค่า (เรียกว่าสูตรอาหาร ) เพื่อกำหนดขนาดของพาร์ติชันทั้งหมด มันได้ผลเช่นนี้:
/proc/meminfo
)รายละเอียด:
สูตรไฟล์สามารถมีลักษณะเช่นนี้
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;
}
}
}
ดูเพิ่มเติมที่:
partman-auto-recipe.txt เครื่องสำรองข้อมูลย้อนกลับ
นี่จะค่อนข้างเป็นเรื่องทางเทคนิค แต่ก็สนุกที่จะทราบดังนั้นที่นี่จะไป ...
การตั้งค่า - บอก dphys-swapfile เพื่อคำนวณขนาดไฟล์สวอปที่ดีที่สุดและ (ใหม่ -) สร้างไฟล์ swap ที่เหมาะสม เริ่มต้นมันขนาด RAM 2 ครั้ง สิ่งนี้สามารถเรียกได้ตอนบูทเพื่อให้ไฟล์ยังคงอยู่ ขนาดที่เหมาะสมสำหรับ RAM ปัจจุบันหรือรันด้วยมือทุกครั้งที่มีขนาด RAM การเปลี่ยนแปลง
dphys-swapfile
เป็นการตั้งค่าconf_swapsize
สำหรับขนาดที่กำหนดไว้ล่วงหน้า (ใน Natty นี่ว่างเปล่า):ขนาดที่เราต้องการบังคับให้เป็นค่าเริ่มต้น (ว่าง) ให้ 2 * RAM CONF_SWAPSIZE =
และการตั้งค่าสำหรับswapfactor
...
this is what we want, 2 times RAM size
SWAPFACTOR=2
ขนาดจริงจะถูกคำนวณเพิ่มเติมอีกเล็กน้อยเมื่อ:
ถ้า ["$ {CONF_SWAPSIZE}" = ""]; แล้วก็ # คำนวณขนาดที่เหมาะสมโดยอัตโนมัติ echo -n "ขนาดการคำนวณ" # ดูเหมือนว่าจะใกล้เคียงที่สุดกับขนาด RAM จริงไม่มีประมาณ 60k KCORESIZE = "` ls -l / proc / kcore | awk '{พิมพ์ $ 5}' `" # ทำให้ MBytes ที่ปัดเศษลงจะเป็น 1 น้อยเกินไปดังนั้นให้เพิ่ม 1 MEMSIZE = "` expr "$ {KCORESIZE}" / 1048576 + 1` " # default โดยไม่ต้องเขียนทับไฟล์ config swap = 2 * RAM CONF_SWAPSIZE = "` expr "$ {MEMSIZE}" '*' "$ {SWAPFACTOR}" `" Fi
ในขณะที่คุณสามารถดูวิธีที่พวกเขาคำนวณในแพคเกจนี้ขึ้นอยู่กับขนาดของ/proc/kcore
แล้วได้รับการหารด้วย 1048576, +1 เพื่อปัดเศษขึ้นแล้วได้รับการคูณด้วย swapfactor จากเครื่องของฉัน:
ดังนั้นค่าเริ่มต้นสำหรับระบบนี้คือ 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MBytes