追記
元記事はDBサーバだったようですね。読んでないのバレバレでした。ただ、アプリケーションサーバでforkを多用しサーバが重いケースは何回か見てきているパターンなので負荷の高いアプリケーションを作成するときの要注意ポイントとして読んでいただければと思います。
/追記
クラウドがネットワークゲーム開発者にもたらしてくれたもの - Keep Crazy;shi3zの日記
クラウドはあまり関係がないんだけど、CPUのSystemを使い杉ってことで、どういうことをやるとSystemを使うのか再現実験。おそらくfork(2)が原因だと予想。flashの生成でswfmillコマンドを叩いているとか
以下のコードは無限ループでforkを行っています。子プロセスは何もせずにすぐに終了し、親プロセスは子プロセスの終了を確認した後、すぐにforkを行います。
#!/usr/bin/perl
use strict;
use warnings;
my $pid;
while(1) {
$pid = fork;
if ( $pid ) {
waitpid( $pid, 0 );
}
else {
exit;
}
}
waitpid( $pid, 0 );
このコードを実行し、CPU使用率をmpstatで見てみます
$ mpstat 5
Linux 2.6.28-15-server (vs1-1) 08/26/10 _x86_64_ (2 CPU)
01:13:55 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:14:00 all 10.20 0.00 40.10 0.00 0.00 0.10 0.00 0.00 49.60
01:14:05 all 8.00 0.00 42.40 0.00 0.00 0.10 0.00 0.00 49.50
01:14:10 all 8.30 0.00 40.40 0.00 0.00 0.00 0.00 0.00 51.30
01:14:15 all 8.80 0.00 39.70 0.00 0.00 0.00 0.00 0.00 51.50
01:14:20 all 9.60 0.00 35.10 0.00 0.00 0.00 0.00 0.00 55.30
Systemに40%、Userに10%ぐらい。同じようなCPU使用率が再現できていると思いますが、どうでしょう? forkは新しいプロセスを作成するkernel内部の処理。Systemはkernelが使用したCPU時間から計算されます。
あわせて読みたい: ライブドア、携帯電話向けのソーシャルゲーム環境に最適な、 フラッシュコンテンツの動的合成配信ASPサービス 「DATAHOTEL(データホテル) FLDS(エフエルディーエス)」の提供を開始