(57)【要約】  ネットワークを介してデータ送受信を行い，受信データをデータ格納部へ格納するネットワーク制御部と，データ格納部に格納されたデータを処理するネットワーク処理部とを備えるネットワーク処理制御装置において，ＣＰＵの使用状況を示すＣＰＵ使用情報を取得するＣＰＵ使用情報取得部と，所定の判定条件をもとに，ＣＰＵ使用情報からＣＰＵの負荷状態を判定する負荷状態判定部と，前記ネットワーク処理部に対し，低負荷と判定された場合に割り込みモードを設定し，高負荷と判定された場合にポーリングモードを設定する処理モード設定部とを備え，ネットワーク処理部では，割り込みモード時にネットワーク制御部の割り込み通知を契機にデータ格納部のデータ処理を行い，ポーリングモード時にネットワーク制御部の割り込み通知を抑止し，所定の間隔でデータ格納部のデータ処理を行う。
2009060530.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してデータ送受信を行い，受信したデータをデータ格納部へ格納するネットワーク制御部と，当該データ格納部に格納されたデータを処理するネットワーク処理部とを備えるネットワーク処理制御装置において，
当該ネットワーク処理制御装置のＣＰＵの使用状況を示すＣＰＵ使用情報を取得するＣＰＵ使用情報取得部と，
ＣＰＵの使用状況が高負荷または低負荷であるかを判定する判定条件を備え，前記ＣＰＵ使用情報から前記ＣＰＵの負荷状態を判定する負荷状態判定部と，
前記ネットワーク処理部の処理モードとして，前記負荷状態が低負荷と判定された場合に前記割り込みモードを設定し，前記負荷状態が高負荷と判定された場合に前記ポーリングモードを設定する処理モード設定部とを備え，
前記ネットワーク処理部は，前記割り込みモードが設定されている場合に前記ネットワーク制御部が発行する割り込み通知を契機に前記データ格納部のデータ処理を行い，前記ポーリングモードが設定されている場合に前記ネットワーク制御部の割り込み通知を抑止し，所定の間隔で前記データ格納部のデータ処理を行う
ことを特徴とするネットワーク処理制御装置。
【請求項２】
前記ＣＰＵ使用情報取得部は，前記ＣＰＵ使用情報として，前記ＣＰＵを使用するアプリケーションプログラム数を取得し，
前記負荷状態判定部は，ＣＰＵを使用するアプリケーションプログラムの数を用いて前記ＣＰＵの使用状況が高負荷または低負荷であるかを判定する判定条件を備え，前記アプリケーションプログラム数から前記ＣＰＵの負荷状態を判定する
ことを特徴とする請求項１記載のネットワーク処理制御装置。
【請求項３】
前記負荷状態判定部は，前記ＣＰＵ使用情報の所定の計測値が，前記判定条件として予め設定された上限値以上であるかを判定し，
前記処理モード設定部は，前記計測値が前記上限値以上の場合に，前記ポーリングの間隔を長くする変更を行う
ことを特徴とする請求項１に記載のネットワーク処理制御装置。
【請求項４】
前記負荷状態判定部は，前記ＣＰＵ使用情報の所定の計測値が，前記判定条件として予め設定された下限値以下であるかを判定し，
前記処理モード設定部は，前記計測値が前記下限値以下の場合に，前記ポーリングの間隔を短くする変更を行う
ことを特徴とする請求項１に記載のネットワーク処理制御装置。
【請求項５】
前記判定条件の設定または変更の情報の入力を受け付け，前記保持された判定条件を更新する判定条件設定部を備える
ことを特徴とする請求項１〜請求項４のいずれか一項に記載のネットワーク処理制御装置。
【請求項６】
ネットワークを介してデータ送受信を行い，受信したデータをデータ格納部へ格納するネットワーク制御部と，当該データ格納部に格納されたデータを処理するネットワーク処理部とを備えるコンピュータに，
当該コンピュータのＣＰＵの使用状況を示すＣＰＵ使用情報を取得するＣＰＵ使用情報取得処理と，
ＣＰＵの使用状況が高負荷または低負荷であるかを判定する判定条件を備え，前記ＣＰＵ使用情報から前記ＣＰＵの負荷状態を判定する負荷状態判定処理と，
前記ネットワーク処理部の処理モードとして，前記負荷状態が低負荷と判定された場合に前記割り込みモードを設定し，前記負荷状態が高負荷と判定された場合に前記ポーリングモードを設定する処理モード設定処理と，
前記ネットワーク処理部によるデータ処理において，前記割り込みモードが設定されている場合に前記ネットワーク制御部が発行する割り込み通知を契機に前記データ格納部のデータ処理を行い，または前記ポーリングモードが設定されている場合に前記ネットワーク制御部の割り込み通知を抑止し，所定の間隔で前記データ格納部のデータ処理を行うネットワーク処理とを，
実行させるためのネットワーク処理制御プログラム。
【請求項７】
ネットワークを介してデータ送受信を行い，受信したデータをデータ格納部へ格納するネットワーク制御部と，当該データ格納部に格納されたデータを処理するネットワーク処理部とを備えるコンピュータが，ネットワーク処理を制御する方法であって，
当該コンピュータのＣＰＵの使用状況を示すＣＰＵ使用情報を取得するＣＰＵ使用情報取得処理過程と，
ＣＰＵの使用状況が高負荷または低負荷であるかを判定する判定条件を備え，前記ＣＰＵ使用情報から前記ＣＰＵの負荷状態を判定する負荷状態判定過程と，
前記ネットワーク処理部の処理モードとして，前記負荷状態が低負荷と判定された場合に前記割り込みモードを設定し，前記負荷状態が高負荷と判定された場合に前記ポーリングモードを設定する処理モード設定処理過程と，
前記ネットワーク処理部によるデータ処理において，前記割り込みモードが設定されている場合に前記ネットワーク制御部が発行する割り込み通知を契機に前記データ格納部のデータ処理を行い，または前記ポーリングモードが設定されている場合に前記ネットワーク制御部の割り込み通知を抑止し，所定の間隔で前記データ格納部のデータ処理を行うネットワーク処理過程とを，
備えるネットワーク処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ネットワーク処理の制御技術に関し，より詳しくは，ネットワーク高負荷時のシステム負荷軽減を図るため，処理モードを切り替えてネットワーク処理を制御するネットワーク処理制御装置，プログラムおよび方法に関する。
【背景技術】
【０００２】
ネットワークに接続するコンピュータのネットワーク制御部（ネットワークコントローラ）は，ネットワークからデータ（パケット）を受信すると，受信パケットを直接データ格納部（リングバッファ）へ格納し，ＣＰＵへ割り込みを通知する。【０００３】
ＣＰＵは，ネットワークコントローラの割り込み通知により，オペレーティングシステム（ＯＳ）に登録してあるネットワークドライバの割り込みハンドラを実行する。ドライバの割り込みハンドラは，リングバッファをチェックし，リングバッファに格納されたパケットを処理する。【０００４】
ネットワークドライバがリングバッファのパケットを処理する方法には以下の２種類がある。【０００５】
１．割り込みのみでリングバッファを処理する方法（割り込み手法）
割り込み手法では，ネットワークドライバは，ネットワークコントローラの割り込み通知ごとにリングバッファをチェックし，格納されたパケットを処理する。【０００６】
２．ポーリングでリングバッファを処理する方法（ポーリング手法）
ポーリング手法では，ネットワークドライバは，リングバッファを定期的にチェックし，リングバッファにパケットが存在していれば，そのパケットを処理する。【０００７】
例えば，ネットワークドライバは，最初の割り込み通知によりネットワークコントローラの割り込み通知機能を抑止し，その後，リングバッファを定期的にチェックして存在するパケットを処理する。そして，リングバッファの定期的チェック時にパケットが存在しなければ，ネットワークコントローラの割り込み通知機能を有効にして，定期的チェックを停止する（例えば，特許文献１参照）。【０００８】
リングバッファの定期的チェックの契機として，以下の１つまたは複数のタイミングが使用される。【０００９】
（１）タイマ：タイマによる時間監視をもとに一定時間ごとにチェックする。【００１０】
（２）他のドライバの割り込み：他のドライバの割り込み処理が終了した後にチェックする。【００１１】
（３）低優先度のデーモンプログラム：プログラムに優先度が設定されている場合に，低優先度のデーモンプログラムを用意しておき，デーモンプログラムにＣＰＵを割り当てたときにチェックする。
【特許文献１】特開平７−４９８２２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
従来のリングバッファのデータ処理では，以下のような問題点があった。【００１３】
（１）従来の割り込み手法では，ネットワークコントローラが大量のパケットを継続的に受信するような状態，すなわち，ネットワークが高負荷の状態である場合には，ネットワークコントローラの割り込み通知が多発し，ネットワークドライバの割り込み処理がＣＰＵを占有してしまう。その結果，他のアプリケーションプログラムが動作することができなくなり，システムの本来のサービスが提供できない状態となる。【００１４】
（２）また，従来のポーリング手法では，ポーリングによってデータ処理が行われるため，ネットワークが高負荷な状態のときでもネットワークドライバの割り込みが多発するような状況は起きない。しかしながら，ポーリング間隔中に受信したパケット数がリングバッファの格納可能数を超えると，超過分のパケットが破棄されることになる。【００１５】
そして，ポーリングの契機を特定する方法によって，以下のような問題が生じる。【００１６】
（２−１）タイマによってポーリング契機が特定される場合には，ネットワークコントローラが受信したパケットをネットワークドライバが処理するまでのレイテンシ（遅延時間）が，最大でタイマ間隔時間だけかかることになる。したがって，ネットワークドライバの処理タイミングを早めることができず，システムの本来のサービスのパフォーマンスが低下することになる。【００１７】
また，タイマ間隔時間を短くすると，ネットワーク高負荷時にはネットワークドライバがＣＰＵを占有する状態が生じ，アプリケーションプログラムが動作することができなくなり，システムの本来のサービスが提供されない状態となる。【００１８】
（２−２）他のドライバの割り込みによってポーリング契機が特定される場合には，他のドライバの割り込みが不定期であるため，ネットワークコントローラが受信したパケットがネットワークドライバによって処理されるまでのレイテンシを予測することができない。したがって，他のドライバの割り込みの発生状況によっては，システムの本来のサービスのパフォーマンスが低下する状態が生じるおそれがある。【００１９】
さらに，他のドライバの割り込みが多いと，他のドライバとネットワークドライバとがＣＰＵを占有し，アプリケーションプログラムが動作することができなくなり，システムの本来のサービスを提供できない状態となる。【００２０】
（２−３）低優先度のデーモンプログラムによってポーリング契機が特定される場合には，他のアプリケーションプログラムの多くがＣＰＵを使用する状態が続くことによって，低優先度のデーモンプログラムにはＣＰＵが割り当てられない状況が生じる。したがって，デーモンプログラムが起動されず，ネットワークドライバが受信したパケットを処理できないため，システムの本来のサービスを提供できない状態となる。【００２１】
このように，多数のアプリケーションプログラム・ドライバがＣＰＵを使用する状態と，ネットワークが高負荷であってネットワークドライバがＣＰＵを使用する状態とが同時に発生する場合に，従来の手法では，アプリケーションプログラムとネットワークドライバのどちらかの処理が犠牲となる。そのため，システム全体として本来のサービスを提供できないという問題がある。【００２２】
本発明の目的は，アプリケーションプログラムとネットワークドライバの両方に対して，適切なＣＰＵ時間の割り当てを図るために，アプリケーションプログラム，ドライバによるＣＰＵの使用状況を監視し，ＣＰＵの使用状況にもとづいて，ネットワークドライバの処理契機を変化させることができる技術を提供することである。
【課題を解決するための手段】
【００２３】
本発明は，ネットワークを介してデータ送受信を行い，受信したデータをデータ格納部へ格納するネットワーク制御部と，当該データ格納部に格納されたデータを処理するネットワーク処理部とを備えるネットワーク処理制御装置において，ネットワーク処理制御装置を構成する各処理手段が以下のような処理を行う。【００２４】
ＣＰＵ使用情報処理部が，当該ネットワーク処理制御装置のＣＰＵの使用状況を示すＣＰＵ使用情報を取得すると，ＣＰＵの使用状況が高負荷または低負荷であるかを判定する判定条件を備えた負荷状態判定部が，ＣＰＵ使用情報からＣＰＵの負荷状態を判定する。【００２５】
そして，処理モード設定部が，ネットワーク処理部の処理モードとして，負荷状態が低負荷と判定された場合に，割り込みモードを設定する。また，前記負荷状態が高負荷と判定された場合に，ポーリングモードを設定する。【００２６】
ネットワーク処理部では，割り込みモードが設定されている場合には，ネットワーク制御部がデータ格納部へのデータ格納時に発行する割り込み通知を契機に，前記データの処理を行う。また，ポーリングモードが設定されている場合には，所定の間隔でデータ格納部にポーリングを行い，前記データの処理を行う。【００２７】
なお，ポーリングモードが設定されると，ネットワーク制御部の割り込み通知機能は抑止され，割り込みモードへ変更されると，当該割り込み通知機能の抑止が解除される。【００２８】
これにより，ネットワークデバイスの割り込み処理が多数生じＣＰＵが占有されるという状態を回避することができる。よって，多数のアプリケーションプログラムがＣＰＵを使用する状態と，ネットワーク高負荷時においてネットワークドライバがＣＰＵを使用する状態とが同時に発生するような場合でも，システムとしての本来のサービスを継続することができる。【００２９】
また，前記装置では，ＣＰＵ使用情報処理部が，ＣＰＵ使用情報として，ＣＰＵを使用するアプリケーションプログラム数を取得する。そして，負荷状態判定部が，ＣＰＵを使用するアプリケーションプログラム数を用いてＣＰＵの使用状況が高負荷または低負荷であるかを判定する判定条件を備え，取得されたアプリケーションプログラム数からＣＰＵの負荷状態を判定する。【００３０】
さらに，前記装置では，負荷条件判定部が，ＣＰＵ使用情報の所定の計測値が，判定条件として予め設定された上限値以上であるかを判定し，処理モード設定部は，取得された計測値が上限値以上の場合に，ポーリングの間隔を長くする変更を行う。【００３１】
または，前記負荷条件判定部は，ＣＰＵ使用情報の所定の計測値が，前記判定条件として予め設定された下限値以下であるかを判定し，処理モード設定部が，計測値が下限値以下の場合に，ポーリングの間隔を短くする変更を行う。【００３２】
これにより，ＣＰＵの負荷の傾向に対応してポーリングの間隔を変更することができるので，データ格納部で必要以上にデータが破棄されることがなく，ネットワーク高負荷時におけるシステム本来のサービスの低下を最小限に抑えることができる。【００３３】
また，前記装置は，判定条件の設定または変更の情報入力を受け付け，保持された判定条件を更新する判定条件設定部を備える。【００３４】
これにより，前記装置で実行されるアプリケーションの状況，接続されるネットワークの状況などに応じて任意に判定条件を設定することができ，前記装置の使用状況に対応させたネットワーク処理制御を行うことができる。
【発明の効果】
【００３５】
本発明によれば，ネットワーク処理が高負荷になったとき，システムのＣＰＵ使用率などを算出し，ＣＰＵ使用率に応じてネットワークドライバによる受信データ処理のタイミングを変化させることができる。よって，データ（パケット）の受信率を変化させることができるため，ネットワークドライバがＣＰＵを占有して他のサービスが動作できなくなる状態を防止することができる。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施の形態における構成例を示す図である。
【図２】本発明の実施形態におけるンピュータの構成例を示す図である。
【図３】コンピュータのソフトウェアの構成例を示す図である。
【図４】判定条件の例を示す図である。
【図５】本発明の実施形態における処理（割り込みモード時の処理）の流れを示すフローチャートである。
【図６】本発明の実施形態における処理（ポーリングモード時の処理）の流れを示すフローチャートである。
【図７】ＣＰＵ使用情報の遷移と処理モードの変更タイミングとを説明するための図である。
【符号の説明】
【００３７】
１  ネットワーク処理制御装置
２  ＣＰＵ
３  メモリ
４  ネットワーク
５  ネットワークデータ制御部（ネットワークコントローラ）
６  データ格納部（リングバッファ）
１１  ＣＰＵ使用情報取得部
１２  判定条件格納部
１３  負荷状態判定部
１４  処理モード設定部
１５  判定条件設定部
２０  オペレーティングシステム（ＯＳ）
２１  ネットワークドライバ
２２  ＣＰＵ使用状況監視ドライバ
２３  ドライバ
２５  アプリケーションプログラム
【発明を実施するための最良の形態】
【００３８】
図１は本発明の実施の形態における構成例を示す図，図２は本実施形態を実施するコンピュータ１０の構成例を示す図，および図３はコンピュータ１０のソフトウェアの構成例を示す図である。【００３９】
図１に示すネットワーク処理制御装置１は，コンピュータ１０において，ソフトウェアプログラムなどによって構成されるＣＰＵ使用情報取得部１１，判定条件格納部１２，負荷状態判定部１３，処理モード設定部１４，および判定条件設定部１５からなる。【００４０】
コンピュータ１０は，図２に示すように，ＣＰＵ２，メモリ３，ネットワーク４に接続するネットワークデータ制御部（ネットワークコントローラ）５が，それぞれバス９で接続された構成をとる。【００４１】
ネットワークコントローラ５は，ネットワーク４を介してデータの送受信処理を行う。ネットワークコントローラ５は，ネットワーク４から受信したパケットをリングバッファ６のエントリに格納する。【００４２】
リングバッファ６は，ネットワークコントローラ５を制御するソフトウェアであるネットワークドライバ２１がメモリ３に用意する。【００４３】
また，コンピュータ１０は，図３に示すように，オペレーティングシステム（ＯＳ）２０，オペレーティングシステム２０を構成するネットワークドライバ２１，ＣＰＵ使用状況監視ドライバ２２，その他ドライバ２３ａ，２３ｂ，…，およびアプリケーションプログラム２５ａ，２５ｂ，…，などを備える。【００４４】
オペレーティングシステム２０は，アプリケーションプログラム２５ａ，２５ｂ，…，やドライバ２１，２２，２３ａ，２３ｂ，…，などへＣＰＵ２を割り当てるなど，システムの基本的な資源管理を行う。【００４５】
ネットワークドライバ２１は，ネットワークコントローラ５を制御し，オペレーティングシステム２０とネットワークコントローラ５との間でパケットのやりとりを行う。【００４６】
ネットワークドライバ２１は，「割り込みモード」と「ポーリングモード」の２つの処理モードで動作することができる。「割り込みモード」は，ネットワークコントローラ５の割り込み通知機能を有効にして，リングバッファ６へ受信パケットが格納されるたびに発行される割り込み通知によってネットワークドライバ２１がパケット処理を実行する処理モードである。「ポーリングモード」は，ネットワークコントローラ５の割り込み通知機能を抑止し，ネットワークドライバ２１が所定の間隔でリングバッファ６をポーリングし，リングバッファ６に受信パケットが存在すればそのパケットのケット処理を実行する処理モードである。【００４７】
ＣＰＵ使用状況監視ドライバ２２は，ＣＰＵ２の使用状況を監視し，ＣＰＵ２の使用状況を示す種々の計測情報を収集する。【００４８】
アプリケーションプログラム２５は，コンピュータ１０のシステムとしてサービスを提供するプログラムである。【００４９】
ネットワーク処理制御装置１のＣＰＵ使用情報取得部１１は，ＣＰＵ２のＣＰＵ使用情報を，ＣＰＵ使用状況監視ドライバ２２から取得する。【００５０】
具体的には，以下の統計値が，ＣＰＵ使用状況監視ドライバ２２で監視・管理され，ＣＰＵ使用情報取得部１１によって取得される。【００５１】
（１）ｕｓｅｒ  ｔｉｍｅ：直近の単位時間あたりのアプリケーションプログラム２５のＣＰＵ２の使用率，
（２）ｓｙｓｔｅｍ  ｔｉｍｅ：直近の単位時間あたりのアプリケーションプログラム２５以外のプログラム（オペレーティングシステム２０，ドライバ２１，２２，２３など）のＣＰＵ２の使用率，
（３）ｉｄｌｅ  ｔｉｍｅ：  直近の単位時間あたりのＣＰＵ２のアイドル率，
（４）実行待ち数：直近の単位時間あたりの実行待ちアプリケーションプログラム数の平均値。【００５２】
判定条件格納部１２は，負荷状態判定部１３によって使用される，ＣＰＵ２の使用状況が高負荷または低負荷であるかを判定するための判定条件を格納する。【００５３】
図４は，判定条件の例を示す図である。【００５４】
図４の条件１，２は，ネットワークドライバ２１の処理モードとして「割り込みモード」が設定されている場合に使用される判定条件，条件３〜７は，処理モードとして「ポーリングモード」が設定されている場合に使用される判定条件である。【００５５】
条件１：「割り込みモード」が設定されている場合に，ＣＰＵ使用状況監視ドライバ２２から取得した計測値が，「ｓｙｓｔｅｍ  ｔｉｍｅ値が一定の閾値以上のとき，かつ，ｉｄｌｅ  ｔｉｍｅ値が０のとき」を満たすときは，ＣＰＵ２の負荷は「高い」と判定する。条件１が満たされると，処理モードは，「割り込みモード」から「ポーリングモード」へ移行する。【００５６】
条件２：「割り込みモード」が設定されている場合に，ＣＰＵ使用状況監視ドライバ２２から取得した計測値が，「条件１」を満たさないときは，ＣＰＵ２の負荷は「低い」と判定する。この場合に，「割り込みモード」が維持される。【００５７】
条件３：「ポーリングモード」が設定されている場合に，ＣＰＵ使用状況監視ドライバ２２から取得した計測値が，「ｓｙｓｔｅｍ  ｔｉｍｅ値が一定の範囲の下限を下回ったとき，かつ，ｉｄｌｅ  ｔｉｍｅ値が０のとき」を満たすときは，ＣＰＵ２の負荷は「より低い」と判定する。この場合に，ポーリングの間隔が短くなるように変更される。【００５８】
条件４：「ポーリングモード」が設定されている場合に，ＣＰＵ使用状況監視ドライバ２２から取得した計測値が，「ｓｙｓｔｅｍ  ｔｉｍｅ値が一定の閾値の範囲の上限を超えるとき，かつ，ｉｄｌｅ  ｔｉｍｅ値が０のとき」を満たすときは，ＣＰＵ２の負荷は「より高い」と判定する。この場合に，ポーリングの間隔が長くなるように変更される。【００５９】
条件５：「ポーリングモード」が設定されている場合に，ＣＰＵ使用状況監視ドライバ２２から取得した計測値が，「ｉｄｌｅ  ｔｉｍｅ値が０のとき，かつ，実行待ち数の増加量が一定の閾値を超えたとき」を満たすときは，ＣＰＵ２の負荷は「より高い」と判定する。この場合に，ポーリングの間隔が長くなるように変更される。【００６０】
条件６：「ポーリングモード」が設定されている場合に，ＣＰＵ使用状況監視ドライバ２２から取得した計測値が，「ｉｄｌｅ  ｔｉｍｅ値が０ではなくなった」を満たすときは，ＣＰＵ２の負荷は「ない」と判定する。この場合に，処理モードが「ポーリングモード」から「割り込みモード」へ移行する。【００６１】
条件７：「ポーリングモード」が設定されている場合に，ＣＰＵ使用状況監視ドライバ２２から取得した計測値が，「ｓｙｓｔｅｍ  ｔｉｍｅ値が一定の範囲以内であるとき，かつ，ｉｄｌｅ  ｔｉｍｅ値が０のとき」を満たすときは，ＣＰＵ２の負荷は「不変」と判定する。この場合には，「ポーリングモード」が維持され，また，ポーリングの間隔も変更されない。【００６２】
負荷状態判定部１３は，判定条件格納部１２の判定条件を参照し，ＣＰＵ使用状況監視ドライバ２２から取得したＣＰＵ２の計測値を用いて，ＣＰＵ２の負荷状態を判定する。【００６３】
また，負荷状態判定部１３は，判定条件にもとづいて，ＣＰＵ２の計測値が所定の上限を上回った場合に，ＣＰＵ２の負荷が「より高い」状態であると判定する。また，ＣＰＵ２の計測値が所定の下限を下回った場合に，ＣＰＵ２の負荷が「より低い」状態であると判定する。【００６４】
処理モード設定部１４は，負荷状態判定部１３によって判定されたＣＰＵ２の負荷状態をもとに，ネットワークドライバ２１の処理モードを設定する。処理モード設定部１４は，判定条件にもとづいて，ＣＰＵ２の負荷状態が「低い」と判定した場合に「割り込みモード」を設定し，負荷状態が「高い」と判定した場合に「ポーリングモード」を設定する。【００６５】
したがって，ＣＰＵ２の負荷が低い状態では，ネットワークドライバ２１は「割り込みモード」で動作する。割り込みモード下では，ネットワークコントローラ５がパケットを受信してリングバッファ６に格納すると，ネットワークコントローラ５の割り込み通知が直ちに発行されるので，パケット受信時からネットワークドライバ２１による受信パケット処理までのレイテンシを最小に抑えることができる。【００６６】
また，ＣＰＵ２の負荷が高い状態では，ネットワークドライバ２１は「ポーリングモード」で動作する。ポーリングモード下では，ネットワークコントローラ５の割り込み通知は発行されず，ネットワークドライバ２１が可変の時間間隔でリングバッファ６内の受信パケットを処理する。そのため，ポーリングの間隔を一定以上の間隔でとることになるので，その間にアプリケーションプログラム２５や他のドライバ２３などが動作可能となる。【００６７】
また，処理モード設定部１４は，ＣＰＵ２の負荷が「より高い」と判定された場合に，ポーリングモードのポーリングの間隔を，現在設定されている間隔より長い間隔に変更する。また，「より低い」と判定された場合に，ポーリングの間隔を，現在設定されている間隔より短い間隔に変更する。【００６８】
このように，ポーリングモード下で，ＣＰＵ２の負荷の程度にもとづいてポーリングの間隔を変動させることにより，ＣＰＵ２の負荷に対応させて必要最低限の間隔を保つことができる。【００６９】
判定条件設定部１５は，判定条件に使用される閾値などをアプリケーションプログラム２５が変更できるようなインタフェースである。コンピュータ１０のユーザは，判定条件格納部１２に保持された判定条件に任意の閾値を設定することができる。【００７０】
図５および図６は，本実施形態の処理の流れを示すフローチャートである。【００７１】
ステップＳ１：ネットワークコントローラ５はパケットの受信を待機する。【００７２】
ステップＳ２：ネットワークコントローラ５がネットワーク４からパケットを受信すると，リングバッファ６へ受信したパケットを格納し，ＣＰＵ２へ割り込み通知を発行する。【００７３】
ステップＳ３：ネットワークドライバ２１はリングバッファ６のパケットを処理する。【００７４】
ステップＳ４：ネットワーク処理制御装置１のＣＰＵ使用情報取得部１１は，ネットワークドライバ２１の割り込みモードでのパケット処理において，ＣＰＵ使用状況監視ドライバ２２からＣＰＵ使用情報（ｓｙｓｔｅｍ  ｔｉｍｅ値，ｉｄｌｅ  ｔｉｍｅ値，アプリケーションの実行待ち数）を取得する。【００７５】
ステップＳ５：負荷状態判定部１３は，ＣＰＵ２の負荷を判定する。ＣＰＵ２の計測値が条件１に該当したときは，負荷が高いと判定し，ステップＳ６の処理へ進む。一方，ＣＰＵ２の計測値が条件１に該当していないときは，ＣＰＵ２の負荷が低いと判定し，ステップＳ１の処理へ戻る。【００７６】
ステップＳ６：処理モード設定部１４は，ポーリングモードを設定する。ネットワークドライバ２１は，ポーリングモードへ移行し，ネットワークコントローラ５の割り込み通知機能を抑止し，所定間隔でポーリングを開始する。なお，ステップＳ５の処理で，ＣＰＵ２の負荷が低いと判定されたときは，ネットワークドライバ２１は，割り込みモードのまま動作する。【００７７】
ステップＳ７：ネットワークドライバ２１は，一定の時間間隔のポーリングにより，リングバッファ６内のパケットを処理する。【００７８】
ステップＳ８：ＣＰＵ使用情報取得部１１は，パケット処理の後，ＣＰＵ使用状況監視ドライバ２２からＣＰＵ使用情報（ｓｙｓｔｅｍ  ｔｉｍｅ値，ｉｄｌｅ  ｔｉｍｅ値，アプリケーションの実行待ち数）を取得する。【００７９】
ステップＳ９：負荷状態判定部１３は，ＣＰＵ使用情報（ＣＰＵ２の計測値）をもとに，ＣＰＵ２の負荷状態を判定する。ＣＰＵ２の計測値が条件６に該当する場合には，ＣＰＵ２の負荷が「ない」と判定し，ステップＳ１４の処理へ進む。また，ＣＰＵ２の計測値が条件６に該当しない場合には，ＣＰＵ２の負荷が「ある」と判定し，ステップＳ１０の処理へ進む。【００８０】
ステップＳ１０：負荷状態判定部１３は，ＣＰＵ２の計測値が，条件４または条件５のいずれかに該当する場合には，ＣＰＵ２の負荷が「より高い」と判定し，ステップＳ１１の処理へ進む。条件４または条件５のいずれにも該当しない場合には，ステップＳ１２の処理へ進む。【００８１】
ステップＳ１１：処理モード設定部１４は，ポーリングの間隔を，現在の間隔より所定の間隔分だけ長くした間隔に変更する。ネットワークドライバ２１は，変更された間隔でポーリングを行う。【００８２】
ステップＳ１２：負荷状態判定部１３は，ＣＰＵ２の計測値が，条件３に該当する場合には，ＣＰＵ２の負荷が「より低い」と判定し，ステップＳ１３の処理へ進む。条件３に該当しない場合には，ステップＳ７の処理へ戻る。【００８３】
ステップＳ１３：処理モード設定部１４は，ポーリングの間隔を，現在の間隔より所定の間隔分だけ短くした間隔に変更する。ネットワークドライバ２１は，変更された間隔でポーリングを行う。【００８４】
ステップＳ１４：処理モード設定部１４は，割り込みモードを設定する。ネットワークドライバ２１は，割り込みモードへ移行し，ネットワークコントローラ５の割り込み通知機能を有効にする。その後，ステップＳ１の処理へ戻る。【００８５】
図７は，ＣＰＵ使用情報の遷移と処理モードの変更タイミングを説明するための図である。【００８６】
図７（Ａ）は，ＣＰＵ使用情報のうち，アプリケーションの実行待ち数の時系列のグラフと，処理モード，判定条件の閾値，ポーリングの間隔が変化するタイミングを示す図，図７（Ｂ）は，ＣＰＵ使用情報のうち，ｓｙｓｔｅｍ  ｔｉｍｅ値の時系列のグラフと，処理モード，判定条件の閾値，ポーリングの間隔が変化するタイミングを示す図である。【００８７】
図７で，閾値ｔｈ１〜ｔｈ３は，以下を示す。【００８８】
閾値ｔｈ１：割り込みモード中はポーリングモードへ移行するｓｙｓｔｅｍ  ｔｉｍｅ値の閾値，または，ポーリングモード中はポーリングの間隔を狭める閾値
閾値ｔｈ２：ポーリングの間隔を長くするｓｙｓｔｅｍ  ｔｉｍｅ値の閾値，
閾値ｔｈ３：ポーリングの間隔を長くする実行待ち数の閾値。【００８９】
以下，タイミングｔｉｍｅＡ〜ｔｉｍｅＤについて説明する。ここでは，前提として，ＣＰＵ使用情報のうち，ｉｄｌｅ  ｔｉｍｅは常に０であるとする。また，ネットワークドライバ２１は，初期設定として，割り込みモードで動作している。【００９０】
ｔｉｍｅＡにおいて，ｓｙｓｔｅｍ  ｔｉｍｅが閾値ｔｈ１を超える。そこで，ＣＰＵ２の負荷が「高い」と判定され，割り込みモードからポーリングモードに変更される。ネットワークドライバ２１はポーリングモードへ移行する。ここで，ポーリングの間隔は初期設定の間隔ｉｎｔｅｒｖａｌ＿１とする。【００９１】
ｔｉｍｅＡ〜ｔｉｍｅＢ間で，間隔ｉｎｔｅｒｖａｌ＿１ではポーリングの間隔が短すぎることから，ｓｙｓｔｅｍ  ｔｉｍｅ値が増加しつづける。【００９２】
そして，ｔｉｍｅＢにおいて，ｓｙｓｔｅｍ  ｔｉｍｅ値が閾値ｔｈ２を超える。ここで，ＣＰＵ２の負荷が「より高い」と判定され，ポーリングの間隔を，１段階長い，間隔ｉｎｔｅｒｖａｌ＿２へ変更する。【００９３】
ｔｉｍｅＢ〜ｔｉｍｅＣ間で，ポーリングの間隔が長くなったため，ｓｙｓｔｅｍ  ｔｉｍｅ値は減少しはじめる。しかし，アプリケーション負荷の増大により，再び，ｓｙｓｔｅｍ  ｔｉｍｅ値が増加しはじめる。【００９４】
ｔｉｍｅＣにおいて，ｓｙｓｔｅｍ  ｔｉｍｅ値が閾値ｔｈ２には達していないが，実行待ち数が閾値ｔｈ３を超えた。そのため，ポーリングの間隔を，さらに１段階長い，間隔ｉｎｔｅｒｖａｌ＿３へ変更する。【００９５】
ｔｉｍｅＣ〜ｔｉｍｅＤ間で，ポーリングの間隔が長くなったので，ｓｙｓｔｅｍ  ｔｉｍｅ値が減少しはじめる。【００９６】
すると，ｔｉｍｅＤにおいて，ｓｙｓｔｅｍ  ｔｉｍｅ値が閾値ｔｈ１を下回る。しかし，ｉｄｌｅ  ｔｉｍｅ値は０なので，ポーリングの間隔を，１段階短い，間隔ｉｎｔｅｒｖａｌ＿２へ戻す。【００９７】
なお，この時点で，ｉｄｌｅ  ｔｉｍｅ値が０でなければ，ポーリングモードから割り込みモードに戻す。また，次に「ポーリングモード」が設定されるときは，ポーリングの間隔は初期設定の間隔ｉｎｔｅｒｖａｌ＿１が設定される。【００９８】
以上，本発明をその実施の形態により説明したが，本発明はその主旨の範囲において種々の変形が可能であることは当然である。例えば，本発明の実施の形態として，ネットワーク処理制御装置１が，ネットワークドライバ２１と協働するプログラムとして構成される場合を例に説明した。しかし，ネットワーク処理制御装置１は，ネットワークドライバ２１内に，一つの機能部として構成されてもよい。
【図１】
2009060530.tif 000003
【図２】
2009060530.tif 000004
【図３】
2009060530.tif 000005
【図４】
2009060530.tif 000006
【図５】
2009060530.tif 000007
【図６】
2009060530.tif 000008
【図７】
2009060530.tif 000009
【国際調査報告】
2009060530.tif 000010
2009060530.tif 000011
2009060530.tif 000012
2009060530.tif 000013