ขนาดการแลกเปลี่ยนเริ่มต้นคืออะไร?


16

ตัวติดตั้งคำนวณขนาดของพาร์ติชั่นการสว็อปเพื่อสร้างได้อย่างไร? สมมุติว่ามันขึ้นอยู่กับขนาดแรมที่ติดตั้ง แต่มันขึ้นอยู่กับแรมเท่าไหร่?


ไม่มีค่าเริ่มต้นขึ้นอยู่กับจำนวนแรมที่คุณมี
Uri Herrera

1
ใช่ แต่ฉันกำลังมองหารายละเอียดเล็ก ๆ น้อย ๆ มากกว่า "มันขึ้นอยู่กับ" เป็นขนาด RAM ที่ตั้งไว้หลายครั้งหรือไม่หรือขึ้นอยู่กับว่ามี RAM เท่าใด ตัวอย่างเช่นขนาด RAM ขนาดใหญ่จะไม่ต้องการมากเกินพอที่จะเปิดใช้งานการไฮเบอร์เนต แต่ขนาด RAM ขนาดเล็กมากอาจได้รับประโยชน์จากการสลับที่ใหญ่กว่า 1: 1
Seret

คำตอบ:


5

จริงๆแล้วไม่มีdphys-swapfileโปรแกรมในแผ่นซีดีติดตั้งเริ่มต้นของ Ubuntu และไม่ได้ใช้ในการคำนวณขนาดสวอป

สิ่งที่เกิดขึ้นคือตัวubiquityติดตั้งใช้partman-autoสคริปต์และไฟล์กำหนดค่า (เรียกว่าสูตรอาหาร ) เพื่อกำหนดขนาดของพาร์ติชันทั้งหมด มันได้ผลเช่นนี้:

  • พาร์ทแมนค้นหาไฟล์สูตรที่ถูกต้องตามประเภทของคอมพิวเตอร์และตัวเลือกที่ผู้ใช้เลือก
  • ที่นั่นจะพบขนาดต่ำสุดและสูงสุดของพาร์ติชันและลำดับความสำคัญ สำหรับการสลับสามารถเป็น 96 (ขั้นต่ำ - เป็น MB) 512 (ลำดับความสำคัญ) 300% (สูงสุด)
  • จากนั้นจะได้รับขนาด RAM (ผ่าน/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;
      }
   }
}

ดูเพิ่มเติมที่:


การอภิปรายที่น่าสนใจ: การอ้างอิงที่ดีกว่าเว็บไซต์เดเบียนแปลก ๆ
enzotib

ฉันก็พบว่าเช่นกันเมื่อฉันค้นหา แต่แพ็คเกจมี "คำเตือน: แพคเกจนี้มีไว้สำหรับใช้ในการสร้างอิมเมจตัวติดตั้งเดเบียนเท่านั้นอย่าติดตั้งบนระบบ Ubuntu ปกติ" ฉันคิดว่านี่ไม่ได้ใช้ดังนั้นฉันค้นหาและพบรหัสสำหรับ dphys-swapfile>: - D อืมน่าสนใจจริงๆ
Rinzwind

@enzotib: ทำไมแปลก
จัด

@ การจัดเรียง: แปลกเพราะไม่ใช่เว็บไซต์อูบุนตูอย่างเป็นทางการและในฐานะที่เป็นไซต์เดเบียนดูเหมือนว่าจะไม่เป็นทางการ
enzotib

ฉันพบวิธีอีก 2 วิธีในการคำนวณขนาด swap D: วิธีนี้ใช้ grep ^ Mem: / proc / meminfo หรือถ้าเป็น 0 grep ^ MemTotal: / proc / meminfo แล้วคูณด้วย 2 (ค่าเริ่มต้น) หรือ 3 (ส่วนใหญ่ถูกตั้งค่าเป็น 300%) ด้วยขั้นต่ำต่อสถาปัตยกรรม mipsel-sb1-bcm91250a ใช้ค่าคงที่ 512 แล้ว i386-efi ใช้ 200%
Rinzwind

19

นี่จะค่อนข้างเป็นเรื่องทางเทคนิค แต่ก็สนุกที่จะทราบดังนั้นที่นี่จะไป ...

  • ผมพบว่าแพคเกจdphys-swapfileและนี่คือรหัสที่มา ตัวเลือกsetupใช้เพื่อตั้งค่า:
การตั้งค่า - บอก 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.