Nonaktifkan sementara RAM untuk meniru mesin spesifikasi yang lebih rendah?

30

Saya punya dua Macbook 2009. Seseorang memiliki 4 gigs RAM dan menjalankan os 10.10; seseorang memiliki 2 pertunjukan dan menjalankan os 10.5.

Saya sedang mempertimbangkan untuk meningkatkan mesin yang terakhir ke Yosemite (10,10), tetapi saya khawatir itu akan berjalan lambat dengan RAM yang sangat sedikit. Untuk mengetahui seperti apa performanya, saya bertanya-tanya apakah ada cara saya bisa "mematikan" setengah RAM di mesin spec yang lebih tinggi. Jika saya melakukan ini, saya bisa mengetahui bagaimana Yosemite akan berjalan di mesin 2 manggung sebelum benar-benar melakukan upgrade.

Apakah ada cara untuk menonaktifkan RAM sementara tanpa mengeluarkan chip secara fisik?

dB '
sumber
Mengapa tidak melepas chip merupakan persyaratan? Tidak bisakah Anda menukar RAM fisik kedua MacBook?
Saaru Lindestøkke
4
Saya tidak memiliki obeng yang tepat.
dB '
3
2009 MacBook Pro akan menerima ram DDR3 1333 MHz (itu akan menurunkan kecepatan ke 1066mhz). Anda dapat membeli seharga $ 30. Mesin-mesin ini akan memakan waktu hingga 8GB. Tambahkan SSD dan ini masih mesin yang sangat layak.
Jasper Blues
@ dB 'Mohon terima jawaban OSdweeb. bukan milikku. Meskipun Anda harus memulai ulang, ini adalah metode yang elegan dan default dan memberikan hasil yang lebih dapat diandalkan untuk 10.9 / 10.10 dan mungkin nanti. Disk RAM berfungsi dengan baik untuk Mac OS X hingga 10.8 tanpa memulai ulang dan merusak file sistem.
klanomath

Jawaban:

25

Tidak perlu mengeluarkan RAM, membuat disk RAM atau menggunakan VM. Cukup boot OS menggunakan nilai maxmem=flag boot yang telah dibuat untuk tujuan ini dan telah ada selama beberapa dekade.

Cukup buka Terminal sebagai sudoer dan masukkan

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

Setelah memasukkan kata sandi Anda

<?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>

untuk

<?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>

dan menulis perubahan ke disk dengan ctrlodan keluar dari nano denganctrlx

Mulai ulang Mac Anda untuk menerapkan perubahan.

Untuk mengembalikan perubahan, hapus 'maxmem = 2048' dengan nano lagi.

OSdweeb
sumber
2
Otak saya adalah tong sampah yang lama ... Kemarin saya mencoba mencari solusi mudah ini datang dari neraka atau air tinggi - dan saya tahu itu ada - tetapi saya tidak mengingatnya.
klanomath
1
Ngomong-ngomong: Anda sebaiknya menyelesaikan registrasi, jika tidak jika Anda kehilangan cookie secara tidak sengaja, Anda tidak akan bisa masuk ke akun lagi.
nicael
Sementara jawaban ini, seperti ditulis pada 4 April '15, mungkin telah bekerja pada OS X hingga OS X 10.10 Yosemite; namun, tidak lagi berfungsi di OS X 10.11 El Capitan dan yang lebih baru kecuali yang pertama menonaktifkan Perlindungan Integritas Sistem. Lihat Bagaimana memodifikasi Perlindungan Integritas Sistem di El Capitan , dan meskipun arahnya untuk El Capitan, instruksi dasar yang sama berlaku untuk versi MacOS yang lebih baru.
user3439894
14

Cukup buat Disk RAM dengan ukuran 2 GiB untuk mengurangi RAM yang tersedia untuk sistem dan menjalankan aplikasi.

Untuk mendapatkan jumlah blok yang diperlukan untuk membuat disk seperti itu, gandakan (RAMdiskSize dalam MB) * 2048. Dalam contoh Anda itu 2048 * 2048 = 4194304.

Kemudian buka Terminal dan masukkan:

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

Anda akan mendapatkan pesan yang mirip dengan yang itu:

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  

kemudian gunakan dd dan path ke volume dan isi disk dengan data acak:

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

Perintah akan menulis 1 MiB potongan data acak ke file random.dat dalam volume RAM Disk sampai itu terisi penuh.

Ini secara artifisial akan mengurangi RAM yang tersedia sebesar ~ 2 GiB hingga Anda melepas RAM Disk atau memulai ulang Mac Anda.

Setelah beberapa pengujian, ini tampaknya tidak bekerja andal seperti pada sistem yang lebih lama. Alasannya adalah manajemen memori baru dalam sistem terbaru (10,9 ke atas).
Memori yang digunakan oleh RAM Disk tidak boleh ditukar ke disk tetapi tergantung pada kualitas file data acak itu mungkin dikompresi sedikit. Anda dapat meningkatkan ukuran Disk RAM sebesar 5-10% menjadi ~ 2.1 GB untuk mendapatkan gambar yang lebih realistis.


Jika Anda ingin melakukan ini di 10.5-10.8 perintah berikut ini tampaknya cukup untuk mendapatkan hasil yang dapat diandalkan (untuk mendapatkan Disk Identifier, periksa output dari diskutil...perintah):

dd if=/dev/zero of=/dev/rdisk9 bs=1m
klanomath
sumber
Solusi keren! Jika saya mengerti benar saya telah memerintahkan 2 pertunjukan ram untuk disk ram. 2 gigs RAM dialokasikan, tetapi, karena saya tidak menggunakan ram disk untuk apa pun, itu sebenarnya tidak diakses oleh pemrosesan apa pun. Jika saya memiliki memori virtual, bukankah os menulis blok ram yang tidak terpakai ini untuk swapfile saya, secara efektif membebaskan 2 pertunjukan lagi?
dB '
@dB 'Anda benar dengan komentar pertama Anda tentang RAM yang tidak digunakan. Bahkan mungkin akan menjadi sangat terkompresi meninggalkan banyak RAM gratis. Jadi saya memodifikasi jawaban saya untuk mengisi disk dengan data acak untuk memotong itu.
klanomath
Anda mungkin dapat membuang semua perhitungan ukuran disk dan biarkan mengisi seluruh disk:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh
@Josh Saya akan mencobanya lagi dan mengubah jawaban saya jika berfungsi. Kemarin saya mengalami masalah dalam menjalankan perintah dalam VM. Saya baru saja mendapatkan kesalahan 'sumber daya sibuk' dan tidak ada yang ditulis ke volume.
klanomath
Jika Anda menulis ke file of=/Volumes/RAM\ Disk/random.dat, maka Anda harus baik-baik saja. jika Anda menulis ke disk,, of=/dev/rdisk9maka Anda harus menjadi root, dan mungkin harus dilepas. (harus dilepas, jika tidak sistem akan menjadi bingung)
Josh
8

Ya - gunakan memory_pressurealat ini untuk memberikan tekanan memori nyata ke sistem.

Ini bukan analogi yang sempurna untuk melepas chip memori karena penyetelan memori virtual masih tahu ada 4 GB atau RAM dan argumen -p persen_free tidak akan mengalokasikan jumlah RAM yang konstan, tetapi menjaga sistem dekat dengan X persen gratis.

Seharusnya Anda dapat dengan cepat melihat apakah beban kerja Anda dapat diterima pada sistem dengan ram 2 GB bahkan dengan analogi yang tidak sempurna.

Jika Anda dapat melepas chip secara fisik - Anda dapat terlebih dahulu mensimulasikan berbagai hal dan mendapatkan patokan kemudian melakukan perubahan perangkat keras jika Anda perlu memastikannya akurat.

bmike
sumber
Masalah utama yang saya lihat dengan melepas chip fisik adalah mode dual channel dihapus dari gambar juga. Opsi pertama dalam jawaban ini sepertinya cara yang lebih baik untuk melakukannya karena masalah kinerja nyata hanya berasal dari peningkatan penggunaan.
Thebluefish
3

Menambahkan ke Jawaban OSdweeb:

Karena El Capitan mengedit com.apple.Boot.plistfile hanya mungkin ketika menonaktifkan Protokol Integritas Sistem (SIP) (lihat utas ini ).

Namun, Anda dapat mengatur flag boot dengan perintah berikut:

sudo nvram boot-args="maxmem=2048"

Elwin
sumber
2

Solusi lain adalah menggunakan mesin virtual untuk mensimulasikan Mac dengan RAM lebih rendah. Instal VMWare Fusion, Parallels, atau VirtualBox (jika Anda suka bertualang) dan instal OS X di dalamnya. Kemudian Anda dapat memanipulasi jumlah core, jumlah ruang disk, dan (ketika Anda meminta) jumlah RAM yang tersedia untuk OS X. VirtualBox gratis, tetapi saat ini terbatas pada 3Gb untuk OS X sampai pengembang mengizinkan operasi kernel 64-bit . Dua produk lainnya masing-masing memiliki uji coba 30 hari dan 14 hari.

ktappe
sumber
-1, maaf ... ini bukan perbandingan yang baik. Sekarang, Anda memiliki driver video tervirtualisasi, I / O tervirtualisasi, dan kinerja CPU yang kecil. Saya suka Virtualisasi, tetapi jika semua yang Anda ingin lakukan adalah melihat bagaimana sistem akan bekerja dengan RAM yang tersedia lebih sedikit, ini bukan solusi yang baik.
Josh
@Josh Denda kinerja kecil untuk virtualisasi harus diabaikan: CPU modern memiliki dukungan perangkat keras untuk tugas seperti itu, sehingga kinerjanya akan sangat dekat dengan bare-metal kecuali untuk beberapa kasus pinggiran esoteris. Selain itu, Anda tidak hanya dapat secara langsung mengontrol jumlah memori yang tersedia, Anda juga dapat menyesuaikan frekuensi CPU, core yang tersedia, memori video yang tersedia, dan parameter lainnya. Untuk benar-benar mensimulasikan mesin yang lebih lama, menyediakan opsi ini mungkin berguna. Kinerja OS lebih dari sekadar RAM yang tersedia.
phyrfox
Jika Anda berbicara tentang virtualisasi tingkat perusahaan seperti VMWare ESXi, maka Anda benar @phyrfox - tentang kecepatan CPU . Ada hit kinerja pada pemrosesan grafis dan video yang akan terlihat jika menjalankan Mac OS X. Saya setuju, Virtualisasi adalah solusi yang tepat ketika Anda ingin menyesuaikan frekuensi CPU, core yang tersedia, perangkat keras, dll. Tetapi pertanyaan ini murni tentang membatasi RAM yang tersedia, dan untuk kasus penggunaan itu saya percaya bahwa virtualisasi bukan solusi yang tepat.
Josh
-1

Untuk MENGAMBIL RAM, Anda dapat:

Jika macbook Anda adalah Aluminium, Anda melepas seluruh bagian bawah dan RAM harus tepat berada di tengah.

Jika berwarna putih, ambil kompartemen kecil di sudut dan akses ram dengan cara itu.

Sumber: https://support.apple.com/en-ca/HT1651

Kachamenus
sumber
1
Perhatikan bahwa ia meminta untuk menonaktifkannya tanpa menghapus ram secara fisik.
Spotlight
Dia masih bisa menyelesaikan masalahnya dengan ini yang saya maksud ...
Kachamenus
2
Tetapi pertanyaannya adalah, "Apakah ada cara untuk menonaktifkan RAM sementara tanpa mengeluarkan chip secara fisik?", Jadi ini tidak menjawab pertanyaan
Josh
Maaf soal itu. Saya baru saja menyatakan ada cara untuk mengambil ram.
Kachamenus