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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- 英語 提示した名言について(並列表現の文法規則) 4 2023/06/02 09:41
- 英語 Think back to the last time you gave a little pres 3 2023/01/29 23:50
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- 英語 提示した名言の文の構造について(waste one hour of time) 5 2023/05/20 15:22
- 英語 by the timeには前後関係があるようなのですが、 例えばbefore SVならこのSVが前と 1 2022/11/20 11:25
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- 英語 whereの役割について教えて下さい。以下の文を2つに分けるとどのような文章になるでしょうか。 Th 5 2022/12/11 00:45
- 英語 ask about 4 2022/12/26 16:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
プログラミング ソースコード
-
プロセス間通信について
-
実行時エラー429
-
Windows7-VB6でのアクティブウ...
-
MACで動く実行ファイルをWindow...
-
fortranで計算を実行するとrunt...
-
なんかC言語でプログラム書いて...
-
C言語でフォルダを開く
-
バックグラウンドで実行される...
-
Visual C++ 6.0で作成したプロ...
-
matlabでのif文の重複
-
CreateProcessについて
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
システム資源とは?
-
あるプログラム実行中に別のプ...
-
一定時間たつと、リセットしたい
-
いきなり、count++; とありま...
-
他の実行ファイルを実行するプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
MACで動く実行ファイルをWindow...
-
sendkeysにてALT+CTRL+INSERTを...
-
他のPC上にあるexeを、そのP...
-
VB上で実行中の無限ループの止め方
-
system関数を使用してsuコマン...
-
VBAで外部プログラムを非表示で...
-
実行時エラー429
-
プロセス間通信について
-
並列計算をしたときのシステム...
-
終了してもプログラムが実行し...
-
システム資源とは?
-
C言語で途中までしか、プログラ...
-
PIC のデータEEPROMに書き込み...
-
RPG パラメーターについて
-
Windows10でDOSゲーム
-
ラズパイ プログラム 自動起動 ...
-
プログラムを走らせる
-
C言語でフォルダを開く
-
アクセス[ファイルを開かずに、...
おすすめ情報