Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@yassy

MacOSX 簡単にブラウザのキャッシュをRamDiskにあてる

以前、TmpDiskを使ったRamDiskの適用方法を投稿したのですが、
最近になって
・Terminal のコマンドから一発でシンプルに作成可能な事
・AutoMatorなんて使わなくても簡単に起動登録できる事
がわかりました。

※実行は自己責任にてお願いします
※2021/4/13 APFSについての記述とベンチマーク例を追加しました

目的

ブラウザのキャッシュをRamDiskにあてることで、
SSDへのアクセスが減り、
以下のことが期待できます。

  • SSDの寿命が伸びる
  • 動作環境への負荷が減る
  • GoogleChromeのキャッシュを割り当てたら、動作が快適に感じるかも?

とはいえ、どちらも体感は変わらないです。

システムのメモリをディスクとして割り当てる為、
メモリに余裕のある環境が対象となります。

測定

一例ですが、
単純な数値として、AmorphousDiskMark 3.1 で SSD と RamDisk を
それぞれ測定すると、こんな感じになります。

※ MacMini Late2020
※ 左から、SSD、RamDisk(HFS+)、RamDisk(APFS)
Screen Shot 2021-04-13 at 2.38.38.png
※ 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_NAMERAMDisk とかで、わかりやすくて良いと思いますが、
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に割り当てています。
*ブラウザのキャッシュフォルダの場所は、バージョンによって変わる可能性があります

setup-mac-ramdisk.command
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 より、
ユーザーとグループ を選択。

ログイン項目 タブの + ボタンを押して
1. で作成したスクリプトファイル (ここではsetup-mac-ramdisk.command) を選択します。

RamDisk Command.png

そうすると、再起動後は下のようなターミナルが起動されるようになります。
起動時.png

大体すぐに終わる印象ですが、
[プロセスが完了しました] と表示されたら、
RAMDiskの準備は完了しているので、そのターミナルは閉じて大丈夫です。

RAMDisk に割り当てる

対象が GoogleChrome くらいしかなくて、ちょっと残念な気もするので、
スクリーンショットの保存先でも変えてみます。

# スクリーンショットの保存先を、RAMDiskに割り当てる
defaults write com.apple.screencapture location /Volumes/RAMDisk;killall SystemUIServer

このコマンドをTerminalで一度実行すれば、適用されます。

9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
yassy

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?