2007年08月
とても綺麗です。
The Most Beautiful Supercomputer in the World
via ヨーロッパ最強のスーパーコンピュータは礼拝堂内に設置されている - GIGAZINE
- Barcelona Supercomputing Center - Ronald Halbe
- Barcelona Supercomputing Center - Photo and video gallery
- The Ban Clan -> This is the coolest looking supercomputer ever
Barcelona Supercomputing Center - System Architecture に見取り図やシステム詳細があります。
見取り図で見てシステム左側の回転扉?の前あたりにオペレーション用のシステムがあるようです。
もちろん、通常使用するのはネットワーク経由だから、システム起動停止等のメンテナンス時に使用するのでしょうね。
日本のサーバ室には、コンピュータに何かのお札が貼ってあったり、神棚があったりするのをたまに見ますが、礼拝堂の中にあるというのはすごいですね。
このブログの関連記事
みなさん、Linuxシステムの負荷テストには何を使っているのでしょうか?
ここでの負荷テストは、Webサーバやデータベース等の特定アプリケーション用ではなく、システム全体の安定性テストとして、CPUやメモリに負荷をかけるようなものです。
ワンライナーでやってしまう場合もあるかと思います。
例えば、perl -e 'while (1) { $i++ }' とかでもいいみたいです。
簡単な負荷テストツールがあるのか少し探してみたところ、stress というものがありました。
stress project page
早速、DAG: stress RPM packages for Red Hat, CentOS and Fedora からパッケージをダウンロードして試してみました。
例えば、以下のような感じで簡単に負荷をかけることができます。
メモリの量によっては、swapしてハングしたかのようになってしまうので注意してください。
stress --cpu 4 --timeout 10m stress --cpu 2 --vm 2 --vm-bytes 128M --timeout 1h stress --vm 4 --vm-bytes 3G --vm-keep --timeout 5m
Exampleには他にもいろいろなパターンがあります。
その他のストレステストとして、
Linux Test Project
の LTP というツールがあります。
これも試してみたので、後で記事を書きます。
[2007年 9/1追記]
しげふみメモ:Linux Test Projectのツールでカーネルテスト
前回の記事で netdumpでクラッシュダンプ取得するところまでできましたが、ちょっと補足。
ダンプ解析
取得したカーネルのダンプファイルの解析には kernel-debuginfo パッケージが必要。
crashコマンドを使うようですが、まだ試したことはありません。
このあたりはまた今度やってみます。
crashコマンドの使い方については、以下の記事にある資料が参考になります。
路地裏 ソース解読研究所: 岡山カーネル勉強会
メール設定
dump開始時と終了時にメールするようにしました。
netdump-serverの /usr/share/doc/netdump-server-x.x.x/example_scripts 以下から netdump-crash と netdump-reboot を /var/crash/scripts/ にコピーして ADDRESS 行のメールアドレスを変更。
認証について
通常の設定では、サーバで netdumpユーザのパスワードを設定し、クライアントで service netdump propagate を実行してDSA公開鍵を登録します。
クライアントで service netdump start を実行すると、以下のような流れで netdump moduleがロードされるようです。
ランダムなマジックナンバーを生成。
マジックナンバーを netdump-serverに sshで送信。
マジックナンバーを netdump moduleに引数として渡して modprobeを実行。
この後、netdump moduleが netdump-serverとやりとりする時に、このマジックナンバーを使用するようです。
セキュアな環境では、このような認証無しで netdumpできるように設定することもできます。
クライアントの /etc/sysconfig/netdump の NETDUMPKEYEXCHANGE=none を有効にする。
サーバでは、netdump-serverを --secure 0 で起動する必要があるため、/etc/netdump.conf を作成し、内容を secure = 0 とする。
とりあえず、これくらいでしょうか。
クラッシュダンプを取得しなくてはならないようなトラブルが起こらない事を祈ります。
Linuxカーネルのクラッシュダンプを取るには、Red Hat系だと diskdump と netdump があると思います。
ちなみに、RHEL5(Red Hat Enterprise Linux 5)だと kexec を使った kdump もありますし、SLES(SUSE LINUX Enterprise Server)だと LKCD が標準のようです。
クラッシュダンプをネットワーク上のサーバに保存する netdump を試してみたので、メモしておきます。
ローカルディスク上に保存する diskdump も試したのですが、システムディスクは swap も含めて全て md でミラーリングする予定です。 diskdump では mdデバイスには保存できないようだし、ダンプ用に専用パーティションを設定しておくのももったいない。ということで、netdumpになりました。
サーバ、クライアントとも RHEL4 U4 で試しました。
もちろん、CentOSでも同じようにできるはずです。
例として、サーバIP:192.168.1.1 クライアントIP:192.168.1.20 とします。
パッケージ確認。
[server]# rpm -q netdump-server netdump-server-0.7.16-2netdumpユーザのパスワード設定。
netdump-serverがインストールされていれば、netdumpユーザが作成されていますが、パスワードがロックされているので設定。
[server]# passwd netdumpnetdumpサーバーの起動。
[server]# service netdump-server startシステム起動時に自動的に起動させる設定。
[server]# chkconfig netdump-server onnetdumpクライアント設定
パッケージ確認。
[client]# rpm -q netdump netdump-0.7.16-2/etc/sysconfig/netdump を変更。
ダンプ用のネットワークとして eth1 を使う場合は DEV=eth1 とする。
# DEV= NETDUMPADDR=192.168.1.1DSA公開鍵の登録。
[client]# service netdump propagate netdump@192.168.1.1's password:netdumpクライアントの起動。
[client]# service netdump startシステム起動時に自動的に起動させる設定。
[client]# chkconfig netdump on/etc/sysctl.conf を変更して、マジックSysRqキーを有効にし、ハング時に [Alt] + [SysRq] + [c] でダンプできるようにする。
kernel.sysrq = 1設定を読み込み。または echo 1> /proc/sys/kernel/sysrq で設定。
[client]# sysctl -p /etc/sysctl.confダンプテスト
netdumpクライアントが起動していれば、サーバの /var/crash/ 以下に <クライアントipアドレス>-YYYY-MM-DD-hh:mm といったディレクトリが作成されているはずです。
このディレクトリの log ファイルにコンソールに出力されたメッセージが記録されます。
まず、クラッシュさせる前に、簡単な動作確認。
クライアントで echo h> /proc/sysrq-trigger を実行して、サーバのログに以下のように記録されていればOKでしょう。
SysRq : HELP : loglevel0-8 reBoot Crash tErm kIll saK showMem powerOff showPc unRaw Sync showTasks Unmount shoWcpus
次に実際にダンプさせてみます。
コマンドでは、echo c> /proc/sysrq-trigger ですが、実際にハングした場合は、コマンドは入力できないので、キーボードから [Alt] + [SysRq] + [c] でテストします。
SysRqキーについては、以下が参考になります。
アジアのペンギン: SysRqキーの使用方法
例えば、16GBメモリのシステムで試したところ、以下のような感じでした。
[server]# ls -lh /var/crash/192.168.1.20-2007年08月16日-20:33 total 16G -rw------- 1 netdump netdump 74K Aug 16 20:44 log -rw------- 1 netdump netdump 18G Aug 16 20:44 vmcore何回か試したところ、GbE接続で約4分〜7分ほどで完了しました。
もちろん、システムや環境によって必要な時間は変わってくるので一概には言えませんが。
これで、netdumpでクラッシュダンプを取得するところまでできました。
長くなったので、後で別エントリで補足したいと思います。
[2007年 8/25追記]
しげふみメモ:netdumpでクラッシュダンプ取得の補足
4797338261
しげふみ