
No.3ベストアンサー
- 回答日時:
AIXなら私の得意分野です(笑)。
現役のAIX基盤技術者ですので。さてSystem Timeが大きくなる原因ですが、
さきのスレッド分割による負荷以外にも、
I/O Waitが考えられます。
たとえばその計算プログラムは、スクラッチ(一時ファイル)を大量に読み書きしませんか?
また利用メモリについてはいかがでしょうか?
もしメモリを大量に使い、ページスチールが発生するような状況にあるのであれば、当然ページングへの読み書きが発生しますので、結果的にSystem Timeが増えてしまいます。
これらの問題については、実行中にvmstatの出力を見れば確認できます。
8wayの環境で並列度をどのくらいにしているのかわかりませんが、
特にSMP並列プログラムの場合、あまり並列度を上げても遅くなることが多いですし、またプログラムによっては計算結果が異なってしまうことがありますので注意が必要です。(ベンダーアプリであれば問題ないと思いますが)
並列度と実実行時間の関係については、確かアムダールの法則というのがありまして、
たとえば並列度を二倍にしても、実実行時間は半分以下になることはありません。
なおAIXのtimeコマンドは当該プログラムが利用した時間を計測していますので、1CPU毎の値ではなく合計値です。
追加の質問などありましたら、どうぞ
No.2
- 回答日時:
「1CPUごとのuser time/sys time」を各CPUごとに積算した値が表示されているのではないでしょうか。
realが約125mなので、お使いのハードウェアの構成が2CPUだとすれば、CPUタイムは延べ250mあった計算になります。user+sysが約240mですから、差分の10mは当該プロセス以外のシステムプロセスが消費したと考えれば、ほぼ計算が合います。
No.1
- 回答日時:
質問者さんの環境が分かりませんが、
以前、HPCのSEをしていた者です。
並列プログラムでは一般的に並列度を上げることにより、
実実行時間が短くなってもそれ以外の部分でオーバーヘッドとされる部分が増えるのは仕方がありません。
これはSMP並列(OepnMP)でもMPP並列(MPI)、どちらのプログラムでもいえることです。
質問者さんの気にされているsystem timeが大きいことについては、
並列実行に伴うオーバーヘッドがsystem timeとして現れているのではないでしょうか。
(userも実実行時間より大きくはないですか?)
お話からすればSMP並列のような気がしますが、
この場合はスレッド分割により並列化させていますので、その分kernel(system)に負荷がかかるのは当然です。
並列プログラムは実実行時間を減らすのが目的ですので、
単体プロセスのように「real time=user time +system time」の関係は成り立ちません。
CPU時間からいけば、ある意味では無駄な時間を使ってしまうことで、実実行時間(プログラム応答時間)を短くしていることになります。
この回答への補足
早速の回答ありがとうございます。
自分の使っている環境はAIX上で8CPU使いSMP並列計算を行っています。
system timeが大きくなるのは納得できましたが、実実行時間より大きくなることがよく分かりません。
例えば
real 124m59.600s
user 105m41.160s
sys 134m22.370s
となった時は計算中にsystemが134m22.370sの間CPUを使用したので、計算の初めから終わりまでずっとsystemに負荷がかかっていたとしても計算が終了してからも10分間処理していたことになってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
パソコンの演算速度について
-
vba GetAsyncKeyState関数について
-
sendkeysにてALT+CTRL+INSERTを...
-
RPG パラメーターについて
-
C言語でコマンドラインのカレン...
-
プログラムの再起動
-
プログラムを走らせる
-
一定時間たつと、リセットしたい
-
システム資源とは?
-
C言語で途中までしか、プログラ...
-
他のPC上にあるexeを、そのP...
-
VBでプリンタジョブの制御について
-
プリントスクリーンをプログラ...
-
バックグラウンドからフォアグ...
-
C++コンソールプログラムをBuil...
-
並列計算をしたときのシステム...
-
実行中の実行ファイルの上書き
-
実行時エラー429
-
タスクバーのインジケータを作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
パソコンの演算速度について
-
C言語で途中までしか、プログラ...
-
sendkeysにてALT+CTRL+INSERTを...
-
vba GetAsyncKeyState関数について
-
RPG パラメーターについて
-
sleep()関数について
-
Windows10でDOSゲーム
-
実行中の実行ファイルの上書き
-
VBAで外部プログラムを非表示で...
-
終了してもプログラムが実行し...
-
並列計算をしたときのシステム...
-
VB上で実行中の無限ループの止め方
-
VB6プログラムの実行中でのこと
-
アクセス[ファイルを開かずに、...
-
他の実行ファイルを実行するプ...
-
実行時エラー429
-
UWSCがうまく動かない
-
MACアドレスの調べ方
-
”行数のカウント”はどうすれば...
おすすめ情報