วิธี จำกัด RAM ที่กระบวนการโดยพลการสามารถทำได้


12

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


6
ไม่และนี่จะเป็นการต่อต้าน การจัดสรร RAM ขนาดเล็กไม่ใช่สิ่งที่ระบบปฏิบัติการได้รับการออกแบบมา แรมฟรีเป็นแรมที่สูญเปล่า มีมากเกินไปจากการจัดการ RAM ที่ไม่ดีของ OS X การปิดกิจกรรมการติดตามและการดำเนินชีวิตของคุณน่าจะเป็นวิธีการรักษาที่ดีที่สุด

8
@cksum มีข้อสันนิษฐานมากมายในความคิดเห็นของคุณซึ่งส่วนใหญ่ผิด ฉันไม่ได้พยายามจัดการหน่วยความจำของ OS X สิ่งที่ฉันกำลังทำจริง ๆคือพยายามค้นหาว่ามีวิธีการรักษาฟังก์ชันการทำงานของระบบเพียงพอหรือไม่ในขณะที่ทดสอบรหัสบางอย่างที่ค่อนข้างจะกลายเป็นกระบวนการที่ควบคุมไม่ได้ เพราะแรมฟรีไม่ได้สูญเปล่าแรมถ้ามันช่วยให้คุณแก้ไขข้อผิดพลาดได้
Fomite

3
ขออภัยหากคำถามของคุณเกี่ยวข้องกับการเขียนโปรแกรม (การพัฒนาและการทดสอบ) ของแอปพลิเคชันมันจะไม่เป็นหัวข้อสำหรับฟอรัมนี้ โปรดดูคำถามที่พบบ่อยสำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทของคำถามที่อยู่ที่นี่: apple.stackexchange.com/faq

10
FFS นี่ไม่ใช่คำถามการเขียนโปรแกรม มันเป็นคำถามของระบบปฏิบัติการ การ จำกัด หน่วยความจำที่กระบวนการโดยพลการสามารถใช้ - Safari, Matlab, Call of Duty, อะไรก็ตาม - ในระดับระบบปฏิบัติการนั้นเป็นคำถามของ OS อย่างชัดเจน
Fomite

7
การเป็นไซต์สำหรับคำถาม "ผู้ที่ชื่นชอบแอปเปิ้ลและผู้ใช้ระดับสูง" ที่สำคัญคือเกี่ยวกับหน่วยความจำเสมือนชัดเจนในขอบเขตและในหัวข้อ แม้ว่าจะเกี่ยวข้องกับการพัฒนาสิ่งนี้จะใช้ได้สำหรับการปรับแต่งหรือปัญหาด้านประสิทธิภาพ
bmike

คำตอบ:


9

คำถามที่คล้ายกันนี้ถูกบันทึกไว้ที่นี่ฉันจะ จำกัด จำนวน RAM ที่แอปพลิเคชัน Mac OS สามารถใช้ได้อย่างไร

พวกเขาแนะนำให้ใช้คำสั่งulimitแต่ไม่สามารถ จำกัด จำนวนตามที่ต้องการได้ ฉันคิดว่าปัญหาที่พวกเขาพบคือความจริงที่ว่าตัวเลือกการตั้งค่า -u หรือ -v ไม่ใช่การบัญชีสำหรับหน่วยความจำระบบเพจเช่นคุณสามารถจัดสรรจำนวน X พื้นที่สำหรับกระบวนการของคุณในแรมจริง แต่เราสามารถหน้า คุณออกไปสู่หน่วยความจำเสมือนตลอดทั้งวัน

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

ลองเรียกใช้ ulimit ด้วยอาร์กิวเมนต์ -l, -m หรือ -v ตามที่ระบุไว้ใน ulimit man page จนถึง OS หากจะให้ความสนใจกับการตั้งค่าเหล่านี้หรือไม่ตามที่ระบุไว้

ulimit: ulimit [-SHacdefilmnpqrstuvx] [จำกัด ]

แก้ไขข้อ จำกัด ของทรัพยากรเชลล์

จัดเตรียมการควบคุมทรัพยากรที่มีให้กับเชลล์และกระบวนการที่สร้างบนระบบที่อนุญาตการควบคุมดังกล่าว

ไม่พบแหล่งที่แน่นอนที่ยืนยันว่า OS X ละเว้น ulimit หรือไม่ แต่หลังจาก ulimit ที่อ้างอิงล้มเหลว

หากคุณสามารถใช้ ulimit ให้ทำงานได้ตามความต้องการของคุณเองให้ปล่อยมันไปถ้าไม่ใช่การรวมกันของ ulimit และการปิดการใช้งานหน่วยความจำเสมือนอาจช่วยให้คุณสามารถตั้งค่าขีด จำกัด 3 GB สำหรับกระบวนการที่เลือกได้ FYI ที่นี่เป็นลิงค์ที่ดีสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการปิดใช้งานหน่วยความจำเสมือนโดยสิ้นเชิงในระบบ Snow Leopard 10.6

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

ดูเหมือนว่าคำตอบที่ถูกต้องน่าจะเป็น - ฉันจะลองเมื่อฉันใช้งานต่อไป สำหรับตอนนี้ยอมรับคำตอบ
Fomite

5

หากคุณใช้เซิร์ฟเวอร์ Lion (หรือ OSX ที่ใหม่กว่า) บน Mac ของคุณคุณอาจสามารถเรียกใช้ OSX ภายใน VM (VirtualBox, Parallels หรือ VMWare, et.al. ) บน Mac เครื่องนั้น จำกัด VM ไว้ที่ 3GB ของ RAM จริงและแอพหรือกระบวนการใด ๆ ภายใน VM ก็จะถูก จำกัด เช่นกัน ระบบที่โฮสต์ VM ควรรักษาการตอบสนองแม้ว่าระบบปฏิบัติการใน VM จะสำรองข้อมูลหรือ จำกัด การทำงานของดิสก์

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

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