マルチコアCPU環境でマルチスレッド未対応バッチプログラム実行した場合のCPU利用について

Anonymous
2023-10-25T13:50:27+00:00

すみません。ご存じの方いたら教えてください。

Windows Server 2016(24コア)で、マルチスレッド未対応のVB.NETのバッチプログラムが動いています。

この場合、マルチコアCPUの環境であっても利用されるのはシングルコアCPUとなるのでしょうか?

**モデレーター注**

この質問は Windows / その他/不明 / プログラム の他の Windows アプリ に投稿されましたが、内容から判断してこちらのカテゴリに移動いたしました。

適切なカテゴリに投稿すると、返信や回答が得られやすくなり、同じ質問を持つ他のユーザーの参考にもなります。

ビジネス向け Windows | Windows Server | パフォーマンス | アプリケーション テクノロジと互換性

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

6 件の回答

並べ替え方法: 新しい順
  1. Anonymous
    2023-10-26T13:39:16+00:00

    「マルチスレッド未対応のVB.NETのバッチプログラム」の性能の提示を求められています。

    他の方の指摘と重なるかと思いますが、「性能の提示」を求めている方は、何を期待されているんでしょうか?

    • CPU 使用率なんて、CPU の性能で意味が全然変わりますから、それを見ることに意味はありません。
    • バッチプログラムの作り次第では、CPU 以外にボトルネックが存在する可能性があり、その結果、CPU 使用率が伸びないことはあり得ます。(メモリやストレージに左右されるなど)

    「性能の提示」を求めている方に、何を気にしているのか、どういった指標で測るのが妥当なのか、きちんとすり合わせてください。

    本来的には、なぜ「性能の提示」が必要なのか、目的を確認することも必要でしょう。
    (改修するか否かの判断材料ならそもそも、今の測り方ではダメです)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2023-10-26T08:23:55+00:00

    「マルチスレッド未対応のVB.NETのバッチプログラム」の性能の提示を求められています。

    問題は、2つあります。

    ひとつ目は、このまま押し通すつもりでしょうが「マルチスレッド未対応のVB.NETのバッチプログラム」に関する情報が一切ないこと。

    もう一つは、なぜ(何を目的として)(何の役に立つ?)その様な時代遅れの性能評価基準を求められるのか?ですね。

    そして解決策です。

    アプリケーションの挙動を評価したり、マルチスレッドの問題点を究明することが目的であれば、「CPU使用率」などという大雑把なツールの表示に悩むのではなく、Windows Performance Monitor の様な専門ツールを使用することをお勧めします。

    パフォーマンスの監視を構成する

    Windows Server のパフォーマンスを監視する - Training

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2023-10-26T01:21:52+00:00

    『OSのtotal』といっているのは、[Processeor]の[%Processor Time]のことで、

    『「マルチスレッド未対応のVB.NETのバッチプログラム」のCPU使用率』が[Process]の[%Processor Time]の特定のプロセスの値であるなら意味が違います。

    [Processeor]の[%Processor Time]の[_Total]は、プロセッサがアイドル以外のスレッドを実行するために使用した経過時間の割合です。 「プロセッサ単位で集計されているアイドル以外の経過時間の合計」の「アイドル状態を含めた経過時間の合計」に対する比率といってもいいです。

    [Process]の[%Processor Time]は、該当プロセスのスレッドすべてが、命令を実行するためにプロセッサを使用した経過時間の割合です。 「プロセッサ単位で集計されているアイドル以外の経過時間の合計」に対する「該当するプロセスが使用した経過時間の合計」の割合とも言えます。

    ようするに、[Processeor]の[%Processor Time]のうちのプロセス毎の内訳が[Process]の[%Processor Time]になります。ベースが違うので直接には比較できる数値ではありません。

    ベースをそろえるならば、[Processeor]の[%Processor Time]に[Process]の[%Processor Time]を掛け合わせればいいでしょう。[Processeor]の[%Processor Time]が80%で[Process]の[%Processor Time]が90%なら、

    0.80*0.90=0.72

    CPUの稼働時間の80%で各プロセスが実行されていて、該当するプロセスがCPUの時間の72%を消費して他のプロセスが残りの8%を消費しているということです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2023-10-26T00:15:16+00:00

    ご回答有難うございます。

    言葉足らずで申し訳ありません。

    「マルチスレッド未対応のVB.NETのバッチプログラム」の性能の提示を求められています。

    パフォーマンスモニタで確認した所、OSのtotalのCPU使用率の最大値を

    「マルチスレッド未対応のVB.NETのバッチプログラム」のCPU使用率が上回っていました。

    OSのtotalのCPU使用率は各コアのCPU使用率の平均値だと考えているのですが

    「マルチスレッド未対応のVB.NETのバッチプログラム」はシングルコアCPUの使用率

    になっているためCPU使用率が上回って見えているのではないか知りたかったのです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2023-10-25T22:04:50+00:00

    「マルチコア CPU」というのは「処理できるプロセッサ(コア)が物理的に複数存在する CPU」を指す名称です。

    物理的な存在に対する名称ですので、それがソフトウェアによって「シングルコア CPU」に変わることはあり得ません。
    (実行状況によって、物理的な存在・状態が変わることはあり得ません)

    いわゆる「マルチスレッド」は、進捗を表示したり、キャンセル可能な状態を維持したりしながらも処理を実行する、あるいは複数のスレッドで処理を並列に実行して合計処理時間を短縮するなど、スレッドを2つ以上、明示的に活用することを指すと考えられます。

    これに非対応ということは、処理が単一のスレッドで実行されるので、時間短縮効果がない、あるいは GUI が固まったように見えると言うだけです。

    たくさんあるはずのコアを活用せず、どれか1つのコアだけを使って実行するイメージです。

    (わかりやすさ優先で、正確な表現ではありません)

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません