วิธีการปิดการใช้งาน Mac OS X จากการใช้ swap เมื่อยังมีหน่วยความจำ“ Inactive” อยู่?


61

ปรากฏการณ์ที่พบบ่อยในการใช้งานแบบวันต่อวัน (และอีกหลายรายการอ้างอิงจากการโพสต์ต่าง ๆ ทางอินเทอร์เน็ต) ของ OS X ดูเหมือนว่าระบบจะช้าเมื่อใดก็ตามที่ไม่มีหน่วยความจำ "ว่าง" เพิ่มอีก สมมุติว่านี่เป็นเพราะการแลกเปลี่ยนเนื่องจากกิจกรรมบนดิสก์มีความชัดเจนและ vm_stat รายงานจำนวนหน้าเว็บหลายหน้า (แก้ไขให้ฉันผิด)

อย่างไรก็ตามจำนวนของ ram "Inactive" ram มักจะอยู่ที่ประมาณ 12.5% ​​-25% ของหน่วยความจำที่มีอยู่ทั้งหมด (^ 1) เมื่อทำการสลับเริ่ม / เกิด / สิ้นสุด

อ้างอิงจากhttp://support.apple.com/kb/ht1342 :

หน่วยความจำที่ไม่ได้ใช้งาน

ข้อมูลนี้ในหน่วยความจำไม่ได้ถูกใช้อย่างแข็งขัน แต่เพิ่งถูกนำมาใช้

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

และเป็นไปตามhttp://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html :

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

ดังนั้นโดยทั่วไป: เมื่อโปรแกรมหยุดทำงานหน่วยความจำจะถูกทำเครื่องหมายเป็นไม่ใช้งานและควรสามารถเรียกร้องได้ตลอดเวลา ถึงกระนั้น OS X จะเริ่มเปลี่ยนหน่วยความจำไปยังไฟล์ Swap แทนการอ้างสิทธิ์หน่วยความจำนี้เมื่อใดก็ตามที่หน่วยความจำ "ฟรี" เหลือน้อย

ทำไม? อะไรคือข้อดีของพฤติกรรมนี้มากกว่าการพูดปล่อยหน่วยความจำที่ไม่ได้ใช้งานทันทีและไม่แม้แต่แตะที่ไฟล์ swap? บางแหล่งที่มา (^ 2.) ระบุว่า OS X จะเลื่อนหน้าหน่วยความจำ "ไม่ใช้งาน" เพื่อสลับก่อนปล่อย แต่ตอนนี้ก็ไม่สมเหตุสมผลถ้าหน่วยความจำอาจถูกปล่อยออกจากหน่วยความจำได้ตลอดเวลา ? การแลกเปลี่ยนมีราคาแพงการปล่อยราคาถูกใช่มั้ย

พฤติกรรมนี้สามารถเปลี่ยนแปลงได้โดยใช้การตั้งค่าบางอย่างหรือแฮ็คที่รู้จัก (ควรเป็นอย่างยิ่งที่ไม่มีการปิดใช้งาน swap / dynamic_pager ทั้งหมดและเริ่มต้นใหม่ ... )

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

Btw คำถามที่คล้ายกันถูกถามที่นี่: http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/และที่นี่: http: //hintsforums.macworld .com / showthread.php? t = 87688แต่ถึงแม้ว่าOPsจะถามคำถามหลักอีกครั้ง แต่ไม่มีคำตอบใดที่ตอบคำตอบ ...

^ 1 อัปเดต 17 มีนาคม 2555ตั้งแต่ฉันโพสต์คำถามนี้ครั้งแรกฉันได้เพิ่ม RAM จาก 4GB ไปเป็น 8gb ของ RAM ที่ติดตั้งและปัญหายังคงอยู่ จำนวนของ "Inactive" ram คือ 0.5gb-1.0gb มาก่อนและตอนนี้โดยทั่วไปประมาณ 1.0-2.0GB เมื่อการสลับเปลี่ยนเริ่ม / เกิดขึ้น / สิ้นสุดนั่นคือดูเหมือนว่ารอบ ๆ 12.5% ​​-25% ของ ram จะถูกเก็บไว้เป็น Inactive โดย osx ตรรกะของเคอร์เนล

^ 2 ตัวอย่างเช่นhttps://apple.stackexchange.com/questions/4288/what-does-it-mean-if-i-have-lots-of-inactive-memory-at-the-end-of-a-work-theme วัน :

เมื่อหน่วยความจำทั้งหมดของคุณถูกใช้ (หน่วยความจำที่ว่างคือ 0) ระบบปฏิบัติการจะเขียนหน่วยความจำที่ไม่ได้ใช้งานไปยัง swapfile เพื่อเพิ่มพื้นที่ในหน่วยความจำที่ใช้งาน

อัพเดท 17 มีนาคม 2555

ต่อไปนี้เป็นวิธีการสรุปที่ได้รับการแนะนำให้ช่วย:

ล้างคำสั่ง

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

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

แอป FreeMemoryและ / หรือซ่อมสิทธิ์ดิสก์ที่จะบังคับให้หน่วยความจำฟรีบางส่วน

ไม่ช่วยในการปล่อยหน่วยความจำใด ๆ เพียงการย้ายเนื้อหาหน่วยความจำกิกะไบต์บางส่วนจาก ram ไปยัง hd ในท้ายที่สุดสิ่งนี้ทำให้เกิดการสลับจำนวนมากเมื่อฉันพยายามใช้แอปพลิเคชันที่เปิดในขณะที่เพิ่มหน่วยความจำเนื่องจาก vm จำนวนมากของมันกำลังทำการสลับ

เร่งความเร็วการจัดสรร Swap โดยใช้dynamicpagerwrapper

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

ปิดใช้งานการสลับโดยปิดการใช้งานdynamicpagerและเริ่มต้นใหม่

วิธีนี้จะบังคับให้ osx ไม่ใช้ swap กับราคาของระบบค้างเมื่อใช้หน่วยความจำทั้งหมด ไม่ใช่ทางเลือกที่ทำงานได้ ...

ปิดใช้งานการสลับโดยใช้Dynamicpager ที่ถูกแฮ็ก

คล้ายกับการปิดใช้งาน dynamicpager ด้านบนข้อความที่ตัดตอนมาบางส่วนจากความคิดเห็นไปยังโพสต์บล็อกระบุว่านี่ไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้: "หน่วยความจำไม่ได้ใช้งานสูงเท่าปกติ" "เมื่อระบบของคุณมีหน่วยความจำไม่เพียงพอ OS ทั้งหมดจะหยุดทำงาน ... ", "หากคุณใช้หน่วยความจำทั้งหมดในเครื่อง mac เครื่องอาจจะค้าง"

สรุปแล้วฉันยังไม่รู้วิธีปิดการใช้งาน Mac OS X จากการใช้ swap เมื่อยังมีหน่วยความจำ "Inactive" ถ้ามันเป็นไปไม่ได้อย่างน้อยก็อาจมีคำอธิบายว่าทำไม OSX ถึงชอบเปลี่ยนหน่วยความจำที่สามารถปล่อยจากหน่วยความจำได้ตลอดเวลา ?


1
ฉันมีปัญหานี้แสดงโดยหมายเลขกิจกรรมการตรวจสอบเหล่านี้: bassistance.de/i/f2322d.png แทบจะไม่มีหน่วยความจำใด ๆ เลย แต่มีหน่วยความจำที่ไม่ได้ใช้งานมากมาย แทนที่จะเรียกคืนสิทธิ์ดังกล่าว OSX ต้องการเริ่มต้นการแลกเปลี่ยนอย่างหนักเนื่องจากคุณสามารถดูได้จากหน้า 40 GB
Jörn Zaefferer

ฉันมีหน่วยความจำฟรีมากมายและยังคงมีการสลับหลาย GB 16GB rMBP
Steven Lu

1
เห็นได้ชัดว่าบางคนได้รายงานผลประโยชน์จากการเรียกใช้ "purge" apple.stackexchange.com/questions/67031/…ไม่ใช่ค่าลบ
rogerdpack

คำตอบ:


19

ตามคำนิยามหน่วยความจำที่ไม่ได้ใช้งานคือหน่วยความจำที่พร้อมที่จะเอาเพจเอาต์ออกและการเพจออกอาจเกี่ยวข้องกับการเขียนเพื่อสลับ นี่ไม่ใช่ปัญหาหรือปัญหาใด ๆที่ควรปรับให้เหมาะสม อันที่จริงแล้วOS X ทำงานได้ตามที่ออกแบบไว้

น่าเสียดายที่ผู้เขียนฝ่ายสนับสนุนด้านเทคนิคไม่ใช่นักพัฒนาเคอร์เนลและการอ้างอิงบทความสนับสนุน Apple Knowledge Base นั้นผิดเมื่ออ้างว่าหน่วยความจำที่ไม่ได้ใช้งานเป็นหน่วยความจำที่ไม่ได้ใช้โดยโปรแกรม เมื่อคุณออกจากโปรแกรมหน่วยความจำภายในทั้งหมดจะกลายเป็นฟรี มันไม่หยุดทำงานใน Inactive อย่างไรก็ตามลิงค์ที่สองไปยังเว็บไซต์ของนักพัฒนาซอฟต์แวร์ที่อธิบายว่าการจัดการหน่วยความจำทำงานอย่างไรเป็นทรัพยากรที่ดีถ้าอ่านได้อย่างสมบูรณ์

มีความเข้าใจผิดมากมายเกี่ยวกับความหมายของ "หน่วยความจำที่ไม่ใช้งาน" ใน OS X ตรงกันข้ามกับความเข้าใจที่คลาดเคลื่อนหน่วยความจำที่ไม่ได้ใช้งานทั้งหมดนั้นว่างเปล่าไม่ได้ใช้แคชหรือล้างได้ ในความเป็นจริงหน่วยความจำที่ใช้งานอยู่สามารถแคชหรือลบล้างได้เช่นกันหากมีการเข้าถึงเมื่อเร็ว ๆ นี้ หน่วยความจำที่ไม่ได้ใช้งานส่วนใหญ่มีข้อมูลที่ไม่สามารถทิ้งได้อย่างง่ายดาย หากถูกทิ้งไปโปรแกรมจะทำงานผิดพลาดเนื่องจากหน้าที่ถูกทิ้งจะมีข้อมูลที่ถูกต้อง (ตามที่อ้างจากทางฝั่งผู้พัฒนา OS X กล่าว) และโปรแกรมคาดว่าข้อมูลที่เก็บไว้ในหน่วยความจำ (เสมือน) จะไม่หายไป

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

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

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

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

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

โปรดทราบว่ากระบวนการเรียงลำดับนี้เพื่อตัดสินใจว่าหน่วยความจำใดที่จะสลับออกจะคล้ายกันในทุกระบบปฏิบัติการที่ทันสมัย ลินุกซ์มีเหมือนกันสองรายการของหน้าเว็บที่ใช้งานและไม่ได้ใช้งานตามที่อธิบายในการทำความเข้าใจจัดการหน่วยความจำเสมือนลินุกซ์ Windows อาจใช้บางสิ่งที่แตกต่างกับความใหม่มากกว่าสองคลาส ฉันไม่สามารถหาคำอธิบายทางเทคนิคล่าสุดที่เชื่อถือได้ในขณะนี้ การใช้งานที่มากขึ้นมีการหารือในที่หน้าวิกิพีเดียมีสิทธิ"ขั้นตอนวิธีการเปลี่ยนหน้า" ความแตกต่างเพียงอย่างเดียวกับ OS X คือวิธีแสดงสถิติ: บางคนตัดสินใจว่าควรแสดงตัวเลขแยกต่างหากสำหรับการใช้งานและไม่ใช้งานในtopหรือการตรวจสอบกิจกรรม เมื่อมองย้อนกลับไปอาจเป็นความคิดที่ไม่ดีนัก (และสิ่งนี้มีการเปลี่ยนแปลงใน OS X 10.9)

กระบวนการตั้งค่าและการล้างค่าสถานะและการบำรุงรักษา heap ที่แอ็คทีฟ / ไม่ทำงานนั้นใช้พลังงานตัวประมวลผลเล็กน้อย ด้วยเหตุผลดังกล่าว OS X จึงไม่ทำเมื่อมีหน่วยความจำว่างมากมาย ดังนั้นโปรแกรมแรกที่คุณเริ่มต้นขึ้นจะปรากฏเป็นหน่วยความจำ "ที่ใช้งาน" ทั้งหมดจนกว่าหน่วยความจำที่ว่างจะเริ่มต่ำ

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

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

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

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

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

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

หมายเหตุสำหรับ OS X 10.9: Mavericks แนะนำ "การบีบอัดหน่วยความจำ" ซึ่งเป็นเลเยอร์การสลับอีกชั้นหนึ่งมากหรือน้อย ขณะนี้เพจที่แอ็คทีฟได้รับการจัดประเภทเป็นไม่แอ็คทีฟจากนั้นบีบอัด (ซึ่งอาจปรากฏเป็นหน่วยความจำเคอร์เนลขึ้นอยู่กับเครื่องมือที่คุณใช้) จากนั้นเขียนเพื่อสลับเมื่อการใช้หน่วยความจำเพิ่มขึ้น Mavericks ยังหยุดแสดงตัวเลขแยกต่างหากสำหรับการใช้งานและไม่ใช้งานในการตรวจสอบกิจกรรมเนื่องจากมันจะไม่เป็นสิ่งที่มีประโยชน์ในการดูโดยเฉพาะอย่างยิ่งเมื่อมีความเข้าใจผิดรอบตัว


4

ขณะนี้ยังไม่มีวิธีการปรับเปลี่ยน swappiness (หรือที่เรียกว่า) ลักษณะการทำงานของ macos X ได้อย่างง่ายดายมีแฮ็กบางอย่างที่ใช้ได้ (ต้องใช้บัญชีนักพัฒนาและ SDK):

http://cestdelamerde.com/archives/22-Killing-Mac-OS-X-Swapping-How-To-Disable-dynamic_pager.html

http://dropsafe.crypticide.com/article/3848

โชคดี!

ป.ล. ฉันเดาว่าคุณอาจต้องการอ่านคำตอบนี้ (โดยฉัน) เพื่อตรวจสอบทั่วไปเพิ่มเติมเกี่ยวกับความทรงจำที่ไม่ใช้งานและอื่น ๆ ใน MacOSX: Wired Memory vs. Active Memory ใน OS X


ขอบคุณสำหรับคำตอบของคุณ การปรับ swappiness แน่นอนจะช่วย - bummer ที่ไม่ง่าย! เกี่ยวกับลิงค์แรกฉันกำลังมองหาแฮ็คที่ไม่ได้รวมการปิดการใช้งาน swap / dynamic_pager ทั้งหมดและเริ่มต้นใหม่เนื่องจากต้องใช้ความพยายามมากเกินไปในการปิดการใช้งาน swap และทำให้ระบบไม่เสถียรเมื่อใกล้ถึงระดับต่ำ ของหน่วยความจำที่ไม่ได้ใช้งานและฟรี ลิงค์ที่ 2 หมายถึงปัญหาของการแลกเปลี่ยนไฟล์ที่เพิ่มขึ้นเรื่อย ๆ ในขณะที่และเรื่องที่สำคัญโดยเฉพาะอย่างยิ่งเมื่อใครจะต่ำในไฟล์แลกก็ไม่ได้จริงๆที่เกี่ยวข้องกับคำถามของฉันในหัวข้อนี้ ...
Motin

4

ไม่ใช่วิธีการแก้ปัญหาอย่างถาวร แต่อย่างน้อยสามารถช่วยเรียกคืนหน่วยความจำที่ไม่ได้ใช้งานบางอย่างซึ่งอาจหลีกเลี่ยงการแลกเปลี่ยนที่หวั่น: http://itunes.apple.com/nz/app/freememory/id460931672?mt=12

เครื่องมือนี้ฟรีและใช้งานง่าย เมื่อเริ่มต้นให้เลือกตัวเลือก "หน่วยความจำฟรี" ในแถบเครื่องมือ / เมนูระบบ

ซึ่งแตกต่างจากการแสดงผลหน่วยความจำ ActivityMonitor มันจะแสดงเฉพาะหน่วยความจำฟรีซึ่งดูเหมือนจะเป็นตัวบ่งชี้ที่ดีกว่าของการแลกเปลี่ยนที่เกิดขึ้นหรือไม่


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

@Motin ฉันใช้ FreeMemory เป็นเวลาหลายเดือนและมันก็ไม่ได้ทำอย่างน้อยก็ในประสบการณ์ของฉัน ถ้าฉันต้องรู้การเดา (ตามสิ่งที่ฉันเห็นใน Activity Monitor) ความแตกต่างก็คือ FM จะใช้หน่วยความจำ "แอคทีฟ" ก่อนซึ่งจะจัดลำดับความสำคัญมากกว่าแคชของดิสก์ มัน "เพิ่ม" หน่วยความจำอื่นโดยการจัดลำดับความสำคัญสูงกว่าจากนั้นจะเพิ่มหน่วยความจำของตัวเอง ฉันไม่เคยเห็นมันเพิ่มการแลกเปลี่ยนอย่างมีนัยสำคัญ (อาจเป็นจำนวนเล็กน้อยที่จัดสรรในขณะที่มันบริโภค)
เปลือกตา

2

เริ่มต้นด้วย OS X 10.5 มีปัญหาการจัดการหน่วยความจำที่เห็นได้ชัดใน MAC OS X เว็บได้รับความยุ่งเหยิงจากข้อร้องเรียนเกี่ยวกับระบบที่ชะลอตัวลงอย่างมากหลังจากเวลาผ่านไป ก่อนหน้านั้นฉันมีเครื่องช้ากว่า Mac Mini ที่มี RAM 1GB ดังนั้นฉัน (ผิด) สรุปว่ามันเป็นเพราะฮาร์ดแวร์ที่ด้อยกว่า

ตอนนี้ฉันมี 2010 MBP, core i7, 8 GB RAM, GPU คู่ Mac os X Snow Leopard เป็นความเจ็บปวด แต่หลังจากย้ายไปที่ OS X Lion แล้วการทำงานบางอย่างที่จริงจังใน MAC ก็เริ่มเป็นฝันร้าย

ในที่สุดฉันก็สามารถจำลองสถานการณ์ที่มีปัญหาได้ดังนั้นฉันจึงทำการทดสอบและบันทึกหน้าจอลงในวิดีโอ

ปัญหาประสิทธิภาพของ MAC OS X Lion - การจัดการหน่วยความจำไม่สมบูรณ์

ฉันรันคำสั่ง tar + bzip ซึ่งเป็นไฟล์ยูนิกซ์พื้นฐานในไฟล์รูปภาพจำนวนมากในรูปภาพ / โฟลเดอร์ของฉัน ก่อนเริ่มต้นฉันรันคำสั่ง "ล้างข้อมูล" เพื่อลบข้อมูลโปรแกรมที่ไม่ใช้งาน / แคช

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

เมื่อหน่วยความจำว่างลดลงต่ำกว่า 100mb ฉันเริ่มบางแอพเช่น Safari, iPhoto และ MS Word และคุณสามารถเห็นในวิดีโอว่ามันใช้เวลาเพียงไม่กี่นาทีในการเริ่มต้นแอปโดยปกติ (เมื่อมี RAM ว่าง) จะใช้เวลาในการโหลดประมาณ 3-5 วินาที

ฉันเรียกใช้สถานการณ์เดียวกันและคำสั่งเดียวกันบนกล่อง Linux Centos 6 ของฉันไม่มีปัญหา! การใช้หน่วยความจำคือ 10-20mb บางส่วนไม่มีปัญหากับแคช / บัฟเฟอร์

การจัดการหน่วยความจำต้องใช้งานไม่ได้ใน Mac OS X!


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

สภาพแวดล้อมการทดสอบยังห่างไกลจากการฆ่าเชื้อ เราไม่สามารถบอกได้ว่า QuickTime Player กำลังทำอะไรอยู่หรือโปรแกรมอื่นใดเปิดอยู่
chrishiestand

1

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

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

RAM 16GB


2
โปรดทราบ SSDs มีวงรอบการเขียน จำกัด นอกจากนี้โปรดทราบว่าสำหรับ SSD ที่ไม่ได้เปิดใช้งานการเขียนอาจมีราคาแพงในที่สุดเนื่องจากต้องลบเซลล์แฟลช
หยักศกปู

คุณสามารถอ้างอิงแหล่งที่มาของปัญหา "สลีปทำให้การใช้หน่วยความจำเพิ่มขึ้น" ได้หรือไม่?
GordonM

ฉันสามารถอ้างอิงประสบการณ์ของฉันได้ไหม :) ฉันทำการค้นหาอย่างรวดเร็วและพบสิ่งนี้: Discussions.apple.com/message/21624847#21624847 + มีหลายหัวข้อที่เกี่ยวข้องกับหน่วยความจำที่ไม่ได้ใช้งานซึ่งไม่ได้ถูกล้างออกเมื่อจำเป็น โดยส่วนตัวแล้วฉันเห็นว่าหลังจากการนอนหลับทุกครั้งหน่วยความจำที่ไม่ได้ใช้งานจะยังคงเหมือนเดิมและเพิ่มขึ้น 'purge' เป็นตัวเลือก แต่ฉันไม่ต้องการล้างหน่วยความจำที่ไม่ได้ใช้งานทุก ๆ 20 นาที (ฉันเดิมพันว่านี่เป็นกรณีที่มี 4 GiB RAM)

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