【最初の注意】
本記事は、私が2002年当時に今はなき「XWIN II Web Page」で掲載したものを、基本的にそのままの形で再掲載したものです。では、どうぞ。
この前の記事「Hyper-Threadingの有用性──Super πとTMPGEnc同時実行」
巻頭言 980 「Hyper-Threading──Super πとTMPGEnc同時実行 II」
Super π(CPU 0, CPU 3)とTMPGEnc(CPU 1, CPU 2)同時実行時のパフォーマンスモニタ
CPU使用率は、同時実行中は75%(Super πにCPU2つを割り当てているが、実行スレッドは1つのため)を示していたが、Super πの処理が終了した後のイメージショットなので画面上は50%となっているが、注目はCPU 0(CPU使用率の履歴の最左)とCPU 3(同、最右)のぶれの大きさである。これまでCPU使用率の履歴をいくつか示してきたが、Super π及びTMPGEncを実行中は、常に振り切れた状態、つまり上で見ると真ん中二つのようになっていた。この激しいぶれは一体、何を示しているのだろうか。
(前回までの続き)
ちなみにSuper πをデフォルトの状態(CPU 0~CPU 3すべてを割り当て)で一つだけ実行した場合、パフォーマンスモニタは次のようになっていた。
Super πで4つのCPUを割り当てた際のCPU使用率遷移
このように、確かにCPU間でSuper πの実行スレッドは分担して行われているものの、さすがに切り替え頻度はTMPGEncを同時実行している時ほど激しいものではない。これらのことから考えられることとしては、TMPGEncのCPU占有度があまりに高いため、Super πがCPUを占有する間もなく、どちらか(CPU 0またはCPU 3)の空き具合、つまり、物理プロセッサに相対するCPU 1またはCPU 2のTMPGEncの実行スレッドのタイミングを見ながら、OS(Windows XP)が切り替えを行っているために、このように実行されるCPUの異動が頻繁に行われると見ていいだろう。
こういった形で処理が並列化しているために、TMPGEncから見れば、本来CPUを占有したいにもかかわらず、OS関与に伴うSuper πの実行スレッドという横槍が入ることから、これまでの実行タイムから若干遅れたものとなったと想定されるというわけである。無論、Super πの側からすれば、TMPGEncがCPUを占有し続けることが多いので、なかなか実行スレッドを処理することができず、こちらも実行タイムが遅れるとなる。
では、同じベンチマークテストをHyper-ThreadingをOFFにした場合はどうなるだろうか。これを行うには、Xeon 2.20GHzからHyper-Threadingテクノロジが使用できないXeon 1.70GHzにプロセッサを変更すれば確実だが、あの面倒な換装作業をしばらくは行いたくないので、擬似的にHyper-ThreadingをOFFにする、/numproc=2オプションを追加することで、物理プロセッサのみを有効にするという方法を採った。
CPUの割り当てはデフォルト(Super π、TMPGEncいずれもCPU 0とCPU 1を割り当て)で、同時実行を行うと………。
─── Freeze…………。
Super πがおおよそ12周目、TMPGEncがおおよそ処理の50%目前といったところで、見事にフリーズである。いやぁ、あっさり落ちるものだと感心しながら、ハードウェアリセットを行い、もう一度、同じ環境で同時実行テストを行うと、
─── Freeze…………。
ははははは……。
当環境だけとは思いたいが、Dual Xeon 2.20GHzでHyper-Threadingを擬似的にOFFにして物理プロセッサ2つのみを有効にし、Super πとTMPGEncを同時実行させると、ハードウェアリセットでなければ復旧不可能なとんでもないフリーズ(ブルーバックが出ないのはもちろん、エラーログすら吐き出されないので、可能性としてはプロセッサ周りが致命傷という恐れが高い)が発生することが確認できた。念のため、もう一度ハードウェアリセットをかけて再々テストを行ったが、やはり結果は同じ。再現性が高いものであるのは疑いない。
それでは、と、再び4CPU状態(/numproc=2をはずす)で同時実行テストを行ったところ、こちらはまったく問題なくテストを終えた。どうやら、 Windows XPそのものの環境にダメージを受けているわけではないので、「Hyper-Threadingを擬似的にOFFにして物理プロセッサ2つのみを有効」にしたことがフリーズの原因であるのは確かだとなる。
というわけで、思いがけないことで時間を食ってしまった。本来なら、Super πとTMPGEncの同時実行テストの話を総括した後、他のテストなりを行う予定でいたのだが、思いがけぬトラブル(仕様? Bug?)によって、時間が足りなくなってしまったため(Dual XeonマシンはWindows XP起動前までの起動時間が長いのよ)、今回は中途半端であるがこの辺で終わりとしたい。場合によっては、午後あたりに加筆するかもしれないが、例によってあてにならない話なので、かもしかの話ということでご容赦いただきたい。
というわけで続きます。(2002/1/24)
【当時を思い起こして】
このトラブルは、ハードウェアによるものなのか、Hyper-Threading Technologyにからむものなのか、OS側の問題なのか。まったく切り分けることができないまま終わったのが悔やまれるが、使えるICEが自宅になかったので仕方がない。おそらく複合系のような気もするが…。
コメント