• ベストアンサー

実行時のCPU使用率を増やしたい

WindowsServer2003(StandardEdition)でのCPU使用率において、 質問があります。 VB6.0で作成したバッチプログラムを動かしています。 プログラムの内容はVBからMdbに対して問い合わせを行い 結果をMdbに格納する。。。といった感じです。 (接続はADOです) またWebサーバーもかねており、IIS6.0で運用しています。 (メインの言語はASP) 上記の処理(バッチ及びIIS)の中にはかなり CPU負荷かが掛かる処理があるのですが CPUが30%を超えないのです。 (VB、IIS運用時共。確認はタスクマネージャー) 重い処理が走るときは30%付近をMAXにだらだらと時間が過ぎていきます。 こちらとしては一気に100%まで使い切ってもらって処理時間を短縮したい。 コーディング、あるいはOS上で設定などがあるのでしょうか? WindowsServer2003は導入後、RAID、IIS等の環境設定を行いましたが それ以外はほぼデフォルト状態です。 サーバ環境 CPU:Xeon3.2G メモリ:1GB HDD:十分な空容量有

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

連続ですみません。 アプリレベルで、出来るだけCPUを使って処理を速くするというのであれば、 「出来る限りディスクアクセスを減らす」方向の開発を行うのも 一つの方向性かもしれません。 例えば、バッチ処理で頻繁に参照するマスタデータ等があるなら、 それは極力一度だけしか読まないようにする(一度読んだらメモリに置いておく)とか。 コーディングは面倒になるとは思いますが、処理の内容等によっては 劇的に速くなる可能性もあると思います。

yuskizm
質問者

お礼

リソースを割けず、納期優先で製造した為 かなり荒っぽい処理をしているのは事実です。 後の改修につなげたいと思います。 ご意見ありがとうございます。

その他の回答 (3)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.4

全て同一マシン上にあるのなら、DBのHDDアクセスがネックになっている可能性が高いように思われます。 RAID5なら、間違いなくI/O待ちが結構多そうですし。 各プロセス単位のCPU利用率はどうなりますか? SYSTEM なんかが結構上位に来ていたりしませんか?

yuskizm
質問者

お礼

ご返答ありがとうございます。 今回の件は、ディスクI/Oのボトルネックが要因とし、 環境改善案としては物理的(ハードreplace等)対策を検討 する事としました。 ありがとうございました。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

追加で質問させていただいてよろしいでしょうか。 1.Xeon3.2G というのは、シングルコア?マルチコア? マルチCPU? 2.DBは外部? 同一マシン?

yuskizm
質問者

補足

閲覧ありがとうございます。 以下、ご返答します。 1.シングルコアです 2.DBは同一マシンです。   また、物理的に3ディスクですがRAID5で組んでますので   論理的に1ディスク状態です。   よって、I/Oの分散化は出来ていないと思います。

回答No.1

Web系とかIISは全然詳しくないのですが、一般論での回答です。 CPU使用率は、あくまで「CPU単独の」使用率です。 システム全体の負荷を示すわけではありません。 システム全体として、ディスクアクセス(MDB使ってるとの事なので 結構負荷が掛かると思います)等を含めると目一杯頑張っていても、 CPUだけ見れば、それほど頑張っていないという事は多いです。 ……と言うより、CPU負荷100%ってのは、CPU内部で(他へのアクセス無しで) ループ計算してるとか、バグで無限ループに陥っているとか、限られた 状況でしか見られないような気がします。 DB使用アプリで30%使用なら、かなりCPU使用率高いような気がしますよ?たぶん。 一応、該当アプリのプロセスの優先度を上げることによって、 優先的にCPU時間を割り当てれば、負荷率が上がる「可能性もあります」が、 下手に やたら上げると、特にサーバだとヤバい事になるかと思いますので、 気をつけてください。

yuskizm
質問者

お礼

ご返答ありがとうございます。 なるほど、ディスクアクセスがボトルネックになっている と言う事ですね。。 その可能性は気づきませんでした。

関連するQ&A

  • CPU使用率について

    CPU使用率についての質問です。 HP-UX環境(CPU:2、Memory:4G)で、バッチ処理を行なう予定です。 データベースはオラクルです。できるだけCPU使用率を高めたい(効率よくCPUを使わせたい)のですが、このような場合に調整できるオラクルのパラメータはありますでしょうか?オラクルバージョンは9.2です。 また、もしなければどのような方法があげられますでしょうか。 ご教授ください。

  • プロセスがCPU使用率100%になる

    社内のサーバでWindowsのセキュリティパッチを適用すると必ずといっていいほどCPU使用率が100%になるサーバがあります。 CPU使用率の高いプロセスを確認したところ「TrustedInstaller」がほぼ独占している状態で、その状態がしばらく続いているようでした。 サーバのセキュリティパッチは「Windows Server Update Services(WSUS)」で管理しており、該当サーバは単純な子サーバで一定期間未適用のセキュリティパッチを親サーバで配布した後、手動で適用しています。 CPU使用率が上がるタイミングとしては手動で適用を実行したとき(適用処理中は平均して使用率が高い)はもちろんなのですが、適用後数時間経ってからまた使用率が上がる場合があります(特に操作していないのに急に上がるが、継続時間は10分程度)。 なお、業務的に即時サーバを再起動することができないため夜間に自動再起動しているのですが、それまでは再起動していません。 また、再起動後は「TrustedInstaller」によりCPU使用率が上がることはありません。 知りたいのはなぜ適用処理後~再起動の間にまた「TrustedInstaller」のCPU使用率が高くなるのか、というところです。 WSUSを使用しているため親サーバとのやりとりが発生するために上がるのか、再起動をしていないため定期的に「TrustedInstaller」が忙しく動き出すのか(この場合は再起動までの間何度か使用率が上がってもよさそうですが)。 常時「TrustedInstaller」が高いのであれば、それはそれで問題ですが今回の話にはならないので悩みはなくなるのですが…。 サーバについては、WindowsServer2008R2(64bit)、メモリ:16GB、CPU:Xeon2.27GHz です。 なにかご存じであれば教えていただけると助かります。よろしくお願いします。

  • CPU使用率が100%になり特定のプログラム処理が行われない

    CPU使用率が100%になり特定のプログラム処理が行われない 先日会社で運用しているシステムで、ある一定の処理がスキップされてしまうようなトラブルが発生しました。 状況としては、アプリケーションサーバー全台において、ある時間からずっとひとつのCPU使用率が100%となり、LoadAverageがずっと1のままです。 そして、プログラム内でEJBの非同期処理をしていた部分が一切行われなくなりました。 アプリケーション自体は数日正常に稼働しており、突然起きたことなので、プログラム自体の確認もしましたが不備が見つかりません。 エラーログにも何も残っていませんでした。 一切の非同期処理が行われていないので、EJBのバグか何か?とも思いましたが見つけることはできませんでした。 なお環境は以下の通りです。 ・Linux(CentOS,RedHat) + GlassFish + Java + memcached + MySQL ・EJBはStateless Session Beanを使用。 ・APサーバのCPUはサーバによってデュアルコアのものとクアッドコアのものがあります。 全く原因がわからず、何かアドバイスがいただけないかと思い書き込ませていただいています。 あまり細かい情報を記載していないので、聞いていただければどんどん補足します。 些細なことでも良いので可能性や情報をいただければと思います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • マルチCPU 非対応のアプリケーションをXeonで動かす

    こんにちは。 現在、サーバを構築しようとしているのですが 問題が出てきて困っています。お知恵をお持ちの方が おられましたらご教授ください サーバOS WindowsServer2003 Standard R2 マシン  HP ML350 G05 問題点  運用したいアプリケーションがマルチCPU非対応で      あるためシングルCPU状態での運用をしたい 昔、マルチCPUの機器でも特定のアプリケーションをマルチスレッディング対象外にしたりできるようなことを聞いた覚えがあるのですが今のところその方法について調べ切れておりません・・ 多分、手段としては下記方法のどれかかと思うものを列記しておきます。 (1) XeonのDualCoreの片側をとめる。BIOS、OS設定など(多分無理・・・) (2) CPUの処理を強制的に片側のみで行うようにする。OS設定・別アプリケーションなど(多分なさそう・・) (3) 特定のアプリケーションやDLLをマルチスレッド処理対象外にする。OS設定・別アプリケーション使用など(ありそう・・) (4) その他 結構調べたつもりではありますがいまだ可能不可能についてすら わからない状態です。ご存知の方がおられましたらご教授ください。

  • CPU使用率が高い⇒メッセージ

    いつもお世話になっております。 現在、Windows Server 2003をファイルサーバとして使用しております。 たまにアクセス数が多く、CPUが高くなり遅くなる事があります。 そこで、CPU使用率が70%を超えた時点で、 画面上にダイアログでメッセージを出そうと思うのですが、 可能でしょうか?(OSの標準機能で。。。) VBなどで、監視プログラムを作るべきでしょうか? ご教授の程、宜しくお願い致します。

  • DLLHOST.exeがCPU使用率100%になる

    はじめて投稿させてもらいます。 現在わたしは仕事でUNIXサーバに自動で接続して作業をするようなアプリをいくつか作っています。 実際にサーバに接続しにいく部分は、telnetで接続するフリーのCOMコンポーネントを使用しています。 ソース内でそのコンポーネントのオブジェクトを生成して、作業が終わればちゃんとオブジェクトを解放しています。 VBで作成したアプリでは、それを実行しているマシンに特に異常は見られないのですが、ASPで作成したVBScriptを実行させるとDLLHOST.exeというプロセスがCPU使用率を100%にさせるという現象が起こります。 環境はWin2000 Professional で IIS5.0を使用しています。 iisreset /restart でIISのサービスを再起動させれば直りますが、CPU使用率が100%になる理由をどうしても知りたいのです。 どなたか解決方法を知っている方がいましたら教えていただけませんでしょうか。 よろしくお願いします。 ちなみにDLLHOSTで検索したら、それらしいことがマイクロソフトのHPなどにありましたが、似たような情報なだけで解決にはいたりませんでした。

  • mdbのテーブルを別のmdbのテーブルに追加

    2種類のMDBがあり 一つは 毎日の入力にて使用、もう一つは 累積として使用している。 それぞれに 同一デザインのテーブルがあります。 毎日の入力用のMDB内ののテーブルのデータをすべて 二つ目のMDBのテーブルに 追加したいのですが 一件読み込んで 一件書き込むなどと プログラムしていましたが 毎日の入力用のMDBが たくさんになったため 処理が遅くてたいへんです。 なにか 簡単に かつ 高速にすることは可能でしょうか? 開発環境は VB6 SP6 WindowsXP ADOを使用しています。 よろしくお願いします。

  • CSV出力とCPU処理分散について

    環境:Oracle9i 9.2.0 言語:VisualBasic6.0 バッチ処理(VB)で各テーブルをCSVに出力していますが、あるテーブルがメモリオーバーによりエラーになりました。 原因はVB内で持てる最大の容量2GBを超えてしまった為です。 (VBでは1つのテーブルを全件取得してCSV出力していますが、1つのテーブルを全件取得したときに2G超になってしまったようです) 対応策としてVBではなく、SQLPlusでCSV出力対応することにしたのですが、処理速度が遅いと言われてしまいました。 上記原因はサーバの構成が「CPUを2つ、各CPU内のセグメントが2つずつ存在する為、理論上4つのCPUに分散されている」ことになっているようで、VBでは処理が各CPUに分散されているのですが、SQLPlusで実行したバッチでは処理が1つのCPUで実行されている為、遅いみたいです。 なぜVBでは処理が分散されているのにSQLPlusでは処理が分散されていないのでしょうか? OSの問題のような気もしますがなにぶん知識が浅い為、原因がつかめない状況です。 SQLPlusでも処理が分散されれば一番よいのですが、現状では対象テーブルを分割(年月など)して対応するしかなさそうです。 どなたかアドバイスお願い致します。

  • CPUの性能について

    現在、下記の業務に携わっております。今度、機器の入れ替えを検討するのですが、CPU選定に悩んでおります。この説明だけでは不足もあるかとは思いますが、ぜひお知恵を拝借させてください。 機器:富士通PRIMERGY TX120(CPU:IntelXeon3040 1.86GHz メモリ:2GB OS:WindowsServer2003Standard32bit) 2台 *サーバ機で運用していますが実際は2台ともスタンドアロンです。当時、高速CPU搭載機を要求し、この機器があてられました。ワークステーションがなかったというのも理由です。 作業内容:SQL2005STDのDBからデータをエクスポート、インポート、テーブル内のデータ削除 (2台の機器は別々の拠点にあります)。*本来はここで具体的な数値を出せればいいのですが、何を出せばよいかわからず抽象的な表記で申し訳ございません。 入れ替えるにあたり、SQL2005Stdが動作するOSであればサーバOSでなくてよいのですが、問題はCPUです。CPUのベンチマーク結果等を見ると、今の機器に搭載されているXeon3040 1.86GHzよりも、現在流通しているIntelCore i5 の方が性能がよいと見受けられます。ならば普通のデスクトップPCでもよいことになります。とはいえ、Xeonはサーバやワークステーション用に開発されたCPUと伺っており、実は新しいデスクトップPC用のCPUよりも、今の機器の方が早く処理ができる、なんてこともあるのではと思ってしまいます。 ぜひ皆様よろしくお願い申し上げます。

  • CPU増強

    会社のサーバ(富士通製 PRIMERGY RX300)ですが、 原価計算処理をするのに6時間もかかており、オン ライン業務の運用に支障がでています。 CPU使用率(ピーク時)に40%強も食っており、 メモリとCPUの増強を計画しています。 現行仕様は、Xeon3.06GHZ/キャッシュ512KB、MM 2GB です。そこで、CPUを Xeon 3.20GHZ/キャッシュ 1MB メモリ 4GB に増設しようと計画しているのですが、 どこまで高速化されるのか不安です。 アバウトで結構なのですが、高速化に向けた定量化 事例等はありますでしょうか。

専門家に質問してみよう