ปิดการใช้งาน RAM ชั่วคราวเพื่อเลียนแบบเครื่องสเปคที่ต่ำกว่า?


30

ฉันมี Macbooks 2009 สองเครื่อง หนึ่งมี 4 กิ๊กส์ของ RAM และรันระบบปฏิบัติการ 10.10; หนึ่งมี 2 กิ๊กและรันระบบปฏิบัติการ 10.5

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

มีวิธีการปิดการใช้งาน RAM ชั่วคราวโดยไม่ต้องถอดชิปออกหรือไม่?


ทำไมไม่ลบความต้องการชิป? คุณไม่สามารถสลับ RAM จริงของ MacBooks สองเครื่องได้หรือไม่
Saaru Lindestøkke

4
ฉันไม่มีไขควงที่เหมาะสม
เดซิเบล '

3
2009 MacBook Pro จะยอมรับหน่วยความจำ DDR3 1333 MHz (มันจะลดความเร็วเป็น 1066mhz) คุณสามารถซื้อในราคา $ 30 เครื่องเหล่านี้จะใช้เวลาสูงสุด 8gb เพิ่ม SSD และนี่ก็ยังเป็นเครื่องที่ดีมาก
Jasper Blues

@dB 'โปรดยอมรับคำตอบของ OSdweeb แทนที่จะเป็นของฉัน แม้ว่าคุณจะต้องเริ่มต้นใหม่ แต่ก็เป็นวิธีการเริ่มต้นที่สวยงามและให้ผลลัพธ์ที่น่าเชื่อถือมากขึ้นสำหรับ 10.9 / 10.10 และอาจเป็นภายหลัง ดิสก์ RAM ทำงานได้ดีสำหรับ Mac OS X สูงถึง 10.8 โดยไม่ต้องเริ่มระบบใหม่และแก้ไขไฟล์ระบบ
klanomath

คำตอบ:


25

ไม่จำเป็นต้องใช้ RAM ออกสร้างดิสก์ RAM หรือใช้ VM เพียงแค่บู๊ตระบบปฏิบัติการโดยใช้maxmem=ค่าสถานะการบู๊ตที่สร้างขึ้นเพื่อจุดประสงค์นี้

เพียงเปิดเทอร์มินัลเป็น sudoer แล้วป้อน

sudo nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

หลังจากป้อนรหัสผ่านของคุณแล้ว

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string></string>
</dict>
</plist>

ไปยัง

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string>maxmem=2048</string>
</dict>
</plist>

และเขียนการเปลี่ยนแปลงไปยังดิสก์ด้วยctrloและออกจากนาโนด้วยctrlx

รีสตาร์ท Mac ของคุณเพื่อใช้การเปลี่ยนแปลง

หากต้องการเปลี่ยนกลับการเปลี่ยนแปลงให้ลบ 'maxmem = 2048' ด้วย nano อีกครั้ง


2
สมองของฉันเป็นขยะเก่า ๆ ได้ ... เมื่อวานฉันพยายามหาวิธีแก้ปัญหาที่ง่ายนี้มาจากนรกหรือในน้ำที่สูง - และฉันรู้ว่ามันมีอยู่ - แต่ฉันจำไม่ได้
klanomath

1
โดยวิธีการ: คุณควรทำการลงทะเบียนให้สมบูรณ์มิฉะนั้นถ้าคุณทำคุกกี้ของคุณสูญหายโดยไม่ตั้งใจคุณจะไม่สามารถเข้าสู่บัญชีของคุณได้อีก
nicael

ในขณะที่คำตอบนี้ตามที่เขียนในวันที่ 4 เมษายน 2558 อาจใช้งานได้กับ OS X ผ่าน OS X 10.10 โยเซมิตี อย่างไรก็ตามมันจะไม่ทำงานบน OS X 10.11 El Capitan และใหม่กว่าเว้นแต่จะมีการปิดใช้งานการป้องกันความถูกต้องของระบบเป็นครั้งแรก ดูวิธีแก้ไขการป้องกันความถูกต้องของระบบใน El Capitanและในขณะที่คำแนะนำสำหรับ El Capitan ยังคงมีคำแนะนำพื้นฐานเดียวกันสำหรับ macOS เวอร์ชันใหม่
user3439894

14

เพียงแค่สร้าง RAM Disk ที่มีขนาด 2 GiB เพื่อลด RAM ที่พร้อมใช้งานสำหรับระบบและแอปพลิเคชันที่ทำงานอยู่

ในการรับจำนวนบล็อกที่จำเป็นในการสร้างดิสก์ให้คูณ (RAMdiskSize เป็น MB) * 2048 ในตัวอย่างของคุณนั่นคือ 2048 * 2048 = 4194304

จากนั้นเปิด Terminal และป้อน:

diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://4194304`

คุณจะได้รับข้อความคล้ายกับข้อความนั้น:

Started erase on disk9  
Unmounting disk  
Erasing  
Initialized /dev/rdisk9 as a 2 GB HFS Plus volume  
Mounting disk  
Finished erase on disk9 RAM Disk  

จากนั้นใช้ dd และพา ธ ไปยังโวลุ่มและเติมดิสก์ด้วยข้อมูลสุ่ม:

dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k

คำสั่งจะเขียนข้อมูลแบบสุ่ม 1 MiB ไปยังไฟล์ random.dat ใน RAM Disk Volume จนกว่าจะเต็มความจุ

การทำเช่นนี้จะช่วยลด RAM ที่มีอยู่ของคุณโดยปลอม ~ 2 GiB จนกว่าคุณจะยกเลิกการต่อเชื่อมดิสก์ RAM หรือรีสตาร์ท Mac ของคุณ

หลังจากการทดสอบนี้ดูเหมือนว่าจะไม่ทำงานอย่างน่าเชื่อถือเหมือนในระบบเก่า เหตุผลคือการจัดการหน่วยความจำใหม่ในระบบล่าสุด (10.9 ขึ้นไป)
หน่วยความจำที่ใช้โดย RAM Disk ไม่ควรสลับเป็นดิสก์ แต่ขึ้นอยู่กับคุณภาพของไฟล์ข้อมูลแบบสุ่มซึ่งอาจถูกบีบอัดเล็กน้อย คุณสามารถเพิ่มขนาด RAM Disk ได้ 5-10% เป็น ~ 2.1 GB เพื่อให้ได้ภาพที่สมจริงยิ่งขึ้น


หากคุณต้องการทำสิ่งนี้ใน 10.5-10.8 คำสั่งต่อไปนี้ดูเหมือนจะเพียงพอที่จะได้รับผลลัพธ์ที่เชื่อถือได้ (เพื่อให้ตัวระบุดิสก์ตรวจสอบผลลัพธ์ของdiskutil...คำสั่ง):

dd if=/dev/zero of=/dev/rdisk9 bs=1m

ทางออกที่ยอดเยี่ยม! ถ้าฉันเข้าใจถูกต้องฉันได้สั่ง ram 2 กิ๊กสำหรับ ram disk RAM ขนาด 2 กิ๊กถูกจัดสรร แต่เนื่องจากฉันไม่ได้ใช้ ram disk สำหรับสิ่งใดมันจึงไม่ถูกเข้าถึงโดยผู้ประมวลผลใด ๆ หากฉันมีหน่วยความจำเสมือนเปิดอยู่ระบบปฏิบัติการจะไม่เขียนหน่วยความจำ RAM ที่ไม่ได้ใช้นี้ลงใน swapfile ของฉันซึ่งจะช่วยเพิ่ม 2 กิ๊กอีกครั้งได้อย่างมีประสิทธิภาพหรือไม่
เดซิเบล '

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

คุณอาจจะเป็นเพียงแค่การถ่ายโอนข้อมูลการคำนวณทั้งหมดของขนาดของดิสก์และปล่อยให้เติม DD ขึ้นทั้งดิสก์:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
จอช

@ Josh ฉันจะลองอีกครั้งและแก้ไขคำตอบถ้าใช้งานได้ เมื่อวานฉันมีปัญหาในการดำเนินการคำสั่งใน VM ฉันเพิ่งได้รับข้อผิดพลาด 'ทรัพยากรไม่ว่าง' และไม่มีอะไรถูกเขียนลงในโวลุ่ม
klanomath

หากคุณกำลังเขียนไฟล์ of=/Volumes/RAM\ Disk/random.datคุณควรจะปรับตัว หากคุณกำลังเขียนลงดิสก์of=/dev/rdisk9คุณจะต้องเป็นรูทและอาจต้องถอนการติดตั้ง (ควรยกเลิกการต่อเชื่อมมิฉะนั้นระบบจะสับสน)
Josh

8

ใช่ - ใช้memory_pressureเครื่องมือเพื่อใช้แรงกดดันหน่วยความจำจริงกับระบบ

ไม่ใช่การเปรียบเทียบที่สมบูรณ์แบบในการถอดชิปหน่วยความจำเนื่องจากการปรับหน่วยความจำเสมือนยังรู้ว่ามี 4 GB หรือ RAM และอาร์กิวเมนต์ -p percent_free จะไม่จัดสรร RAM จำนวนคงที่ แต่ให้ระบบอยู่ใกล้กับ X เปอร์เซ็นต์ฟรี

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

หากคุณสามารถลบชิปได้ - คุณสามารถจำลองสิ่งต่างๆและรับมาตรฐานแล้วทำการเปลี่ยนแปลงฮาร์ดแวร์หากคุณต้องการตรวจสอบว่าถูกต้อง


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

3

การเพิ่มคำตอบของ OSdweeb:

เนื่องจากการแก้ไข El Capitan com.apple.Boot.plistไฟล์เป็นไปได้เฉพาะเมื่อปิดใช้งาน System Integrity Protocol (SIP) (ดูที่เธรดนี้)

อย่างไรก็ตามคุณสามารถตั้งค่าสถานะการบูตด้วยคำสั่งต่อไปนี้:

sudo nvram boot-args="maxmem=2048"


2

วิธีแก้ปัญหาอื่นก็คือการใช้เครื่องเสมือนเพื่อจำลอง Mac ที่มี RAM ต่ำกว่า ติดตั้ง VMWare Fusion, Parallels หรือ VirtualBox (ถ้าคุณชอบผจญภัย) และติดตั้ง OS X ในนั้น จากนั้นคุณสามารถจัดการจำนวนแกนจำนวนเนื้อที่ดิสก์และ (ตามที่คุณร้องขอ) จำนวน RAM ที่ใช้ได้กับ OS X VirtualBox ว่าง แต่ปัจจุบัน จำกัด อยู่ที่ 3Gb สำหรับ OS X จนกว่านักพัฒนาจะอนุญาตให้ใช้เคอร์เนล 64 บิต . อีกสองผลิตภัณฑ์มีการทดลอง 30 วันและ 14 วันตามลำดับ


-1 ขอโทษ ... นี่ไม่ใช่การเปรียบเทียบที่ดี ตอนนี้คุณมีไดร์เวอร์วิดีโอจำลองเสมือน, I / O เสมือนจริงและประสิทธิภาพการทำงานของ CPU ขนาดเล็ก ฉันชอบการทำเวอร์ชวลไลเซชัน แต่ถ้าคุณต้องการทำคือดูว่าระบบจะทำงานอย่างไรโดยใช้ RAM น้อยกว่านี่ไม่ใช่วิธีแก้ปัญหาที่ดี
Josh

@Josh บทลงโทษเล็ก ๆ น้อย ๆ สำหรับเวอร์ชวลไลเซชันควรมีความสำคัญ: ซีพียูสมัยใหม่มีการสนับสนุนฮาร์ดแวร์สำหรับงานดังกล่าวดังนั้นประสิทธิภาพจะใกล้เคียงกับโลหะเปลือยยกเว้นในบางกรณีที่มีความลับ นอกจากนั้นไม่เพียง แต่คุณสามารถควบคุมจำนวนหน่วยความจำที่ใช้ได้โดยตรงเท่านั้นคุณยังสามารถปรับความถี่ของ CPU, คอร์ที่มีอยู่, หน่วยความจำวิดีโอที่มีอยู่และพารามิเตอร์อื่น ๆ ในการจำลองเครื่องรุ่นเก่าอย่างแท้จริงการมีตัวเลือกเหล่านี้อาจพิสูจน์ได้ว่ามีประโยชน์ ประสิทธิภาพของระบบปฏิบัติการเป็นมากกว่า RAM ที่มีให้
phyrfox

หากคุณกำลังพูดคุยเกี่ยวกับการทำงานแบบเสมือนระดับองค์กรเช่น VMWare ESXi แล้วคุณ @phyrfox ขวา - เกี่ยวกับความเร็วของ CPU มีประสิทธิภาพการทำงานที่ยอดเยี่ยมในการประมวลผลกราฟิกและวิดีโอซึ่งจะสังเกตได้ถ้าใช้ Mac OS X ฉันเห็นด้วย Virtualization เป็นทางออกที่ถูกต้องเมื่อคุณต้องการปรับความถี่ CPU, คอร์ที่มีอยู่, ฮาร์ดแวร์ ฯลฯ แต่คำถามนี้เกี่ยวกับการ จำกัด RAM ที่ใช้ได้และสำหรับกรณีการใช้งานนั้นฉันเชื่อว่าการจำลองเสมือนไม่ใช่โซลูชันที่เหมาะสม
Josh

-1

หากต้องการถอด RAM คุณสามารถ:

หาก macbook ของคุณเป็นอลูมิเนียมคุณจะต้องปิดส่วนล่างสุดทั้งหมดและ RAM ควรจะอยู่ตรงกลาง

หากเป็นสีขาวให้นำของเล็ก ๆ ที่อยู่ตรงหัวมุมและเข้าถึงแกะอย่างนั้น

ที่มา: https://support.apple.com/th-th/HT1651


1
โปรดทราบว่าเขาขอให้ปิดการใช้งานโดยไม่ต้องลบหน่วยความจำ
ปอตไลต์

เขายังคงสามารถแก้ปัญหาของเขาด้วยสิ่งนี้คือสิ่งที่ฉันหมายถึง ...
Kachamenus

2
แต่คำถามก็คือ "มีวิธีการปิดการใช้งาน RAM ชั่วคราวโดยไม่ต้องถอดชิปออกหรือไม่?" ดังนั้นจึงไม่ตอบคำถาม
Josh

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