/var/tmp/portageをtmpfsにする
概要
非ルートユーザでequery
だのemerge -p
だのemerge --info
を行うとPermission errorがわんさか出て,パソコンの前で叫びつつ,ひたすらググっていた時,次の記事を見つけました.*1.
portageのテンポラリディレクトリをtmpfsにしてみた,とは一体.
これを行うことでemerge
が高速になるとかならないとか,この記事では微微たる効果しか出なかったようですが,なんか面白そうなのでやってみました.
tmpfsとは
man tmpfs
より引用.
The tmpfs facility allows the creation of filesystems whose contents reside in virtual memory. Since the files on such filesystems typically reside in RAM, file access is extremely fast.
つまり,通常はRAM上にファイルシステムを構築するからSSDにアクセスするより高速らしい.
Gentooのtmpfs/ja - Gentoo WikiのWarningより引用.
(RAM のような)揮発性メモリーはシステムがシャットダウン、再起動、あるいはクラッシュするとファイルを維持できません。名前から明らかなように、tmpfs は短命なファイルだけのために作成されたものです。tmpfs には復元可能なファイルだけを保存するのが最良の方法です。
まあRAMに構築するから,そりゃシャットダウンだのクラッシュだのすれば消えるよね.でもPortageと組み合わせれば,コンパイル中に出来たファイルは消えても問題ないし,良い組み合わせと言えるかもしれない.
必要以上にメモリが専有されないのは素晴らしい.
環境
$ uname -a Linux gentoo_desktop 5.4.6-gentoo #1 SMP Mon Dec 23 22:00:56 JST 2019 x86_64 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz GenuineIntel GNU/Linux $ free -h total used free shared buff/cache available Mem: 62Gi 2.0Gi 56Gi 242Mi 3.8Gi 59Gi Swap: 0B 0B 0B
実行方法
実際に同じことをやろうとする場合,まずはGentooWikiに従ってください.
/etc/fstab
に追記
fstabなんてGentooのインストール以降多分一度も弄っていない気がする.
tmpfs /var/tmp/portage tmpfs uid=portage,gid=portage,mode=755,noatime 0 0
サイズは省略しました.GentooWikiに記載されていますが,省略するとメモリの半分となります.
uid
,gid
そしてmode
について,man tmpfs
より引用.
Set the initial group ID of the root directory.
uid=uid (since Linux 2.5.7)
Set the initial user ID of the root directory.
mode=mode
Set initial permissions of the root directory.
/var/tmp/portage/
はportageグループのportageというユーザが扱うのでuid=portage,gid=portage
というわけ.mode
はよく見る755.そして,noatime
を用いることで,inodeのアクセス時間を更新しないようにし,パフォーマンスを高めます.
mount
コマンドの実行
/etc/fstab
に追記して保存したら,次のコマンドを実行します.
$ sudo mount /var/tmp/portage
結果
tmpfsにする前 | tmpfsにしたあと |
---|---|
17分25秒 | 17分29秒 |
変わらない,変わらない.
でも,SSDの書き込み回数は減るからメリットは多分あるよね.
この記事でも言及されていたけど,今使用しているパソコンもemerge
の時にはCPU使用率が100%近くなる.結局これが一番改善すべき点なんだよなあ.
感想
何も変わらなかったけど面白いことが出来たのでヨシ!
参考文献
portageのテンポラリディレクトリをtmpfsにしてみた on Gentoo - epian-wiki