# mount
/dev/ad0s3a on / (ufs, local, soft-updates)
devfs on /dev (devfs, local)
/dev/ad0s3d on /usr (ufs, local, noatime, soft-updates)
/dev/ad0s3e on /ports (ufs, local, noatime, soft-updates)
/ports/db/pkg on /var/db/pkg (nullfs, local, noatime)
/ports/X11R6 on /usr/X11R6 (nullfs, local, noatime)
/ports/local on /usr/local (nullfs, local, noatime)
/ports/compat on /usr/compat (nullfs, local, noatime)
linprocfs on /usr/compat/linux/proc (linprocfs, local)
/dev/md2 on /tmp (ufs, asynchronous, local)
/dev/da0s2.eli on /mnt/nfs (ufs, local, read-only)
# top
last pid: 760; load averages: 0.24, 0.30, 0.14 up 0+00:02:51 00:13:52
42 processes: 2 running, 40 sleeping
CPU states: 0.6% user, 0.0% nice, 0.6% system, 0.0% interrupt, 98.8% idle
Mem: 30M Active, 21M Inact, 31M Wired, 18M Cache, 21M Buf, 378M Free
Swap: 1024M Total, 1024M Free
# dmesg
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Mobile Intel(R) Celeron(R) CPU 2.40GHz (2394.01-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0xf29 Stepping = 9
...
real memory = 519372800 (495 MB)
avail memory = 498860032 (475 MB)
...
ad0: 76319MB at ata0-master UDMA100
TMPDIR や md-swap /tmp などのほとんどは、起動時に既に設定されているので、md-swap を割り当てるだけ。
# mdconfig -a -t swap -s 1g
md3
# newfs -U /dev/md3
/dev/md3: 1024.0MB (2097152 sectors) block size 16384, fragment size 2048
using 6 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 376512, 752864, 1129216, 1505568, 1881920
# mount /dev/md3 /ports/tmp
# df /ports/tmp
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md3 1012974 4 931934 0% /ports/tmp
WRKDIRPREFIX に md-swap を当てる。いくつかの ports を入れ直してみる。
# portupgrade -nf /var/db/pkg/linux_base-rh-7.3
...
# time portupgrade -f -w -W /var/db/pkg/linux_base-rh-7.3
...
85.130u 39.458s 3:43.97 55.6% 151+7596k 13683+1201io 84pf+0w
# time portupgrade -f /var/db/pkg/linux-sun-jdk-1.4.2.10
113.150u 15.625s 3:08.88 68.1% 68+9686k 8921+1820io 135pf+0w
# time portupgrade -f -w -W /var/db/pkg/zip-2.31
15.990u 5.878s 0:33.70 64.8% 1341+10919k 1296+49io 5pf+0w
make extract の段階の高速化はいつ行っているのか、気が付かない程効いている。処理時間を計測した後、今回の高速化の設定を解除し、標準的なシステムに近づける。
# umount /ports/tmp
# mdconfig -d -u 3
# mount -u /usr
# mount -u /ports
# unsetenv TMPDIR
# perl -p -i -e 's/WRKDIRPREFIX/#WRKDIRPREFIX/g' /etc/make.conf
また、同じ ports をインストールしなおして、時間を計測する。
# time portupgrade -f /var/db/pkg/linux_base-rh-7.3
[Updating the pkgdb in /var/db/pkg ... - 383 packages found
(-0 +1) . done]
86.677u 42.957s 4:00.07 53.9% 156+7186k 12866+1114io 117pf+0w
# time portupgrade -f /var/db/pkg/linux-sun-jdk-1.4.2.10
[Updating the pkgdb in /var/db/pkg ... - 383 packages found
(-0 +1) . done]
119.348u 17.181s 3:00.87 75.4% 76+9263k 1958+1814io 59pf+0w
# time portupgrade -f -w -W /var/db/pkg/zip-2.31
[Updating the pkgdb in /var/db/pkg ... - 383 packages found
(-0 +1) . done]
16.443u 5.887s 0:41.10 54.3% 1337+10696k 1343+43io 5pf+0w
コマンドも含めると少々見づらいので抜粋する。
Optimized:
# time portupgrade -f -w -W /var/db/pkg/linux_base-rh-7.3
85.130u 39.458s 3:43.97 55.6% 151+7596k 13683+1201io 84pf+0w
# time portupgrade -f -w -W /var/db/pkg/linux-sun-jdk-1.4.2.10
113.150u 15.625s 3:08.88 68.1% 68+9686k 8921+1820io 135pf+0w
# time portupgrade -f -w -W /var/db/pkg/zip-2.31
15.990u 5.878s 0:33.70 64.8% 1341+10919k 1296+49io 5pf+0w
Non-Optimized:
# time portupgrade -f /var/db/pkg/linux_base-rh-7.3
86.677u 42.957s 4:00.07 53.9% 156+7186k 12866+1114io 117pf+0w
# time portupgrade -f /var/db/pkg/linux-sun-jdk-1.4.2.10
119.348u 17.181s 3:00.87 75.4% 76+9263k 1958+1814io 59pf+0w
# time portupgrade -f -w -W /var/db/pkg/zip-2.31
16.443u 5.887s 0:41.10 54.3% 1337+10696k 1343+43io 5pf+0w
この値を基に高速化率を計算する。
% dc
3 k
4 60 * 43 3 60 * + / p
1.076
3 60 * 8 3 60 * + / p
.957
41 33 / p
1.242
linux-base が 7% の高速化、linux-sun-java-1.4 は 5% 遅くなっている。zip は約 25% の高速化が出来た。
この値は、残念ながら期待を裏切るものだった。md device を物理ディスクの変わりに使うと物凄い高速化が体験できるからである。実際に seamonkey で試すと、
セコメントをする