2025/03/09(日)FreeBSD UFS2 SU+J ファイル削除はあまり速くない
どうも、I/O よりも kernel VFS 内部でのロック処理あるいは journal 処理などで時間かかってそう。
積年の /var/db/freebsd-update/files ディレクトリのファイルを削除しようとしたら思ったより時間がかかった。
時間かかるので途中で止めて time で時間を計ってみたところ、殆どが sys に時間を取られている。
もしかすると find -delete よりも xargs のほうが速いかも…?
SSD なら fsck を我慢できるので softupdate journal は不要かもしれない。
削除コマンド
root@:/var/db/freebsd-update/files# find . -mtime +365 | wc -l 468408 root@:/var/db/freebsd-update/files# find . -mtime -365 | wc -l 62895 root@:/var/db/freebsd-update/files# find . -mtime +365 -delete ^C root@:/var/db/freebsd-update/files# find . -mtime +365 | wc -l 114599 root@:/var/db/freebsd-update/files# time find . -mtime +365 -delete real 10m23.096s user 0m0.362s sys 10m21.413s root@:/var/db/freebsd-update/files#
I/O
FreeBSD の dirty buffer の定期書き出し以外では Read/Write はほぼ無し。root@:~# iostat ada4 1 | perl -pe 's/^/localtime() . " "/e' Sun Mar 9 14:58:09 2025 tty ada4 cpu Sun Mar 9 14:58:09 2025 tin tout KB/t tps MB/s us ni sy in id Sun Mar 9 14:58:09 2025 1 73 16.1 11 0.2 2 0 1 0 96 Sun Mar 9 14:58:10 2025 0 311 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:11 2025 0 173 4.0 2 0.0 1 0 50 0 49 Sun Mar 9 14:58:12 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:13 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:14 2025 0 173 4.0 2 0.0 1 0 50 0 50 Sun Mar 9 14:58:15 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:16 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:17 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:18 2025 0 173 4.0 2 0.0 1 0 50 0 50 Sun Mar 9 14:58:19 2025 0 287 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:20 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:21 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:22 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:23 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:24 2025 0 173 13.3 3 0.0 0 0 51 0 49 Sun Mar 9 14:58:25 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:26 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:27 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:28 2025 0 173 4.0 2 0.0 0 0 52 0 48 Sun Mar 9 14:58:29 2025 tty ada4 cpu Sun Mar 9 14:58:29 2025 tin tout KB/t tps MB/s us ni sy in id Sun Mar 9 14:58:29 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:30 2025 0 311 10.0 4 0.0 0 0 50 0 49 Sun Mar 9 14:58:31 2025 0 173 30.8 48 1.4 0 0 50 0 49 Sun Mar 9 14:58:32 2025 0 69 3.0 3 0.0 0 0 56 0 44 Sun Mar 9 14:58:33 2025 0 173 4.0 4 0.0 0 0 51 0 49 Sun Mar 9 14:58:34 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:35 2025 0 173 4.0 2 0.0 0 0 51 0 48 Sun Mar 9 14:58:36 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:37 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:38 2025 0 173 4.0 2 0.0 1 0 50 0 49 Sun Mar 9 14:58:39 2025 0 173 27.7 13 0.4 0 0 50 0 50 Sun Mar 9 14:58:40 2025 0 173 13.8 7358 99.2 0 0 55 0 45 Sun Mar 9 14:58:41 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:42 2025 0 173 4.0 2 0.0 1 0 50 0 49 Sun Mar 9 14:58:43 2025 0 173 4.0 2 0.0 1 0 50 0 49 Sun Mar 9 14:58:44 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:45 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:46 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:47 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:48 2025 0 173 4.0 2 0.0 0 0 50 0 49 Sun Mar 9 14:58:49 2025 tty ada4 cpu Sun Mar 9 14:58:49 2025 tin tout KB/t tps MB/s us ni sy in id Sun Mar 9 14:58:49 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:50 2025 0 311 18.0 4 0.1 0 0 50 0 50 Sun Mar 9 14:58:51 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:52 2025 0 173 4.0 2 0.0 0 0 50 0 49 Sun Mar 9 14:58:53 2025 0 375 4.0 2 0.0 0 0 51 0 48 Sun Mar 9 14:58:54 2025 0 173 4.0 2 0.0 1 0 50 0 49 Sun Mar 9 14:58:55 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:58:56 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:57 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:58:58 2025 0 173 4.0 2 0.0 0 0 50 0 49 Sun Mar 9 14:58:59 2025 0 173 4.0 2 0.0 0 0 50 0 49 Sun Mar 9 14:59:00 2025 0 173 4.0 2 0.0 0 0 52 0 48 Sun Mar 9 14:59:01 2025 0 173 4.0 2 0.0 0 0 50 0 49 Sun Mar 9 14:59:02 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:59:03 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:59:04 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:59:05 2025 0 173 13.3 6 0.1 0 0 50 0 50 Sun Mar 9 14:59:06 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:59:07 2025 0 173 4.0 2 0.0 0 0 50 0 50 Sun Mar 9 14:59:08 2025 0 173 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:59:09 2025 tty ada4 cpu Sun Mar 9 14:59:09 2025 tin tout KB/t tps MB/s us ni sy in id Sun Mar 9 14:59:09 2025 1 175 4.0 2 0.0 0 0 51 0 49 Sun Mar 9 14:59:10 2025 0 311 4.0 2 0.0 0 0 50 0 49 Sun Mar 9 14:59:11 2025 1 228 27.5 3787 101.7 0 0 44 0 56 Sun Mar 9 14:59:12 2025 6 228 20.6 3455 69.6 0 0 23 0 76 Sun Mar 9 14:59:13 2025 9 269 0.0 0 0.0 0 0 2 1 98 Sun Mar 9 14:59:14 2025 0 173 0.0 0 0.0 0 0 0 0 99 Sun Mar 9 14:59:15 2025 1 184 0.0 0 0.0 2 0 11 0 87
tunefs
softupdate, soft update journaling, trim が on。と言ってもそもそも dirty buffer 書き出しはすぐ終わっているので、古いSSDでも I/O スピードは間に合っている。
root@:/var/db/freebsd-update/files# tunefs -p / tunefs: POSIX.1e ACLs: (-a) disabled tunefs: NFSv4 ACLs: (-N) disabled tunefs: MAC multilabel: (-l) disabled tunefs: soft updates: (-n) enabled tunefs: soft update journaling: (-j) enabled tunefs: gjournal: (-J) disabled tunefs: trim: (-t) enabled tunefs: maximum blocks per file in a cylinder group: (-e) 4096 tunefs: average file size: (-f) 16384 tunefs: average number of files in a directory: (-s) 64 tunefs: minimum percentage of free space: (-m) 2% tunefs: space to hold for metadata blocks: (-k) 1600 tunefs: optimization preference: (-o) space tunefs: volume label: (-L)
対象デバイス
root@:~# camcontrol identify ada4 | head -6
pass4: <SanDisk SD6SB1M064G1022I X230600> ATA8-ACS SATA 3.x device
pass4: 150.000MB/s transfers (SATA, UDMA6, PIO 512bytes)
protocol ATA8-ACS SATA 3.x
device model SanDisk SD6SB1M064G1022I
firmware revision X230600
root@:~#
root@:~# mount | grep ssdroot
/dev/gpt/ssdroot on / (ufs, local, noatime, soft-updates, journaled soft-updates)
root@:~#
root@:~# glabel status | grep ssdroot
gpt/ssdroot N/A ada4p3
root@:~#
ちなみに開始前 /var/db/freebsd-update/files の状況
2014年からの freebsd-update の残りかすが溜まっていたようだ。2014年は FreeBSD 10 くらいなので、それからずっと freebsd-update で更新してきたという事になる。
root@:/var/db/freebsd-update/files# find . -ls | less 4333839 88640 drwxr-xr-x 2 root wheel 45338112 3月 8 18:11 . 4334257 1344 -rw-r--r-- 1 root wheel 642298 11月 19 2014 ./8417c2444df4aa495c9ee7e953b9e24ff91a552b512ad7041ced4724f6482e63.gz 4334258 104 -rw-r--r-- 1 root wheel 51255 11月 19 2014 ./e43dbfcf12eb2d71aa998cb17b4e67bd5a52f40482524049a19ceb400019b739.gz 4333840 8 -rw-r--r-- 1 root wheel 1578 8月 23 2014 ./8d9d85c2c6d24a47cadc45dc1074d5c09ac1bfbda719598e28e84c20c4e3ffaf.gz 4333841 160 -rw-r--r-- 1 root wheel 79103 8月 23 2014 ./a9cda8f4ae23244290ad6a939b8a4c4ac28a353e166645948b0aef5cb943eac3.gz 4333842 80 -rw-r--r-- 1 root wheel 37036 8月 23 2014 ./a449f23323e5fab78d05cbd2477a744a31cacc8274d658ce45ab77772c96545a.gz
2006/08/29(火)gcc 3.4.6
追記
RELENG_6 に MFC されますた。2006/08/22(火)pgrep/pkill moved to /bin
それよりも ps コマンドでヘッダ行を表示しないオプションがほしい…