macOS TahoeでSafariとChromeのブラウザのキャッシュをRam Diskに設定する
Big Surの時にもやっていたことはあるのですが、今更またブラウザのキャッシュをRam Diskに設定することにしました。
Retina 5KのiMacを買ってから、もう5年近くも経つのですね。時の流れが速くて恐ろしいです。
メモリを64GBにしていたので全然メモリ不足などもなく、転職して自宅のMacで作業することも減ったため、まだまだ現役だと思っていましたがいつ壊れてもおかしくないですね。
Intel Mac、すごい便利でしたが、そろそろArmにしないとだめですかね。メモリ高騰の影響もMacにあるのかわかりませんが…。
さて、表題に戻ります。
最近はMacでブラウザぐらいしか見ていないので、メモリも余りまくっているので、Ram Diskに回そうと数年ぶりに思い立ちました。
いつからサポートしているのかは調べていませんが、Tahoeではtempfsが使用できるようです。
TmpDiskというRam Diskを作成する便利なツールで、tempfs、APFS、HFS+でベンチマークで比較してみたところ、tempfsが爆速、APFSはそれなり、HFS+はランダムが激遅、という感じでした。
というわけでtempfsを今回は採用します。
tempfs、APFS、HFS+のいずれも、実使用メモリしか使用しないようになっていました。
大きいサイズを割り当てても安心です。
余談ですが、macOSのtempfsはファイルサイズ制限はないようなのですが、Finderでtempfsへコピーする場合は1G程度が限界のようでした。FAT16あたりと誤判定されているのでしょうか?
ターミナルでのコピーや、アプリケーションでの利用は大丈夫なようです。
また、Safariのキャッシュですが、Ram DiskをBig Surの時の”~/Library/Containers/com.apple.Safari/Data/Library/Caches”にマウントすると、Safariが起動しなくなります。OSのチェックが厳しくなったようです。
Tahoeでは一つ下の階層の”~/Library/Containers/com.apple.Safari/Data/Library/Caches/com.apple.Safari”へマウントするのが正解です。
TmpDiskは何もしないと上記のコンテナディレクトリの中にマウントすることはできないのですが、
フルディスクアクセス(FDA)を有効にすればコンテナディレクトリの中にもtmpfsが作成可能となりますので、この後のややこしいことはしなくて大丈夫です。
ただ、なぜかTmpDiskはtmpfsだとFinderに非表示にしてくれません。
Finderにマウントされたtmpfsを表示したくない場合はこの後の作業でマウントする必要があります。
なお、通常はログイン時の自動処理はLaunchAgentsをする場合が多いと思いますが、SandBox下の「~/Library/Containers/」配下へのアクセスにはFDAが必要ですが、FDAをLaunchAgentsに対して許可できないため、Automatorを利用することにしました。
- Automatorで新規アプリケーションを作成
- 「シェルスクリプトを実行」で、以下の内容を追加
----------------
#!/bin/zsh
set -eu
SIZE=8G
#Safari
CACHE_PATH=~/Library/Containers/com.apple.Safari/Data/Library/Caches/com.apple.Safari
rm -rf "${CACHE_PATH}"
mkdir -p "${CACHE_PATH}"
sudo mount_tmpfs -o nobrowse -s "${SIZE}" "${CACHE_PATH}"
#Chrome
CACHE_PATH=~/Library/Caches/Google/Chrome
rm -rf "${CACHE_PATH}"
mkdir -p "${CACHE_PATH}"
sudo mount_tmpfs -o nobrowse -s "${SIZE}" "${CACHE_PATH}"
----------------
- 「tmpfs_cache.app」として自分のアプリケーションフォルダ等に保存
- システム設定のプライバシーとセキュリティで作成したappにFDAを許可
- システム設定の一般>ログイン項目でログイン時に開くに追加
df -h
----------------
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s4s1 466Gi 11Gi 296Gi 4% 453k 3.1G 0% /
devfs 223Ki 223Ki 0Bi 100% 772 0 100% /dev
/dev/disk1s5 466Gi 2.7Gi 296Gi 1% 2.9k 3.1G 0% /System/Volumes/Preboot
/dev/disk1s7 466Gi 20Ki 296Gi 1% 0 3.1G 0% /System/Volumes/VM
/dev/disk1s3 466Gi 3.8Mi 296Gi 1% 36 3.1G 0% /System/Volumes/Update
/dev/disk1s1 466Gi 23Gi 296Gi 8% 258k 3.1G 0% /System/Volumes/Data
map auto_home 0Bi 0Bi 0Bi 100% 0 0 - /System/Volumes/Data/home
tmpfs 4.0Gi 4.0Ki 4.0Gi 1% 3 1.0M 0% /Users/user/Library/Containers/com.apple.Safari/Data/Library/Caches/com.apple.Safari
tmpfs 4.0Gi 4.0Ki 4.0Gi 1% 3 1.0M 0% /Users/user/Library/Caches/Google/Chrome
----------------