しげふみメモ


おもにIT関連について、気になったことや試してみたことをメモしておきます。
Linux, Firefox, Thunderbird, Blog, Google, Amazon, Affiliate, iPod, PC, English ...

2007年08月

世界で最も美しいスパコン

とても綺麗です。
The Most Beautiful Supercomputer in the World
via ヨーロッパ最強のスーパーコンピュータは礼拝堂内に設置されている - GIGAZINE

その他の写真は以下

Barcelona Supercomputing Center - System Architecture に見取り図やシステム詳細があります。

見取り図で見てシステム左側の回転扉?の前あたりにオペレーション用のシステムがあるようです。
もちろん、通常使用するのはネットワーク経由だから、システム起動停止等のメンテナンス時に使用するのでしょうね。

日本のサーバ室には、コンピュータに何かのお札が貼ってあったり、神棚があったりするのをたまに見ますが、礼拝堂の中にあるというのはすごいですね。

このブログの関連記事

stressでLinuxシステムの負荷テスト

みなさん、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でクラッシュダンプ取得の補足

前回の記事で 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 とする。

とりあえず、これくらいでしょうか。
クラッシュダンプを取得しなくてはならないようなトラブルが起こらない事を祈ります。

netdumpでクラッシュダンプ取得

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 とします。

netdumpサーバ設定
パッケージ確認。
[server]# rpm -q netdump-server
netdump-server-0.7.16-2
netdumpユーザのパスワード設定。
netdump-serverがインストールされていれば、netdumpユーザが作成されていますが、パスワードがロックされているので設定。
[server]# passwd netdump
netdumpサーバーの起動。
[server]# service netdump-server start
システム起動時に自動的に起動させる設定。
[server]# chkconfig netdump-server on
netdumpクライアント設定
パッケージ確認。
[client]# rpm -q netdump
netdump-0.7.16-2
/etc/sysconfig/netdump を変更。
ダンプ用のネットワークとして eth1 を使う場合は DEV=eth1 とする。
# DEV=
NETDUMPADDR=192.168.1.1
DSA公開鍵の登録。
[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キーの使用方法

ダンプが始まると、サーバの /var/crash/<クライアントIPアドレス>-YYYY-MM-DD-hh:mm 以下に vmcore-incomplete が作成され、ダンプが完了すると vmcore となります。
例えば、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でクラッシュダンプ取得の補足

Linuxカーネル2.6解読室 (単行本)
4797338261
エンジニア転職情報
このBlog内を検索
プロフィール

しげふみ

連絡先
連絡先
RSSリーダーに登録
Subscribe with livedoor Reader

あわせて読みたい
人気blogランキング

  • ライブドアブログ