ทำไมฉันถึงปิดการใช้งานไฟล์ swap ใน Mac OS X


51

ฉันเจอปัญหาเกี่ยวกับการติดตั้งไดรฟ์ SSD ใน MacBook Pro
มีคนในความคิดเห็นแนะนำให้ปิดการใช้งานไฟล์สลับ แต่ไม่ได้บอกว่าทำไม:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*

ฉันสงสัยว่าเหตุใดจึงต้องการปิดการใช้งานไฟล์ swap ใน Mac OS X
มันเพิ่มประสิทธิภาพหรือไม่ ความมั่นคง?
ข้อเสียใด ๆ

ในที่สุด, มันสมเหตุสมผลไหมที่จะปิดการใช้งาน swap file เมื่อไม่ได้ใช้ SSD?


11
มันมักจะถูกปิดการใช้งานโดยผู้ที่มีความรู้น้อยเพราะพวกเขาได้ยินในบางบล็อกว่าประสิทธิภาพการทำงานพุ่งสูงขึ้น SSD ยังให้การทดสอบที่ดีเนื่องจากมีความรวดเร็ว อย่าทำอย่างนี้ มันจะลดความมั่นคงและเมื่อเวลาผ่านไปนำไปสู่ผลกระทบร้ายแรง ถึงวันนี้ฉันยังไม่เห็นข้อมูลจริงใด ๆ (ถูกต้องและเชื่อถือได้) แสดงถึงประสิทธิภาพที่เพิ่มขึ้น และเป็นองค์ประกอบที่สำคัญของระบบปฏิบัติการไม่ว่าคุณจะมี 2 GB หรือ RAM หรือ 120

2
ผลร้ายอะไร แค่อยากรู้อยากเห็น ... ดูเหมือนว่าจะทำให้เครื่องของฉัน (4GB MacBook Pro) เร็วขึ้น ตัวอย่างเช่นเมื่อฉันเปิดหน้าต่างเทอร์มินัลใหม่ไม่มีการบล็อกใด ๆ อีกต่อไป ... มันเป็นเรื่องทันทีที่มันใช้เวลาหลายวินาทีก่อนหน้านี้ และฉันสามารถเปิดแอพได้มากเป็นสองเท่าตามปกติฉันจะใช้และไม่มีอะไรเลวร้ายเกิดขึ้น
orange80

4
orange80: สาเหตุปกติของ windows terminal ช้าคือกระบวนการเข้าสู่ระบบค้นหาการเข้าสู่ระบบก่อนหน้าซึ่งสามารถแก้ไขได้โดย hushlogin: apple.stackexchange.com/a/54167/22570 - คุณรีบูตเครื่องหลังจากเปลี่ยนการตั้งค่า swap หรือไม่ ? ไม่มีเหตุผลใดที่ความเร็วของเทอร์มินัลหน้าต่างจะดีขึ้นโดยการลบ swap
เคน

ฉันเข้าใจว่าด้วย SSD ความจุขนาดเล็กคุณอาจต้องการพื้นที่ว่าง แต่ในด้านของประสิทธิภาพ SSD นั้นเร็วกว่า HD ดังนั้นฉันจึงไม่เห็นว่าการปิดใช้งานการสลับในระบบปฏิบัติการที่ใช้ SSD จะช่วยเพิ่มประสิทธิภาพได้อย่างไร มีประสบการณ์เกี่ยวกับเรื่องนี้ไหม? ขอบคุณ

1
ใน Super User พร้อมคำตอบที่ได้รับการยอมรับ: ปิดใช้งาน dynamic_pager ของ Mac หรือไม่ (2012-04-27)
Graham Perrin

คำตอบ:


39

สงสัยว่าทำไมคนหนึ่งต้องการปิดการใช้งานไฟล์ swap ใน Mac OS X มันเพิ่มประสิทธิภาพหรือไม่? ความมั่นคง? ข้อเสียใด ๆ

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

ในที่สุด, มันสมเหตุสมผลไหมที่จะปิดการใช้งาน swap file เมื่อไม่ได้ใช้ SSD?

ถ้าคุณมีจำนวนมากของแรมนี้อาจจะเร่งประสิทธิภาพ แต่มันไม่ได้เป็นความคิดที่ดีในทั่วไป หากคุณวิ่งขึ้นไปบนเพดานหน่วยความจำสิ่งต่าง ๆ จะไม่สม่ำเสมอ

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


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

2
@geotavros ระบบหน่วยความจำเสมือนใน Mac OS X ไม่ทำงานเช่นเดียวกับ Windows ด้วยหน่วยความจำ 4GB วางใจฉันได้ Mac ของคุณจะทำงานได้เร็วขึ้นเมื่อเปิดใช้งานหน่วยความจำเสมือน การปิดใช้งาน VM จะทำให้คุณปวดหัวและไม่มีเสถียรภาพของระบบเท่านั้น
goppe

3
FYI ซึ่งเป็น SSD ที่ทันสมัยพร้อมการปรับระดับการเขียนและความจุที่เหมาะสม (128 GB) ซึ่งเขียนขึ้นอย่างต่อเนื่องจะมีการวัดขีด จำกัด การเขียนในรอบหลายศตวรรษ นั่นเป็นความหวาดกลัวที่สมเหตุสมผลในปี 2000 กับ SSD ขนาดเล็ก แต่ไม่ได้มีอะไรมาก
เคน

3
สำหรับ MacBookPro5,2 ที่มีหน่วยความจำ 8 GB การปรับปรุงประสิทธิภาพนั้นน่าทึ่งมาก สำหรับ Snow Leopard หรือ Lion ใน VirtualBoxVM การปรับปรุงนั้นน่าประหลาดใจ ในทั้งสามกรณีระบบปฏิบัติการจะปรากฏขึ้นเพื่อใช้หน่วยความจำในลักษณะที่ช่วยลดความเสี่ยงในการเข้าถึง 'ขีด จำกัด ' (ซึ่งทุกสิ่งหยุดอย่างมีประสิทธิภาพ) แต่ความเสี่ยงนั้นยังคงอยู่ดังนั้นจึงควรสังเกตการใช้งานในการตรวจสอบกิจกรรม
เกรแฮมเพอร์ริน

2
สำหรับข้อมูล VM (หรือหน่วยความจำเสมือน) ไม่ควรสับสนกับไฟล์ swap Windows, OS X, * BSD, Linux, Unix จำนวนมากล้วนแล้วแต่ใช้หน่วยความจำเสมือน โดยปกติแล้ว archiecture ของระบบปฏิบัติการนี้จะให้ VM ต่อกระบวนการกระบวนการจัดสรรหน่วยความจำภายในพื้นที่นี้และระบบปฏิบัติการจะดูแลหน่วยความจำที่จัดสรรนี้บน RAM จริงหรือแลกเปลี่ยนตามที่ OS เห็นว่าเป็นเช่นนั้น การมีหรือไม่มีการแลกเปลี่ยนสามารถเปลี่ยนแปลงในทางเดียวหรือการแสดงอื่น ๆ สำหรับเกณฑ์ต่างๆ (ความเร็วการตอบสนอง ฯลฯ ) สิ่งนี้จะขึ้นอยู่กับปริมาณงานของเราแต่ละคน อย่างที่คนอังกฤษพูดว่า และอย่างมากในกรณีนี้
Huygens

27

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

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

หลังที่ฉันเจอ (เมื่อเปิดใช้ไฟล์ swap) เมื่อเนื้อที่ดิสก์หมด ฉันมีไดรฟ์ 120 กิกะไบต์ที่มี ~ 3 กิ๊กฟรี ในขณะที่เล่น Civilization IV (เกมเต็มหน้าจอขนาดใหญ่) ระบบหมดพื้นที่ฮาร์ดไดรฟ์ (ฟรีประมาณ 50 megs) และแสดงหน้าต่าง "kill apps now" นี่ซ่อนอยู่หลังเกมเต็มหน้าจอดังนั้นระบบจึงล็อคไว้ หากฉันไม่สามารถ ssh จาก Mac เครื่องอื่นเพื่อฆ่าแอปหลายตัวจากระยะไกลฉันต้องกดปุ่มเปิด / ปิดค้างไว้


6
ฉันต้องการที่จะสะท้อนความคิดที่ไม่ดีนี้ สลับจะใช้แม้ว่าคุณมี RAM 16 GB ไม่มากนัก แต่มีการเขียนเพียงเล็กน้อยในการสลับ เสมอ. มันเป็นการป้องกัน และในขณะที่ระบบปฏิบัติการอาจทำงานได้โดยที่ไม่มีคุณไม่สามารถมั่นใจได้ว่าแอพของบุคคลที่สามทำงานอย่างไร HD เขียนถึง มันเป็นความจริงถ้าชีวิต และไม่จะไม่มีการเพิ่มประสิทธิภาพ "โลกแห่งความเป็นจริง" นั่นเป็นยาหลอก

4
@cksum ในบางสถานการณ์เซิร์ฟเวอร์ sysadmins จะปิดการใช้งานไฟล์ swap เนื่องจากทำให้การกำหนดค่าเฉพาะนั้นเร็วขึ้น แต่พวกเขาไม่ทำเช่นนั้นหากไม่มีการทดสอบเพื่อให้แน่ใจว่าทั้งสอง (a) จะไม่มีหน่วยความจำหมดและ (b ) จริงเร็วกว่า แต่นั่นเป็นเซิร์ฟเวอร์ที่ดำเนินการโดยผู้เชี่ยวชาญ: ไม่จำเป็นต้องใช้กับเครื่องอุปโภคบริโภค
CajunLuke

@cksum ฉันเห็นด้วยกับประโยคแรกของคุณคุณถูกต้องกับประโยคที่สองที่สามและสี่ แต่ที่เหลือก็เป็นขยะ ระบบปฏิบัติการไม่แลกเปลี่ยนเพื่อ "ปกป้อง" ระบบปฏิบัติการกำลังแลกเปลี่ยนเพื่อให้มีหน่วยความจำที่พร้อมใช้งานมากขึ้นสำหรับกระบวนการที่ต้องใช้งานหรือต้องการเพิ่มความเร็ว I / O โดยการบัฟเฟอร์ข้อมูลดังนั้นหน่วยความจำที่ไม่ได้ใช้งานนานสามารถเป็นอิสระใน RAM เมื่อคุณพัฒนาแอปพลิเคชันคุณขอหน่วยความจำระบบปฏิบัติการหน่วยความจำนี้เป็นส่วนหนึ่งของการใช้หน่วยความจำเสมือนของคุณในฐานะนักพัฒนาหรือแอปพลิเคชันที่คุณไม่ทราบว่าระบบปฏิบัติการนั้นใช้หน่วยความจำนั้นหรือส่วนใดส่วนหนึ่ง (จะดำเนินการต่อ)
Huygens

ดังนั้นหากแอพบุคคลที่สามร้องขอหน่วยความจำมากกว่าที่มีอยู่ระบบปฏิบัติการจะให้ข้อผิดพลาด สิ่งนี้เป็นอิสระจากการสลับหรือไม่ การมีการสลับจะทำให้ขีด จำกัด สูงกว่านั่นก็คือ สำหรับประสิทธิภาพหากคุณมีผู้ใช้ 2 คนเข้าสู่ระบบหากผู้ใช้ที่ใช้งานอยู่ใช้โปรแกรมตัดต่อวิดีโอที่มีไฟล์ขนาดใหญ่ระบบปฏิบัติการอาจเริ่มวางหน้าหน่วยความจำของผู้ใช้ที่ไม่ได้ใช้งานในการแลกเปลี่ยนเพื่อเพิ่มความเร็ว คุณจะได้ประสิทธิภาพที่ดีขึ้นในแง่ของความเร็วในกรณีนี้ อย่างไรก็ตามการสลับไปใช้ผู้ใช้รายอื่นจะช้าลงระบบปฏิบัติการจะต้องอ่านการสลับกลับ นี่ไม่ใช่ยาหลอก!
Huygens

1
ฉันเคย (ใน linux) ลืมที่จะตั้งค่าพาร์ทิชัน swap เมื่อตั้งค่า เมื่อฉันถูกแขวนฉันคิดว่ามันเป็นข้อผิดพลาดเคอร์เนล - เปิดออกมันคือการขาดหน่วยความจำ swap ในขณะที่เล่น mincecraft ใช้ swap
Wyatt8740

12

คุณมีคำตอบที่ดีสองข้อที่อธิบายว่าทำไมนี่เป็นความคิดที่ไม่ดีในเกือบทุกกรณีที่ระบบสามารถเขียนลงในอุปกรณ์เก็บข้อมูล

เหตุผลที่คุณสามารถปิดการใช้งาน swap ได้คือทำให้ระบบสามารถทำงานบนสื่อแบบอ่านอย่างเดียวเช่น CD, DVD, ภาพเครือข่ายที่ถูกล็อคโดยใช้ NetBoot หรือ USB fob แบบอ่านอย่างเดียวเช่น Lion installer ใหม่หรือโปรแกรมกู้คืน fob ที่มาพร้อมกับ mac ไดรฟ์

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

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

หากคุณมีข้อมูลสำรองและเวลาในการทดสอบทำไมไม่ปิดและดูว่าประสบการณ์ของคุณเปลี่ยนแปลงอย่างไร

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

กรณีของคุณกับ SSD อาจแตกต่างกันดังนั้นโปรดแจ้งให้เราทราบหากคุณลองใช้


2
ฉันคิดว่าตรงข้ามเป็นอย่างมาก speedup เมื่อdynamic_pagerเป็นผู้พิการ ภาพหน้าจอปัจจุบันที่apple.stackexchange.com/a/60661/8546แสดงขนาดหน่วยความจำเสมือนและการวัดหน้าเพจในขณะที่ daemon นั้นถูกปิดใช้งาน (ในขณะที่ไม่ได้ใช้ไฟล์สลับ)
เกรแฮมเพอร์ริน

มีการวัดอะไรเพื่อพิจารณาการเร่งความเร็ว (หรือคุณเห็นว่าไม่มีความล่าช้าหรือล่าช้าใน UI หรืออย่างอื่นที่ไม่สามารถวัดหรือวัดได้อย่างง่ายดาย)
bmike

โดยไม่ต้องวัดด้วยสิงโตสิ่งที่มากที่สุดดูเหมือนจะเห็นได้ชัดเร็วขึ้น - พอที่ผมจะใช้คำว่าใหญ่ เพิ่มเติมเมื่อเร็ว ๆ นี้: 10.8 ใน VirtualBoxVM ตัวอย่างเช่นเพื่อเข้าสู่ระบบและดำเนินการตรวจสอบกิจกรรมต่อไปใช้เวลาสิบหกวินาทีโดยที่dynamic_pagerสิบสองวินาทีไม่มี สำหรับการเปรียบเทียบที่กว้างขึ้นและที่วัดมากขึ้นเราอาจจะใช้ชุดทดสอบ PhoronixหรือGeekbench
เกรแฮมเพอร์ริน

9

ฉันจะเป็นผู้บรรยายที่นี่: ฉันปิดใช้งานการสลับใน unibody macbook pro ปลายปี 2008 ของฉันและมันปรับปรุงประสิทธิภาพการทำงานที่โดดเด่น: การรอน้อยกว่าการสลับระหว่างแอปพลิเคชันน้อยลง

โปรดทราบว่าฉันจับตาดูหน่วยความจำว่างและติดตั้ง 6GB แล้ว ไม่กี่ครั้งที่ฉันถึงขีด จำกัด ของหน่วยความจำระบบล่ม :-D

สำหรับ MacBook Air ใหม่ของฉันฉันไม่เคยฝันที่จะปิดการใช้งาน swap มันรวดเร็วแล้วเมื่อเปิดใช้งานและมีเพียง 4GB เท่านั้นที่เริ่มต้น

อีกเหตุผลที่ดีที่ผู้คนปิดการใช้งาน swap บน SSD ก็เพราะพวกเขามี SSD เล็ก ๆ และต้องการพื้นที่ทั้งหมดที่พวกเขาจะได้รับ ไม่ว่าในกรณีใด ๆ


ยอดเยี่ยมมากที่จะได้สัมผัสกับประสบการณ์การทำงานที่แท้จริง ข้อผูกมัด RAM บนเครื่องเมื่อการสลับถูกปิดใช้งานคืออะไร เกิดอะไรขึ้นเมื่อคุณเปิดแอปมากกว่าที่จะพอดีกับ RAM คุณมี RAM เท่าไรและแอพใดที่ทำงานในพื้นที่นั้นได้อย่างสะดวกสบายโดยไม่มีข้อผิดพลาด?
bmike

1
@bike ไม่แน่ใจว่าระบบล่ม :-D, 6GB และทุกอย่างที่ฉันใช้ :) รูรับแสงหรือ XCode เป็นหน่วยความจำที่แท้จริงและบางครั้งพวกเขาก็สามารถข้ามผ่านระบบได้ แต่ Skype, Mail, Adium, Safari, Chrome, iTunes และ OmniFocus นั้นเหมาะสมอย่างยิ่ง ...
w00t

6

ประสบการณ์ของฉันคล้ายกับของ w00t ฉันได้ปิดการใช้งานไฟล์ swap ใน SL และ Lion เพราะการเพิ่มประสิทธิภาพนั้นใช้ได้สำหรับฉัน การใช้สายจะไม่ได้รับการควบคุมหลังจากผ่านไปหนึ่งสัปดาห์หรือมากกว่านั้น ฉันไม่มี SSD แต่เป็นดิสก์ 5400 rpm ที่ช้า อายุการใช้งานของ SSD นั้นไม่ได้เลวร้ายอย่างที่ผู้คนพยายามทำให้เป็นจริง หากคุณทำเช่นนี้เพราะคุณกลัวว่า SSD ของคุณจะชำรุดโปรดดูที่: http://www.anandtech.com/show/4159/ocz-vertex-3-pro-preview-the-first-sf2500- ssd / 2 และhttp://communities.intel.com/thread/21717?tstart=0 Intel ให้คะแนนไดรฟ์มากกว่า 20GB ต่อวันทุกวันนานสูงสุด 5 ปีสำหรับไดรฟ์ 80GB ไดรฟ์ที่ใหญ่ขึ้นจะมีอายุการใช้งานที่ยาวนานกว่า ผู้ใช้โดยเฉลี่ยไม่ได้ใช้แม้แต่ 10GB ต่อวัน

ฉันตรวจสอบการใช้หน่วยความจำ 4GB ด้วย iStat Menus และใช้สคริปต์ Automator ด้วยคำสั่ง bash "purge" (ต้องติดตั้ง Xcode) เพื่อล้างหน่วยความจำที่ไม่ได้ใช้งานและเปิดหน่วยความจำว่างมากขึ้นบ่อยครั้ง ไม่กี่ครั้งที่ฉันมีแอพที่มีการรั่วไหลของหน่วยความจำหมด RAM ทั้งหมดฉันต้องทำการฮาร์ดรีเซ็ต โอกาสที่เกิดขึ้นได้ยากและความเร็วโดยทั่วไปทำให้มันคุ้มค่าที่จะปิดการใช้งานไฟล์ swap สำหรับฉัน ฉันรู้ว่าฉันไม่สามารถเปิดแอพได้มากในครั้งเดียวเพราะสิ่งนี้ตามที่ระบุโดยคนอื่น แต่ฉันสามารถทำงานกับมันได้


ขอบเขตหน่วยความจำมีตัวเลือกในการล้างโดยอัตโนมัติ (หากเปิดใช้งาน dynamic_pager ฉันไม่อนุญาตให้ลบข้อมูล)
เกรแฮมเพอร์ริน

5

เพียงแค่โยนใน 2 เซ็นต์ของฉันสำหรับผู้ที่ต้องการปิดการใช้งานการแลกเปลี่ยนเพราะของ SSD ขนาดเล็ก: sleepimage ใช้พื้นที่ดิสก์มากขึ้น

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

วิธีแก้ปัญหาในแต่ละกรณีคือการปิดใช้งานการไฮเบอร์เนตและลบไฟล์ sleepimage ที่มีขนาดใหญ่เท่ากับ RAM ที่ติดตั้ง (8GB ในเคสของฉัน)

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

หากต้องการปิดใช้งานการไฮเบอร์เนตในเทอร์มินัลคำสั่งจะเป็นดังนี้:

 sudo pmset -a hibernatemode 0

หากต้องการเปิดใช้งานการไฮเบอร์เนตคำสั่งจะเป็นดังนี้:

 sudo pmset -a hibernatemode 3

หากต้องการลบ sleepimage ล่าสุดเพื่อเพิ่มพื้นที่ว่าง SSD / HDD (ให้ความรู้สึกเฉพาะเมื่อคุณปิดการไฮเบอร์เนตมิฉะนั้นเครื่องใหม่จะใช้พื้นที่นั้นในครั้งต่อไปที่คอมไพล์ของคุณหลับ)

 sudo rm -rf /var/vm/sleepimage

ที่มา: ผู้ชาย pmset


3

การปิดใช้งานการสลับจะเพิ่มประสิทธิภาพ ตัวอย่างเช่นฉันใช้ Aperture เป็นประจำและเมื่อ swap เพิ่มขึ้นประสิทธิภาพแย่ลงและเมื่อมันเกิน 1Gb ฉันต้องรีสตาร์ทระบบปฏิบัติการเพื่อทำความสะอาดและคืนค่าประสิทธิภาพ หมายเหตุ: เครื่องมี RAM ขนาด 6GB และไม่ได้ใช้งานทั้งหมดมีประมาณ 3GB ฟรี แต่ 1G จะมีประสิทธิภาพการทำงานที่ลดลงอย่างมาก


3

ฉันได้ปิดการใช้งาน swap บนเครื่องหลายปีทั้งใน OS X และรุ่นอื่น ๆ ของ UNIX

ฉันใช้เครื่องมือเพื่อแจ้งเตือนฉันเมื่อหน่วยความจำใกล้หมดและไม่ต้องกังวลกับระบบล่ม

iMac ของฉันมีขนาด 12GB และเมื่อปิดการใช้งานการสลับฉันมักจะมี 4GB ฟรีแม้จะมีเครื่องมือในการพัฒนาแอพเบราว์เซอร์และอื่น ๆ ที่เปิดอยู่


5
คุณใช้เครื่องมือหน่วยความจำอะไร
Dmitriy

1

รูปแบบการทำซ้ำที่นี่คือ:

ผู้ที่ปิดใช้งานการแลกเปลี่ยนไฟล์จะได้รับการปรับปรุงประสิทธิภาพ (มี RAM จริงเพียงพอ)

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

นี่เป็นเพราะสองสิ่ง:

  1. แนวคิดที่ล้าสมัยเกี่ยวกับความขาดแคลนและแรมทางกายภาพที่สูงซึ่งไม่สามารถใช้งานได้อีก
  2. กลไกการสลับที่ไม่ดีใน MacOS ทำให้เกิดการใช้ไฟล์ swap เมื่อมี RAM จริงเพียงพอ

1
หากใช้พื้นที่สว็อปเฉพาะเมื่อจำเป็นเท่านั้นมันจะดีมาก อย่างไรก็ตามนั่นไม่ใช่กรณี ฉันเรียกใช้เครื่องเสมือน 2gb และ 4gb บน MacOS ของฉัน ถ้าฉันมี RAM ว่าง 1.6GB ฉันควรจะสามารถเรียกใช้เครื่องเสมือน 1GB (หรือโปรแกรมอื่น ๆ ) แต่ฉันทำไม่ได้เพราะระบบปฏิบัติการเริ่มทำการเพจจิ้ง ดังนั้นฉันสามารถใช้ RAM ของฉันได้ประมาณ 85-90% เท่านั้น หากฉันต้องการใช้ RAM ทั้งหมดของฉันฉันต้องปิดใช้งานการเพจ ฉันทำสิ่งนี้บนเครื่อง Windows ทั้งหมดของฉันและต้องการทำเช่นเดียวกันใน MacOS ของฉัน หากโปรแกรมไม่มี RAM ก็จะล้มเหลว นั่นคือสิ่งที่ฉันต้องการจะเกิดขึ้น ฉันไม่ต้องการแอปพลิเคชันอื่นที่ทำงานอยู่

3
YMMV ฉันไม่ปิดการใช้งาน swap อีกต่อไปเพราะฉันไม่พบมันเพื่อช่วยในการทำงานกับเครื่องที่โหลด RAM ทันสมัย ก่อนหน้านี้ฉันเคยเป็นมันช่วยในวันเก่าที่ไม่ดี ทุกวันนี้ไม่เพียง แต่ฉันจะไม่เห็นการเปลี่ยนแปลงประสิทธิภาพโดยการปิดใช้งานการสลับฉันจะเห็นความไม่แน่นอนของแอปพลิเคชันที่เพิ่มขึ้นอย่างมาก
Brian Knoblauch

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

1

เป็นเพียงประสบการณ์ส่วนตัว

Memory Amount    |
 4 GB            | Don't disable it, Mountain Lion itself boots with about 1 GB.
 8 GB            | Do if you don't run apps that requires more than 1 GB of memory, in short, virtualization software, Photoshop, and stuff.
16 GB or more    | Do it! Even Xcode or Final Cut won't use more than 4 GB of memory, at least as I've seen. Just don't run too many virtual machines though.

หมายเหตุอย่างรวดเร็ว: หาก Mac ของคุณใช้กราฟิกรวมหน่วยความจำจะถูกแชร์กับหน่วยความจำหลักของคุณด้วย kernel_task ดังนั้นคุณจะต้องลบจำนวนนั้นออกจากยอดรวมที่ใช้งานได้

ผู้ใช้ SSD นั้นมีความพึงพอใจที่จะมีพื้นที่เพิ่มขึ้น แต่สิ่งสำคัญคือต้องรู้ว่าหน่วยความจำเสมือนเจริญรุ่งเรืองบน SSD คุณสามารถได้รับประสิทธิภาพมากมายทั้งนั้น มันทำให้ SSD เสียหายหรือไม่? ใช่ แต่คุณจะแทนที่ Mac ของคุณเป็นเวลานานก่อนที่คุณจะสังเกตเห็น


1
ฉันปิดการใช้งานหน่วยความจำส่วนตัวเป็นการส่วนตัวใน Retina MacBook Pro ที่มีหน่วยความจำเพียง 8 GB นี่คือคณิตศาสตร์ระบบใช้หน่วยความจำกราฟิกแบบบูรณาการประมาณ 2 GB นั่นคือ 6 GB สำหรับฉัน ฉันใช้ Xcode ในการทำงานซึ่งใช้หน่วยความจำไม่เกิน 2 GB ดังนั้นฉันมีมากมายเหลือเฟือ
Shane Hsu

1

บทสรุปผู้บริหาร

พื้นที่สว็อป (เรียกว่าพาร์ติชันสลับ, ไฟล์สว็อปหรือไฟล์หน้า) เป็นเพียงกลไกในการเพิ่มหน่วยความจำฟิสิคัลที่แอดเดรสของระบบปฏิบัติการ

หากคุณมี RAM จริงในระดับต่ำและในเครื่องปัจจุบันฉันจะบอกว่าถ้าคุณมี RAM 4 GB หรือน้อยกว่า จากนั้นคุณควรจะมีการแลกเปลี่ยน แต่สิ่งนี้ขึ้นอยู่กับปริมาณงานของคุณและวิธีการใช้เครื่องของคุณ

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

ข้อมูลพื้นฐาน

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

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

ฉันมี personnaly 2 เครื่องพร้อม RAM 8 และ 16 GB การใช้งานเครื่องส่วนตัวของฉันไม่ควรทำให้ฉันใช้ RAM นี้จนหมด (วันนี้! บางทีในอีกไม่กี่ปีข้างหน้าจะแตกต่างกัน เหตุผลเดียวที่ฉันจะตีขีด จำกัด ทางกายภาพของแรมคือกระบวนการได้รับการโกงและใช้ RAM ทั้งหมด การไม่มีการสลับเป็นการผ่อนปรนเคอร์เนลจะฆ่ากระบวนการโกงทันทีที่มันถึงขีด จำกัด RAM หากคุณมีการสลับคุณจะได้รับประสบการณ์ที่เจ็บปวด (อาจไม่ได้อยู่ใน SSD ... ) เนื่องจากระบบของคุณจะสลับและสลับและสลับและบางครั้งก็ไม่ตอบสนองโดยสิ้นเชิงจนกระทั่งหวังว่าเคอร์เนลของคุณจะฆ่าผู้กระทำผิด!

ให้คำแนะนำ

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

หากคิดว่าเวิร์กโหลดของเขาอาจทำให้เขาใช้งานอย่างใกล้ชิดหรือมากกว่า RAM จริงที่มีอยู่หรือถ้าต้องการ I / O จำนวนมาก (อ่าน / เขียนไปยังดิสก์) ควรเก็บ swap ไว้

เมื่อควรเก็บสลับไว้ผู้ใช้ควรพยายาม จำกัด จำนวนหน่วยความจำที่กระบวนการสามารถใช้ บนระบบลีนุกซ์เราสามารถใช้ขีด จำกัด หน่วยความจำของ cgroups เพื่อหลีกเลี่ยงกระบวนการบางอย่างที่ไม่สามารถควบคุมได้ฉันไม่ทราบว่าเทียบเท่ากับ OS X แต่ควรเป็นวิธี

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

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

ตัวอย่างของฉันเอง

ฉันมีพีซีเก่าที่มี RAM ขนาด 1 GB ที่นั่นฉันมี swap ขนาดใหญ่: 4 GB ดังนั้นฉันจึงสามารถเรียกใช้ Firefox และแอปพลิเคชันอื่น ๆ ฉันมักจะใช้เป็นแอปพลิเคชั่นเล็ก ๆ น้อย ๆ (หรือแท็บใน Firefox) ให้มากที่สุดเพื่อให้ได้รับประสบการณ์การใช้งานที่ถูกต้อง

ฉันมีเซิร์ฟเวอร์ขนาดเล็กที่มี RAM 8 GB ที่นั่นฉันรู้ว่าภาระงานของฉันแน่นอนและฉันไม่ต้องการให้เซิร์ฟเวอร์ของฉันทำงานช้าลงเนื่องจากกระบวนการมีการโกงและใช้หน่วยความจำทั้งหมด ที่นั่นฉันไม่มีหน่วยความจำ swap และ cgroup จำกัด การบังคับใช้สิ่งกีดขวางดังนั้นแอปพลิเคชันหรือบริการอาจมีปัญหา แต่ไม่ใช่เคอร์เนล Btw นี่เป็นเครื่องลีนุกซ์

จากนั้นฉันมี Mac ที่มี RAM 16 GB ฉันไม่ใช่ผู้ใช้คนเดียว แต่อย่างใดและเราจะไม่รังเกียจที่จะรอเมื่อเปลี่ยนผู้ใช้ ที่นั่นเรามี swap มันเป็นเรื่องยากสำหรับฉันที่จะวางแผนภาระงานของผู้ใช้รายอื่นของคอมพิวเตอร์เครื่องนี้ แม้ว่าฉันจะเป็นคนเดียวที่ฉันจะใช้ swap ฉันมักจะเรียกใช้ VM หลายครั้งและใช้แอปพลิเคชันที่ใช้หน่วยความจำมาก แต่ไม่ใช่ทั้งหมดในเวลาเดียวกันดังนั้นฉันจะไม่คำนึงถึงระบบปฏิบัติการ SWaping ในแอพที่ไม่ได้ใช้ดังนั้นฉันจึงสามารถใช้ดิสก์ I / O เร็วขึ้น ถึงตอนนี้ฉันไม่ได้เห็นการแลกเปลี่ยนเครื่องนี้!


0

ฉันเพิ่งปิดการใช้งานไฟล์สวอปในเครื่อง Macbook 2011 ของฉัน (4GB RAM, 128GB SSD) เพราะฉันป่วยเพราะไฟล์ swap นั้นกินพื้นที่ HD ที่เหลืออยู่ทั้งหมดอย่างช้าๆจากนั้นจึงต้องรีสตาร์ท ด้วยวิธีนี้ความคิดคือฉันจะเรียกใช้โปรแกรมน้อยลง

ฉันจะดูว่ามันใช้งานได้จริงหรือถ้าฉันจะต้องรีสตาร์ทต่อไปเพื่อล้างหน่วยความจำ "สาย" แต่ตอนนี้ดูเหมือนว่าจะทำงานได้ดี ครั้งเดียวที่หน่วยความจำเต็มจริงๆคอมพิวเตอร์จะชะลอตัวลงเท่าที่มันทำเมื่อ SSD ของฉันไม่มีหน่วยความจำ - แต่มันจะกู้คืนได้เร็วขึ้นมากทันทีที่ฉันออกจากแอปพลิเคชัน (และฉันก็สามารถออกจากแอปพลิเคชั่นได้ซึ่งโดยปกติแล้วฉันจะไม่ใช่เมื่อ SSD เต็มไปด้วย)

ฉันจะดูว่ามันมีเสถียรภาพอย่างไร แต่จนถึงตอนนี้ฉันเป็นผู้พักแรมที่มีความสุข นอกจากนี้ยังบังคับให้ฉันเรียกใช้แอปพลิเคชั่นน้อยลง (และแท็บ Chrome) ในแต่ละครั้งซึ่งเหมาะสำหรับการมุ่งเน้นงาน


0

เหตุผลหลักในการปิดใช้งาน swapfile นั้นไม่ใช่เรื่องความเร็ว - เป็นพื้นที่ดิสก์

หากใครเป็นผู้ใช้ที่ทำงานเป็นประจำภายใน 5 GB ของไดรฟ์เต็มการปิดการใช้งาน swap จะหยุดการจู้จี้คงที่ของพื้นที่ว่าง ฉันจบด้วย swapfile 4+ GB เป็นประจำจากการเรียกดูเป็นประจำ

การปรับปรุงความเร็วนั้นน่าประหลาดใจสำหรับเครื่องจักรรุ่นเก่า มันไม่ได้เป็นที่น่าประทับใจในเครื่องที่ทันสมัยพร้อม SSD (ภายใต้ OSX 10.0 บน iMac การใช้หน่วยความจำเสมือนจะลดความเร็วของการดำเนินการหลายอย่างรวมถึงการคัดลอกไฟล์ระหว่างไดรฟ์)


ฟังดูเหมือนว่าจะทำให้แตรคงที่เพราะเบรคไม่ทำงาน หากไดรฟ์เต็มเกินไปให้นำข้อมูลบางส่วนออก
Tetsujin

@Tetsujin ไฟล์เดียวที่ใหญ่ที่สุดในไดรฟ์นั้นเป็น swapfile
aramis

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