備忘録やめた

備忘録として使用していたけどやめた.このブログに載せてあるコードのライセンスは別途記載がない限りWTFPL OR NYSLです.

/var/tmp/portageをtmpfsにする

概要

非ルートユーザでequeryだのemerge -pだのemerge --infoを行うとPermission errorがわんさか出て,パソコンの前で叫びつつ,ひたすらググっていた時,次の記事を見つけました.*1

epian-wiki.appspot.com

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にアクセスするより高速らしい.

Gentootmpfs/ja - Gentoo WikiのWarningより引用.

(RAM のような)揮発性メモリーはシステムがシャットダウン、再起動、あるいはクラッシュするとファイルを維持できません。名前から明らかなように、tmpfs は短命なファイルだけのために作成されたものです。tmpfs には復元可能なファイルだけを保存するのが最良の方法です。

まあRAMに構築するから,そりゃシャットダウンだのクラッシュだのすれば消えるよね.でもPortageと組み合わせれば,コンパイル中に出来たファイルは消えても問題ないし,良い組み合わせと言えるかもしれない.

ちなみに,GentooWikiの使い方曰く,

tmpfs はこのメモリーをあらかじめ確保するのではなく、必要なメモリーのみを割り当てることに注意してください。

必要以上にメモリが専有されないのは素晴らしい.

環境

$ 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に記載されていますが,省略するとメモリの半分となります.

uidgidそしてmodeについて,man tmpfsより引用.

gid=gid (since Linux 2.5.7)

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

tmpfs/ja - Gentoo Wiki

Portage TMPDIR on tmpfs - Gentoo Wiki

fstab - ArchWiki

*1:ちなみにこれについては解決しました