低スペックのマシンを模倣するために一時的にRAMを無効にしますか?


30

2009年のMacbookを2つ持っています。1つは4ギガバイトのRAMを持ち、OS 10.10を実行しています。1つは2つのギグを持ち、OS 10.5を実行します。

後者のマシンをYosemite(10.10)にアップグレードすることを検討していますが、RAMが少ないと動作が遅くなるのではないかと心配しています。パフォーマンスがどのようなものかを把握するために、より高いスペックのマシンでRAMの半分を「オフ」にできる方法があるかどうか疑問に思っています。これを行うと、実際にアップグレードを行う前に、2ギガのマシンでYosemiteがどのように実行されるかを把握できました。

チップを物理的に削除せずにRAMを一時的に無効にする方法はありますか?


チップを削除する必要がないのはなぜですか?2つのMacBookの物理RAMを交換するだけではできませんか?
SaaruLindestøkke

4
適切なドライバーが手元にありません。
dB

3
2009 MacBook Proは、DDR3 1333 MHz RAMを受け入れます(1066mhzにダウンスピードします)。30ドルで購入できます。これらのマシンは最大8GBかかります。SSDを追加しても、これは非常にまともなマシンです。
ジャスパーブルース

@dB 'OSdweebの回答を受け入れてください。私の代わりに。再起動する必要がありますが、これはエレガントでデフォルトの方法であり、10.9 / 10.10以降でより信頼性の高い結果を提供します。RAMディスクは、再起動やシステムファイルの改ざんなしで、Mac OS X 10.8まで正常に機能します。
クラノマス

回答:


25

RAMを取り出したり、RAMディスクを作成したり、VMを使用したりする必要はありません。maxmem=この目的のために作成されたブートフラグ値を使用してOSを起動するだけで、何十年も使用されています。

ターミナルを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を再起動して、変更を適用します。

変更を元に戻すには、再度nanoで「maxmem = 2048」を削除します。


2
私の脳は古いゴミ箱です...昨日、私はこの簡単な解決策が地獄や高水に来るのを見つけようとしました-そして、私はそれが存在することを知っていました-しかし、私はそれを覚えていませんでした。
クラノマス

1
ちなみに、登録を完了する方が良いでしょう。そうしないと、誤ってクッキーを紛失した場合、アカウントにログインできなくなります。
ニカエル

この回答は、15年4月4日に書かれたように、OS X 10.10 Yosemiteを介してOS Xで機能した可能性があります。ただし、最初にシステム整合性保護を無効にしない限り、OS X 10.11 El Capitan以降では動作しません。El Capitanシステム整合性保護を変更する方法を参照してください。それでもその指示はEl Capitan向けですが、macOSの新しいバージョンにも同じ基本的な手順が適用されます。
user3439894

14

サイズが2 GiBのRAMディスクを作成して、システムおよび実行中のアプリケーションで使用可能なRAMを減らします。

このようなディスクを作成するために必要なブロック数を取得するには、(MB単位のRAMdiskSize)* 2048を掛けます。あなたの例では2048 * 2048 = 4194304です。

次に、ターミナルを開いて次を入力します。

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チャンクを、RAMディスクボリューム内のファイルrandom.datに、容量がいっぱいになるまで書き込みます。

これにより、RAMディスクをアンマウントするかMacを再起動するまで、使用可能なRAMが人為的に2 GiB減少します。

いくつかのテストの後、これは古いシステムほど信頼性が高いとは思えません。その理由は、最新のシステム(10.9以降)の新しいメモリ管理です。
RAMディスクで使用されるメモリはディスクにスワップされるべきではありませんが、ランダムデータファイルの品質によっては少し圧縮される場合があります。RAMディスクサイズを5〜10%増やして〜2.1 GBにすると、よりリアルな画像が得られます。


10.5-10.8でこれを実行したい場合、次のコマンドで信頼できる結果を得るのに十分なようです(ディスク識別子を取得するには、diskutil...コマンドの出力を確認します)。

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

クールなソリューション!正しく理解できれば、RAMディスク用に2ギガバイトのRAMを指揮しました。2ギガバイトのRAMが割り当てられますが、私はRAMディスクを何にも使用していないので、実際にはどの処理によってもアクセスされていません。仮想メモリをオンにしている場合、OSはこの未使用のRAMブロックを私のスワップファイルに書き込み、2つのギグを効果的に解放しませんか?
dB

@dB '未使用のRAMに関する最初の発言は正しいです。実際、おそらく多くの空きRAMを残して高度に圧縮されます。そのため、ディスクをランダムデータでいっぱいにして、それをバイパスするように回答を変更しました。
クラノマス

あなたは、おそらくディスクサイズのすべての計算をダンプし、ディスク全体までDD塗りつぶしをさせることができます:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
ジョシュ

@ジョシュ私はそれをもう一度試し、それが動作する場合は私の答えを変更します。昨日、VMでコマンドを実行する際に問題が発生しました。「リソースビジー」エラーが発生し、ボリュームに何も書き込まれませんでした。
クラノマス

ファイルに書き込みを行っている of=/Volumes/RAM\ Disk/random.dat場合は、大丈夫です。ディスクに書き込むof=/dev/rdisk9場合は、rootになる必要があり、マウントを解除する必要がある場合があります。(アンマウントする必要があります。そうしないと、システムが混乱します)
ジョシュ

8

はい- memory_pressureツールを使用して、システムに実際のメモリ負荷をかけます。

仮想メモリチューニングは4 GBまたはRAMがあり、-p percent_free引数は一定量のRAMを割り当てないことを認識しますが、システムをXパーセント近くに解放するため、メモリチップを削除することとは完全に類似していません。

たとえたとえたとえ不完全であっても、ワークロードが2 GBのRAMを搭載したシステムに適しているかどうかを非常にすばやく確認できるはずです。

チップを物理的に取り外すことができる場合-最初に物事をシミュレートしてベンチマークを取得し、それが正しいことを確認する必要がある場合はハードウェアの変更を行うことができます。


物理チップを削除するときに見られる主な問題は、デュアルチャネルモードも写真から削除されることです。この回答の最初のオプションは、実際のパフォーマンスの問題は使用量の増加に起因するため、より良い方法のようです。
Thebluefish

3

OSdweebの回答に追加:

El Capitanがcom.apple.Boot.plistファイルを編集できるのは、System Integrity Protocol(SIP)を無効にしている場合のみです(このスレッドを参照)。

ただし、次のコマンドを使用してブートフラグを設定できます。

sudo nvram boot-args="maxmem=2048"


2

別の解決策は、仮想マシンを使用して低RAM Macをシミュレートすることです。VMWare Fusion、Parallels、またはVirtualBox(冒険好きなら)をインストールし、その中にOS Xをインストールします。次に、コアの数、ディスクスペースの量、および(要求していたように)OS Xで使用可能なRAMの量を操作できます。 。他の2つの製品には、それぞれ30日間と14日間の試用版があります。


-1、申し訳ありません...これは良い比較ではありません。これで、仮想化されたビデオドライバー、仮想化されたI / O、およびわずかなCPUパフォーマンスヒットが得られました。私は仮想化が大好きですが、使用したいRAMが少なくてもシステムがどのように動作するかを確認したいだけなら、これは良い解決策ではありません。
ジョシュ

@Josh仮想化のわずかなパフォーマンスの低下は無視できるはずです。現代のCPUはそのようなタスクをハードウェアでサポートしているため、一部の難解な例外を除き、パフォーマンスはベアメタルに非常に近くなります。それに加えて、使用可能なメモリ量を直接制御できるだけでなく、CPU周波数、使用可能なコア、使用可能なビデオメモリ、その他のパラメータを調整することもできます。古いマシンを真にシミュレートするには、これらのオプションを使用できると便利です。OSのパフォーマンスは、使用可能なRAM以上のものです。
phyrfox

VMWare ESXiのようなエンタープライズグレードの仮想化について話しているのであれば、@ phyrfox- CPU速度についてです。Mac OS Xを実行している場合に顕著になるグラフィックスとビデオ処理のパフォーマンスヒットがあります。CPU周波数、利用可能なコア、ハードウェアなどを調整する場合、仮想化適切なソリューションであることに同意します。使用可能なRAM、およびそのユースケースでは、仮想化は適切なソリューションではないと考えています。
ジョシュ

-1

RAMを取り出すには、次のことができます。

MacbookがAluminiumの場合は、底を全部取り外せば、RAMは真ん中にあるはずです。

白い場合は、角の小さなコンパートメントを取り出して、ラムにそのようにアクセスします。

ソース:https : //support.apple.com/en-ca/HT1651


1
彼はラムを物理的に取り外さずに無効化するよう要求することに注意してください。
スポットライト

これは...私は何を意味するのかであると彼はまだ彼の問題を解決することができ
Kachamenus

2
しかし、質問は「チップを物理的に取り外さずに一時的にRAMを無効にする方法はありますか?」だったので、これは質問に答えません
ジョシュ

ごめんね。ラムを取り出す方法があると言っていました。
Kachamenus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.