以前、TmpDiskを使ったRamDiskの適用方法を投稿したのですが、
最近になって
・Terminal のコマンドから一発でシンプルに作成可能な事
・AutoMatorなんて使わなくても簡単に起動登録できる事
がわかりました。
※実行は自己責任にてお願いします
※2021/4/13 APFSについての記述とベンチマーク例を追加しました
目的
ブラウザのキャッシュをRamDiskにあてることで、
SSDへのアクセスが減り、
以下のことが期待できます。
- SSDの寿命が伸びる
- 動作環境への負荷が減る
- GoogleChromeのキャッシュを割り当てたら、動作が快適に感じるかも?
とはいえ、どちらも体感は変わらないです。
システムのメモリをディスクとして割り当てる為、
メモリに余裕のある環境が対象となります。
測定
一例ですが、
単純な数値として、AmorphousDiskMark 3.1 で SSD と RamDisk を
それぞれ測定すると、こんな感じになります。
※ MacMini Late2020
※ 左から、SSD、RamDisk(HFS+)、RamDisk(APFS)
※ QD = QueueDepth (一度に発行するコマンド数)
RamDisk を作成する
これは、それぞれ一行で実現可能でした。
参考サイト
# HFS+ の場合
diskutil erasevolume HFS+ ${DISK_NAME} `hdiutil attach -nomount ram://${DISK_SIZE}`
# APFS の場合
diskutil partitionDisk `hdiutil attach -nomount ram://${DISK_SIZE}` 1 apfs ${DISK_NAME} ${DISK_SIZE}
DISK_NAME は RAMDisk とかで、わかりやすくて良いと思いますが、
DISK_SIZE は 参考サイトにあるように、以下のようになります。
|DISK_SIZE|数値|
|:-:|:-:|:-:|
|512MB|1048576|
|1GB|2097152|
|2GB|4194304|
# 2GBのRAMDiskを作成する (HFS+)
diskutil erasevolume HFS+ RAMDisk `hdiutil attach -nomount ram://4194304`
# 2GBのRAMDiskを作成する (APFS)
diskutil partitionDisk `hdiutil attach -nomount ram://4194304` 1 apfs RAMDisk 4194304
起動時設定の登録
再起動後も、自動でRAMDiskが有効になるようにします。
1.シェルスクリプトの作成
以下のようなスクリプトを作成します。
この例では、GoogleChromeのキャッシュをRAMDiskに割り当てています。
*ブラウザのキャッシュフォルダの場所は、バージョンによって変わる可能性があります
DISK_SIZE=4194304
DISK_NAME=RAMDisk
# create and mount RAMDisk
# HFS+
diskutil erasevolume HFS+ ${DISK_NAME} `hdiutil attach -nomount ram://${DISK_SIZE}`
# APFS
# diskutil partitionDisk `hdiutil attach -nomount ram://${DISK_SIZE}` 1 apfs ${DISK_NAME} ${DISK_SIZE}
# create links to RAMDisk
function symbolic_link(){
rm -rf "$1"
rm -rf "$2"
mkdir -p "$2"
ln -s "$2" "$1"
}
# Chrome_Cache
SRC=${HOME}/Library/Caches/Google/Chrome
DST=/Volumes/${DISK_NAME}/Caches/Chrome
symbolic_link "${SRC}" "${DST}"
2.ログイン項目に登録
作成したスクリプトには、おそらく権限を与えておく必要があります。
chmod 744 setup-mac-ramdisk.command
System Preferences より、
ユーザーとグループ を選択。
ログイン項目 タブの + ボタンを押して
- で作成したスクリプトファイル (ここではsetup-mac-ramdisk.command) を選択します。
そうすると、再起動後は下のようなターミナルが起動されるようになります。
大体すぐに終わる印象ですが、
[プロセスが完了しました] と表示されたら、
RAMDiskの準備は完了しているので、そのターミナルは閉じて大丈夫です。
RAMDisk に割り当てる
対象が GoogleChrome くらいしかなくて、ちょっと残念な気もするので、
スクリーンショットの保存先でも変えてみます。
# スクリーンショットの保存先を、RAMDiskに割り当てる
defaults write com.apple.screencapture location /Volumes/RAMDisk;killall SystemUIServer
このコマンドをTerminalで一度実行すれば、適用されます。