やはり ggate に性能差は鬼門2009年02月26日 05時13分00秒

現在、ggated を遅いサーバで、ggatec を速いノート型で使っている。約 8 年の差で、その性能差は恐らく十倍を越えていてもおかしくないと思う。

以前から、そういった性能差の顕著な構成での不安定さは、何度か述べてきた。それが -onoatime を指定しないで、mount すると更に頻繁に通信が止まってしまう。

atime は最終アクセス時間を示す。最終変更時刻の mtime は比較的役に立つが、atime は見ても参考にならないことが多い。atime を更新するのに余計な I/O が発生するので、それを抑える為に、ここ数年来 mount に -onoatime を必ず付けている。

しかし、今回付けるのを忘れてしまった。そうしたら通信の止まること止まること。全然、進まないので mount -u -onoatime でやり直した。どこかに問題は潜んでいるみたいだが、一筋縄ではいかない。

clang/llvm can compile booting FreeBSD kernel2009年02月26日 07時26分24秒

[ANNOUNCE]: clang/llvm can compile booting FreeBSD kernel on i386/amd64 と FreeBSD-current に投稿された。FreeBSD のカーネルが gcc 以外のコンパイラで動作するとの報告だ。冒頭部を訳す。

Clang is a new frontend for C-like languages for LLVM. It's modern, BSD licensed compiler that produces roughly the same code quality or better as GCC. It's still in its development phase but quite mature. It includes static analyzer as well.
clang は C 言語に似た言語を扱える LLVM のフロントエンドだ。gcc と同等上のコードを生成できる、新生のコンパイラだ。まだ、開発の途中だが随分と安定してきた。静的解析のツールも付属している。
And yes, it can compile FreeBSD kernel that actually boots and works. Not as stable as GCC yet but the Clang team is working on that. The userland needs some more work but a lot works already.
今回 FreeBSD のカーネルを、これで生成し起動するのに成功した。まだ、gcc ほどは安定していないが、 clang の開発人はそれに向けて修正をしている。ユーザランド側は、まだまだ作業が必要だ。

面白そうだが 8-CURRENT では動かない USB 機器があるので、その報告の方を優先しなければ。

freebsd-update from 7.0 to 7.12009年02月26日 13時56分02秒

既に、FreeBSD 7.1-RELEASE が出て二ヵ月ぐらい経つが、freebsd-update で更新してみた。実験環境用に作った 7.0-RELEASE 環境を使った。

リリースアナウンスメントにも書かれている通りで、行程自体は少ない。


$ freebsd-update upgrade -r 7.1-RELEASE
$ freebsd-update install
$ shutdown -r now
$ freebsd-update install
$ shutdown -r now

以下のは実際に行なった時の出力になる。ただし更新されるファイル名を全て出すと、数千行をかるく越えるので ... で省略した。いれたまま何も触っていない素の環境なので、設定に関わる更新はものすごく簡単に終わっている。


$ freebsd-update upgrade -r 7.1-RELEASE
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching public key from update1.FreeBSD.org... done.
Fetching metadata signature for 7.0-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic world/base world/dict world/doc world/games world/info
world/manpages

The following components of FreeBSD do not seem to be installed:
src/base src/bin src/cddl src/compat src/contrib src/crypto src/etc
src/games src/gnu src/include src/krb5 src/lib src/libexec src/release
src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin
src/usbin world/catpages world/proflibs

Does this look reasonable (y/n)? y

Fetching metadata signature for 7.1-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 7.0-RELEASE for merging... done.
Preparing to download files... done.
Fetching 11584 patches.....10....20....30....40....50....60....70....80....90...
.100....110....120....130....140....150....160....170....180....190....200....21
0....220....230....240....250....260....270....280....290....300....310....320..
..330....340....350....360....370....380....390....400....410....420....430....4
...
0....11260....11270....11280....11290....11300....11310....11320....11330....113
40....11350....11360....11370....11380....11390....11400....11410....11420....11
430....11440....11450....11460....11470....11480....11490....11500....11510....1
1520....11530....11540....11550....11560....11570....11580.. done.
Applying patches... done.
Fetching 1193 files... done.
Attempting to automatically merge changes in files... done.

The following changes, which occurred between FreeBSD 7.0-RELEASE and
FreeBSD 7.1-RELEASE have been merged into /etc/master.passwd:
--- current version
+++ new version
@@ -1,6 +1,6 @@
-# $FreeBSD: src/etc/master.passwd,v 1.40 2005/06/06 20:19:56 brooks Exp $
+# $FreeBSD: src/etc/master.passwd,v 1.40.18.1 2008/11/25 02:59:29 kensmith Exp 
$
 #
 root:$1$kP4JK3hU$ovxAgD8IQ9tkj41pr7u8q1:0:0::0:0:Charlie &:/root:/bin/csh
 toor:*:0:0::0:0:Bourne-again Superuser:/root:
 daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin
 operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
Does this look reasonable (y/n)? y

The following files will be removed as part of updating to 7.1-RELEASE-p3:
/etc/rc.d/kernel
/usr/include/netgraph/atm/ng_atmpif.h
/usr/sbin/pkg_check
/usr/sbin/pkg_sign
/usr/share/doc/de_DE.ISO8859-1/books/handbook/portsnap.html
...
/usr/share/doc/nl_NL.ISO8859-1/books/handbook/mac-examplesandbox.html

The following files will be added as part of updating to 7.1-RELEASE-p3:
/boot/gptboot
/boot/kernel/cmx.ko
/boot/kernel/cmx.ko.symbols
/boot/kernel/cxgb_t3fw.ko
...
/boot/kernel/uslcom.ko
/boot/kernel/uslcom.ko.symbols
/boot/pmbr
/etc/ddb.conf
/etc/rc.d/ddb
/etc/rc.d/rfcomm_pppd_server
/lib/libctf.so.1
/lib/libdtrace.so.1
/sbin/ddb
/usr/bin/cpuset
...
/usr/share/man/man4/textdump.4.gz
/usr/share/man/man4/uslcom.4.gz

The following files will be updated as part of updating to 7.1-RELEASE-p3:
/.cshrc
/.profile
/COPYRIGHT
/bin/[
/bin/cat
/bin/chflags
...
/bin/unlink
/bin/uuidgen
/boot/beastie.4th
/boot/boot
/boot/boot0
/boot/boot0sio
/boot/boot2
/boot/defaults/loader.conf
/boot/device.hints
/boot/frames.4th
/boot/kernel/3dfx.ko
...
/etc/rc.d/random
/etc/rc.d/rarpd
/etc/rc.d/resolv
...
/etc/sysctl.conf
/etc/syslog.conf
/etc/ttys
/lib/geom/geom_cache.so
/lib/geom/geom_concat.so
...
/rescue/unlink
/rescue/vi
/rescue/whoami
/rescue/zcat
/root/.cshrc
/root/.k5login
/root/.login
/root/.profile
/sbin/adjkerntz
/sbin/atacontrol
...
/sbin/zfs
/sbin/zpool
/usr/bin/CC
/usr/bin/Mail
/usr/bin/addftinfo
...
/usr/share/zoneinfo/zone.tab
/var/named/etc/namedb/master/empty.db
/var/named/etc/namedb/master/localhost-forward.db
/var/named/etc/namedb/master/localhost-reverse.db
/var/named/etc/namedb/named.conf
/var/named/etc/namedb/named.root
/var/yp/Makefile.dist
$ freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
これで一旦再起動。以下に続く。
$ /usr/sbin/freebsd-update install
Installing updates... done.
再起動の前と後を合わせると pid が二順するくらいのプロセスが生成された様だった。大量のプロセスを生成するので qemu での実験は途中で諦め、AMD64 X2 2GHz でおよそ三十分掛かった。

実は、freebsd-update は処理効率の悪い部分が幾つかある。次のリリースが出るまでに、そこらへんが修正されれば、かなり速くなるのだが。