swap partition vs file เพื่อประสิทธิภาพหรือไม่


62

ประสิทธิภาพที่ดีกว่าคืออะไร พาร์ติชั่นที่อยู่ใกล้กับด้านในของดิสก์จะมีเวลาเข้าถึงที่ช้าลงและเราต้องรอให้ไดรฟ์สลับระหว่างระบบปฏิบัติการและพาร์ทิชันสลับ

ในทางกลับกันพาร์ทิชัน swap จะข้ามระบบไฟล์ทั้งหมดที่อนุญาตให้เขียนไปยังดิสก์โดยตรงซึ่งอาจเร็วกว่าไฟล์

การแลกเปลี่ยนประสิทธิภาพคืออะไร?

swapfile ขนาดคงที่เท่าไหร่สร้างความแตกต่าง?

มันเป็นกรณีที่จะเปลี่ยนเป็นพาร์ติชัน swap อีกต่อไป แต่ประสิทธิภาพจะดีขึ้นในขณะที่อยู่ในพาร์ติชัน swap ที่ถ้ามันเป็นไฟล์ swap หรือไม่?


เพิ่งออกมาจากความอยากรู้ คุณสามารถให้รายละเอียดระบบเช่นรุ่นเคอร์เนล, RAM, พาร์ติชั่นและระบบไฟล์ได้หรือไม่?
Viky

คุณกำลังมองหาระบบปฏิบัติการอะไรอยู่?
Mathieu Chateau

4
สำหรับข้อมูล Linux โปรดดูlkml.org/lkml/2005/7/7/326
Adam Monsen

มีการปรับปรุงสำหรับคำตอบของคำถามหรือไม่
kokbira

คำตอบ:


29
  1. บนฮาร์ดดิสก์การรับส่งข้อมูลและการค้นหามักเร็วกว่าจุดเริ่มต้นของดิสก์เนื่องจากข้อมูลนั้นถูกเก็บไว้ใกล้กับพื้นที่ด้านนอกของดิสก์ซึ่งมีเซกเตอร์ต่อสูบมากขึ้น ดังนั้นการสร้าง swap ที่จุดเริ่มต้นของดิสก์อาจช่วยปรับปรุงประสิทธิภาพได้

  2. สำหรับเคอร์เนล 2.6 Linux จะไม่มีความแตกต่างด้านประสิทธิภาพระหว่าง swap พาร์ติชั่นและไฟล์ swap ที่ไม่มีการจัดระเบียบ เมื่อเปิดใช้งาน swap พาร์ติชัน / ไฟล์โดย swapon เคอร์เนล 2.6 จะค้นหาว่าดิสก์บล็อกใดที่เก็บ swapfile ไว้ดังนั้นเมื่อถึงเวลาที่ต้องทำการสลับมันไม่จำเป็นต้องจัดการกับระบบไฟล์เลย

ดังนั้นหาก swapfile ไม่ได้แยกส่วนมันจะเหมือนกับว่ามีการแบ่งพาร์ติชันที่ตำแหน่งเดียวกัน หรือใส่อีกวิธีหนึ่งคุณจะได้ประสิทธิภาพที่เหมือนกันถ้าคุณใช้ swap partition raw หรือฟอร์แมตด้วยระบบไฟล์จากนั้นสร้าง swapfile ที่เติมพื้นที่ทั้งหมดเนื่องจากวิธีใดวิธีหนึ่งในดิสก์นั้นมีพื้นที่ต่อเนื่องที่ใช้สำหรับการแลกเปลี่ยน ซึ่งเคอร์เนลใช้โดยตรง

ดังนั้นหากใครสร้าง swapfile เมื่อระบบไฟล์นั้นสด (ดังนั้นรับรองว่ามันไม่ได้แยกส่วนและที่จุดเริ่มต้นของไดรฟ์) ประสิทธิภาพการทำงานควรจะเหมือนกันกับการมีพาร์ทิชัน swap ก่อนที่ไดรฟ์ นอกจากนี้หากมีใครสร้าง swapfile ขึ้นมาพูดในช่วงกลางของโวลุ่มด้วยไฟล์ที่อยู่ทั้งสองข้างหนึ่งอันอาจจะได้ประสิทธิภาพที่ดีกว่าเนื่องจากมีการแลกเปลี่ยนน้อยกว่า

บน Linux หาก swapfile ถูกสร้างไม่แยกส่วนและไม่ขยายตัวมันจะไม่สามารถแยกส่วนได้อย่างน้อยก็มีระบบไฟล์ปกติเช่น ext3 / 4 มันจะใช้ดิสก์บล็อกเดียวกันซึ่งต่อเนื่องกันเสมอ

ฉันสรุปว่าเกี่ยวกับประโยชน์เฉพาะของพาร์ทิชัน swap โดยเฉพาะจะรับประกันการยกเลิกการจัดเรียงเมื่อคุณต้องการขยาย หากการแลกเปลี่ยนของคุณจะไม่ถูกขยายไฟล์ที่สร้างขึ้นในระบบไฟล์ใหม่ไม่จำเป็นต้องมีพาร์ติชันเพิ่มเติม


5
สิ่งเดียวที่จะเพิ่มในที่นี้คือหากเครื่องของคุณได้รับการกำหนดค่าเป็น "suspend to disk" สิ่งที่เกิดขึ้นจริงคือสิ่งที่อยู่ในหน่วยความจำถูกเขียนเพื่อสลับ เพื่อให้สามารถใช้งานได้การสลับจะต้องอยู่ในพาร์ติชั่นของตัวเองเนื่องจากการสลับไม่สามารถอยู่ในระบบไฟล์ที่ใช้งานได้ ดังนั้นหากคุณมีเซิร์ฟเวอร์คุณอาจไม่ใช้คุณสมบัตินี้และสามารถใช้ไฟล์ swap ได้อย่างมีความสุข หากคุณมีแล็ปท็อปคุณอาจต้องการสลับพาร์ติชั่นเพื่อให้คุณสามารถ "ระงับไฟล์" สำหรับการจำศีล
Nathan S. Watson-Haigh

@ NathanS.Watson-Haigh เกิดอะไรขึ้นกับข้อมูลที่มีอยู่แล้วใน swap? มันไม่สามารถถูกโยนทิ้งไปได้
XTF

3
@ NathanS.Watson-Haigh คุณช่วยลิงค์ที่มาได้ไหม? Ubuntu 17.04 ใช้ไฟล์ swap เป็นค่าเริ่มต้น มันจะน่าแปลกใจหากไม่สามารถ "ระงับดิสก์" ได้
Matthias Weiler

22

จริงๆแล้วมันไม่ได้ทำให้ความแตกต่างมากตราบใดที่คุณไม่ได้ใช้ไฟล์เบาบาง

การสร้างไฟล์ "ปกติ" ด้วย dd จะจัดสรรไฟล์ (หากเป็นไปได้ทั้งหมด) ในการรันครั้งเดียวในขณะที่การสร้างไฟล์แบบเบาบางจะบอกคุณว่าคุณมีไฟล์ขนาด 10GB อยู่รอบ ๆ แต่ไม่ได้ใช้พื้นที่ทั้งหมด ฉันไม่แน่ใจว่า wether mkswap จะไม่จัดสรรพื้นที่ แต่โดยทั่วไปแล้วไฟล์ swap จะเพิ่มขึ้นในเวลาและดังนั้นจะไม่จัดสรรเซกเตอร์ต่อเนื่อง (ในส่วนของดิสก์) แต่จัดสรรบล็อกตามความจำเป็นซึ่งนำไปสู่ การแตกแฟรกเมนต์เมื่อเวลาผ่านไป (แน่นอนขึ้นอยู่กับการใช้งานของดิสก์)

ภายในเคอร์เนลลินุกซ์จะเข้าถึงบล็อกพื้นฐานของไฟล์ swap ไม่มากก็น้อย - ฉันไม่สามารถหาลิงก์ได้ในขณะนี้เกิดอะไรขึ้นภายใต้ประทุนคุณต้องเชื่อใจฉันในสิ่งนี้เว้นแต่ว่าใครบางคนจะพบบางสิ่งที่เป็นทางการมากกว่า สิ่งที่ฉันสามารถทำได้ในตอนนี้คือ:

ทั้งหมดนี้ใช้กับ 2.6 บรรทัดของเคอร์เนล Linux เท่านั้น

หากคุณต้องการประสิทธิภาพที่ดีที่สุด (และนั่นคืออะไรจริง ๆ ... การสลับช้าระยะเวลาเพิ่ม RAM เพื่อให้คุณไม่สลับเพื่อประสิทธิภาพที่ดีที่สุด ) คุณจะต้องใช้พาร์ติชัน


18
Swapon เวอร์ชั่นใหม่จะปฏิเสธทันทีที่ทำงานกับไฟล์ที่กระจัดกระจายในรูปแบบ swap โดยอ้างว่าไฟล์นั้นมีรู
Tim Post

3

นี่เป็นคำถามที่น่าสนใจและได้อ่านมามากมายเกี่ยวกับเรื่องเดียวกัน โดยทั่วไปแล้ว swap partition นั้นดีกว่าไฟล์เนื่องจากระบบไฟล์ที่อยู่ภายใต้ แต่ถ้าคุณต้องการเพิ่มขนาดของการสลับไฟล์ของคุณอยู่เสมอตัวเลือกที่ดีกว่าคือ จนกระทั่งเคอร์เนล 2.4 ได้รับการพิจารณาว่า swap พาร์ทิชันเร็วกว่าไฟล์ แต่ตอนนี้มีการปรับปรุงเคอร์เนล 2.6 การแสดงเกือบจะเหมือนกัน

บางสิ่งที่ฉันพบบนอินเทอร์เน็ตเช่นกัน

http://www.go2linux.org/swap-file-vs-swap-partition

และ

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html


อย่างไรก็ตามการเชื่อมโยงเหล่านี้ไม่ได้อธิบายถึงเหตุผลเบื้องหลังการตัดสินใจของพวกเขา
บิลสีเทา

เหตุผลก็คือไฟล์จะมีระบบไฟล์พื้นฐานของมันเกินพิกัด หากคุณสร้างไฟล์มันอาจจะแตกเป็นเสี่ยง ๆ และขึ้นอยู่กับไฟล์ที่ถูกแคชไว้บน swap การอ่านอาจช้ากว่าพาร์ติชันทั้งหมดซึ่งเป็นระบบไฟล์ swap ในตัวของมันเอง
Viky

พยายามขุดเพิ่มเติมและพบบทความที่เกี่ยวข้องใน wiki เพียงเพื่อช่วยคุณมีพารามิเตอร์การปรับค่าการสลับที่คุณสามารถตรวจสอบได้ ตรวจสอบคำอธิบายภายใต้การนำไปใช้สำหรับ linux อาจช่วยได้ en.wikipedia.org/wiki/Paging
Viky

ติดตามหนึ่งในการอ้างอิงในลิงค์ wiki ที่กล่าวถึงข้างต้นและพบว่ามีกระทู้ที่น่าสนใจเกี่ยวกับปัญหาเดียวกัน อาจต้องการตรวจสอบว่า lkml.org/lkml/2005/6/28/427
Viky

ฉันพูดถึงระบบไฟล์มากเกินไปในคำถามของฉัน แต่มันก็ไม่ได้บล็อกประสิทธิภาพเท่าที่มีพาร์ทิชันใกล้ดิสก์ภายในเป็น ความล่าช้านั้นจะดีกว่าค่าใช้จ่ายของระบบไฟล์
บิลเกรย์

2

ฉันคิดว่าตอนนี้เราอยู่ในขั้นตอนนี้เว้นแต่คุณจะใช้แล็ปท็อปที่มีการกำหนดค่าที่เขียนข้อมูลไปยังการแลกเปลี่ยนเมื่อหยุดชั่วคราว / หลับการแลกเปลี่ยนควรได้รับการพิจารณาว่าเป็น "ทางเลือกสุดท้าย" ทางออกที่ดีที่สุดของคุณคือการใส่ RAM ลงในกล่องให้เพียงพอ

ดังที่กล่าวไว้ว่าพาร์ติชันน่าจะเป็นวิธีที่ดีกว่ามีประสิทธิภาพที่ดีแม้ว่าไฟล์จะมีความยืดหยุ่นมากกว่า เพียงตรวจสอบให้แน่ใจว่ามันอยู่บนแกนหมุน 7200+ รอบต่อนาที


1
เหตุใดพาร์ติชันจะมีประสิทธิภาพที่ดีกว่าเมื่อเวลาในการเข้าถึงนานกว่าปัจจัยที่ทำให้เกิดความล่าช้า
บิลสีเทา

5
เนื่องจากการใช้ไฟล์อาจต้องการการเคลื่อนไหวของหัวอ่านมากกว่าเพราะเมื่อค้นหาหน้าเพื่ออ่าน / เขียนข้อมูลอาจอยู่ที่ใดก็ได้ในระบบไฟล์ดังนั้นโครงสร้าง fs อาจจำเป็นต้องค้นหาในขณะที่พาร์ทิชัน swap แต่ละหน้าจะอยู่ในตำแหน่งที่ทราบภายใน กั้น สิ่งนี้ทำให้เวลาในการเข้าถึง (ตามที่ระบุไว้กับปริมาณงานจำนวนมาก) เป็นปัจจัยที่แตกต่าง
David Spillett

2
"ไม่กำหนดค่าการสลับยกเว้นว่าคุณจำเป็นต้องไฮเบอร์เนต" เป็นมุมมองที่ขัดแย้ง บางครั้งเมื่อระบบต่ำในการแลกเปลี่ยนหน่วยความจำจริงอาจทำให้ระบบกู้คืนได้ การไม่มีการสลับสามารถ จำกัด คุณจากการเรียกใช้โปรแกรมที่ทำให้การจัดสรรหน่วยความจำขนาดใหญ่ แต่ไม่ได้สัมผัสส่วนใหญ่ (เช่นเครื่องมือการดีบักบางอย่าง) บางครั้งพื้นที่หน่วยความจำที่ว่าง แต่ไม่ได้ใช้งานจะใช้เป็นแคชดิสก์ได้ดีกว่าและสิ่งนั้นสามารถทำการแลกเปลี่ยนได้ก็ต่อเมื่อมีการสลับใช้งาน ดูunix.stackexchange.com/questions/2658/…สำหรับการสนทนา
Anon

1
สิ่งที่ @Anon พูด Chrome เป็นหน่วยความจำฉาวโฉ่และแม้จะมี <100 แท็บแล็ปท็อป 16GB ของฉันไม่ตอบสนองเป็นเวลาหลายนาทีเมื่อการใช้หน่วยความจำประมาณ 90% และไม่มีไฟล์สลับ น่าแปลกที่Ubuntu ไม่มีกลไกในตัวที่จะเตือนผู้ใช้ว่าระบบปฏิบัติการไม่เพียงพอหน่วยความจำ
Dan Dascalescu

2

ความคิดในการทำงานของเราคือเนื่องจากไฟล์ Swap สามารถแยกส่วนและการกระจายตัวช้าการเข้าถึง swap พาร์ทิชันเป็นวิธีที่ดีกว่า แน่นอนว่าการกำหนด swapfile ที่มีขนาดคงที่นั้นทำสิ่งเดียวกันมาก

วิธีนี้เป็นวิธีจริงหรือไม่? อาจไม่เป็นเช่นนั้นเนื่องจากการฝึกฝนได้ก่อตั้งขึ้นใกล้กับ 10 ปีที่แล้ว การเปลี่ยนแปลงที่สำคัญเพียงอย่างเดียวของเทคโนโลยีไดรฟ์ในช่วงหลายปีที่ผ่านมาก็คือความซับซ้อนของตัวควบคุม RAID ที่เราใช้ (เรายังไม่เพียงพอสำหรับ SSD) การเพิ่มขนาดของไดรฟ์หมายความว่าพาร์ติชันสว็อปที่เราสร้างนั้นใกล้กับจุดเริ่มต้นของไดรฟ์มากกว่าเมื่อตอนที่ไดรฟ์ 18GB เป็นมาตรฐานการจัดส่งดังนั้นความเร็วในการสว็อปจึงเร็วกว่าสมัยก่อน

แน่นอนว่าในระบบ Windows ที่ใช้ ESX ตำแหน่งของไฟล์ swap นั้นจะสมบูรณ์ มีการทำเวอร์ชวลไลเซชันเลเยอร์มากมายระหว่างไฟล์ swap และแผ่นดิสก์ฟิสิคัลที่มันไม่สำคัญ แต่เราเก็บไว้ในพาร์ติชันแยกต่างหากเพราะนั่นเป็นเพียงมาตรฐาน


4
ไฟล์ swap ไม่ได้ถูกแยกส่วนในขณะที่เคอร์เนลใช้วิธี mmap โดยตรงและจะไม่ขยายหรือลดขนาดไฟล์ +1 แม้ว่าความคิดเห็นของคุณเกี่ยวกับการจำลองเสมือน: มักจะไม่สำคัญ
parasietje

0

การใช้ไฟล์สลับอาจใช้หน่วยความจำเพิ่มเติมเล็กน้อยสำหรับการแปลไฟล์เป็นหน่วยความจำ เรากำลังพูดถึงหน่วยความจำน้อยกว่า 1MB ต่อการแลกเปลี่ยน 1GB แคชของระบบไฟล์จะไม่แคชข้อมูลที่สับเปลี่ยนเพียงข้อมูลองค์กรซึ่งควรเป็นข้อกำหนดหน่วยความจำเพิ่มเติมส่วนใหญ่

นอกจากนั้นฉันสงสัยว่าคุณจะสูญเสียประสิทธิภาพการทำงานที่สมเหตุสมผลยกเว้นอาจจะครั้งเดียวใน 1000 ครั้งหัวเพิ่มเติมเดียว

ความจริงแล้วการใช้ zswap ร่วมกับการแลกเปลี่ยนไฟล์แบบขยายจะช่วยเพิ่มความเร็วในการปฏิบัติการแลกเปลี่ยนด้วยค่าใช้จ่ายที่น้อยมากในขณะที่ไม่ได้ใช้งาน


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