(58)【調査した分野】(Int.Cl.,DB名)
ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
入力された前記パケットを処理するタスクを実行する前記タスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、
当該タスクを割り当てられた前記タスク処理部が前記パケットに対して処理を行い、
前記各タスク処理部のCPU使用率をタスク移動部が取得し、
このCPU使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に前記タスク移動部が移動させ、
前記タスク移動部が前記タスクを移動させる処理が、
取得された前記各タスク処理部の前記CPU使用率が予め定められた閾値と前記各タスク処理部の前記CPU使用率の平均値との加算値を超えているか否かを前記タスク移動部のCPU使用率判定機能が判定し、
前記CPU使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記CPU使用率の合計値が前記閾値を超えない場合に前記タスク移動部のタスク移動処理機能が当該タスクを当該他のタスク処理部に移動させることを特徴とするタスク移動方法。
ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
このネットワークスイッチ装置が備えるプロセッサに、
入力された前記パケットを処理するタスクを実行する前記タスク処理部を決定してそこに当該タスクを割り当てる手順、
前記各タスク処理部が前記パケットを処理する際のCPU使用率を取得する手順、
およびこのCPU使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に移動させる手順
を実行させ、
前記タスクを移動させる手順が、
取得された前記各タスク処理部の前記CPU使用率が予め定められた閾値と前記各タスク処理部の前記CPU使用率の平均値との加算値を超えているか否かを判定する手順、
および前記CPU使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記CPU使用率の合計値が前記閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させる手順
を含むことを特徴とするタスク移動プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0010】
マルチコアプロセッサを利用したネットワークスイッチ装置で問題となっている点は、このマルチコアプロセッサの備える各コア間で負荷に偏りが生じていることである。
図9は、既存の(特許文献2に記載の)ネットワークスイッチ装置910のソフトウェアとしての構成について示す説明図である。
図10は、
図9に示したネットワークスイッチ装置910のハードウェアとしての構成について示す説明図である。
【0011】
ネットワークスイッチ装置910は、ハードウェアとしてはコンピュータプログラムを実行する主体となるマルチコアプロセッサ911と、データを記憶する記憶手段912と、他装置からのデータ入力を受ける入力インタフェース913と、他装置にデータを出力する出力インタフェース914とからなる。
【0012】
マルチコアプロセッサ911は、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコア911a〜911eを備え、コア911aがタスク割当部921、コア911b〜911eがタスク処理部922a〜dとして、各々同時に機能する。
【0013】
他装置からネットワークスイッチ装置910宛に送られてきた入力パケットを、まずタスク割当部921が当該パケットのフロー情報に応じて、前述の特許文献2に記載されたハッシュ法によって振り分けを決定する。続いて、各々のタスク処理部922a〜dが、振り分けられた各々のパケットに対して出力先に対応するデータ形式変換などの処理を行って、その処理結果である出力パケットを、出力インタフェース914を介して他装置に出力する。
【0014】
このタスクの割り当ては、当該パケットのフロー情報(宛先についての情報、たとえばIPアドレス、ポート番号など)に応じて、当該パケットを受信した時点で決定され、その時点で各タスクが作成される。このタスクの分量の増減は、他装置の動作や構成の変化によって決定され、しかも特定の装置の特定の処理の分量が急激に増減することも頻繁にある。従って、ネットワークスイッチ装置の側でこれを事前に予測することは事実上不可能である。
【0015】
また、前述のハッシュ法は、暗号学的ハッシュ関数の特質によって「同一のフロー情報からは必ず同一のハッシュ値が得られる」ので、同一のフロー情報を持つパケットは必ず同一のタスク処理部(即ち同一のコア)に割り当てられるので処理順序の逆転が生じないという利点はあるが、これによってタスクが各コアで均一になるように割り当てられるということではない。
【0016】
即ち、既存のネットワークスイッチ装置910では、特定のタスク処理部(即ち特定のコア)にタスクの割り当てが偏ってしまう可能性が高く、しかも一度あるタスク処理部(コア)に割り当てられたタスクを他のタスク処理部(コア)に再割り当てすることはできない。そのため、特定のタスク処理部(コア)においてCPU使用率が過大となってタスクの輻輳が発生し、マルチコアプロセッサの持つ演算能力を充分に活用できていない状況となっている。特に、当該装置を長時間にわたって継続して運用した場合に、そのような負荷の偏りが生じやすくなる。
【0017】
このような問題点を解決しうる技術は、前述の特許文献1〜6のいずれにも記載されていない。特許文献1に記載の技術は、複数のセンサ値を処理するという情報処理装置に関するものであり、しかも「処理負荷の予測」を必要とするので、負荷の増減を予測することが困難なネットワークスイッチ装置に適用可能な技術ではない。特許文献3もこれと同様に、実行前に「必要なCPU使用率を計算」することを必要とする技術であるので、ネットワークスイッチ装置に適用可能な技術ではない。
【0018】
特許文献2は、
図9〜10に記載した既存のネットワークスイッチ装置910について記載しているに過ぎない。また、一つのタスク処理部(コア)に割り当てられたタスクを他のタスク処理部(コア)に再割り当てするという技術は特許文献4〜5に記載されてはいるが、これは動作中の各コアのCPU使用率に基づいてタスクを移動させるものではないので、ネットワークスイッチ装置における上記の問題を解決することはできない。特許文献6に記載の技術は、そもそも上記の問題とは特に関係ない。
【0019】
本発明の目的は、複数のタスク処理部(コア)の負荷を平準化し、マルチコアプロセッサの演算能力を効率的に活用して処理を行うことを可能とするネットワークスイッチ装置、タスク移動方法、およびタスク移動プログラムを提供することにある。
【課題を解決するための手段】
【0020】
上記目的を達成するため、本発明に係るネットワークスイッチ装置は、ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置であって、入力されたパケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部と、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てるタスク割当部と、各タスク処理部のCPU使用率を取得し、このCPU使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部に移動させるタスク移動部とを備え
、タスク移動部が、各タスク処理部のCPU使用率を取得するCPU使用率取得機能と、取得された各タスク処理部のCPU使用率が予め定められた閾値と各タスク処理部のCPU使用率の平均値との加算値を超えているか否かを判定するCPU使用率判定機能と、CPU使用率が閾値を超えたタスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合のCPU使用率の合計値が閾値を超えない場合にタスクを他のタスク処理部に移動させるタスク移動処理機能とを備える、
ることを特徴とする。
【0021】
上記目的を達成するため、本発明に係るタスク移動方法は、ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、入力されたパケットを処理するタスクを実行するタスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、当該タスクを割り当てられたタスク処理部がパケットに対して処理を行い、各タスク処理部のCPU使用率をタスク移動部が取得し、このCPU使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部にタスク移動部が移動させ
、タスク移動部がタスクを移動させる処理が、取得された各タスク処理部のCPU使用率が予め定められた閾値と各タスク処理部のCPU使用率の平均値との加算値を超えているか否かをタスク移動部のCPU使用率判定機能が判定し、CPU使用率が閾値を超えたタスク処理部で実行されているタスクの中で他のタスク処理部に移動した場合のCPU使用率の合計値が閾値を超えない場合にタスク移動部のタスク移動処理機能がタスクを他のタスク処理部に移動させることを特徴とする。
【0022】
上記目的を達成するため、本発明に係るタスク移動プログラムは、ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、このネットワークスイッチ装置が備えるプロセッサに、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てる手順、各タスク処理部がパケットを処理する際のCPU使用率を取得する手順、およびこのCPU使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部にタスク移動部が移動させる手順を実行させ
、タスクを移動させる手順が、取得された各タスク処理部のCPU使用率が予め定められた閾値と各タスク処理部のCPU使用率の平均値との加算値を超えているか否かを判定する手順、およびCPU使用率が閾値を超えたタスク処理部で実行されているタスクの中で他のタスク処理部に移動した場合のCPU使用率の合計値が閾値を超えない場合にタスクを他のタスク処理部に移動させる手順を含むことを特徴とする。
【発明の効果】
【0023】
本発明は、上記したように、タスク処理部による処理実行中のCPU使用率をタスク移動部が取得して、このCPU使用率によって割り当てられたタスクを移動可能なように構成したので、タスク実行中のCPU使用率の急激な変化にも容易に対応することができる。これによって、複数のタスク処理部(コア)の負荷を平準化し、マルチコアプロセッサの演算能力を効率的に活用して処理を行うことが可能であるという、優れた特徴を持つネットワークスイッチ装置、タスク移動方法、およびタスク移動プログラムを提供することができる。
【発明を実施するための形態】
【0025】
(基本形態)
以下、本発明の基本形態の構成について添付
図1に基づいて説明する。
最初に、基本形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
基本形態に係るネットワークスイッチ装置1は、ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置である。このネットワークスイッチ装置1は、入力されたパケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部3a〜3dと、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てるタスク割当部2と、各タスク処理部のCPU使用率を取得し、このCPU使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部に移動させるタスク移動部4とを備える。
【0026】
以上の構成を備える事により、このネットワークスイッチ装置1は、マルチコアプロセッサの演算能力を効率的に活用して処理を行うことが可能となる。
以下、これをより詳細に説明する。
【0027】
図1は、本発明の基本形態に係るネットワークスイッチ装置1の構成について示す説明図である。ネットワークスイッチ装置1は、タスク割当部2と、複数のタスク処理部3a〜3dと、タスク移動部4とからなる。
【0028】
他装置からネットワークスイッチ装置1宛に送られてきた入力パケットを、まずタスク割当部2が当該パケットのフロー情報に応じて、タスク処理部3a〜3dのいずれによって処理するかの振り分けを決定する。これに続いて、各々のタスク処理部3a〜3dが、振り分けられた各々のパケットに対して出力先に対応するデータ形式変換などの処理を行って、その処理結果である出力パケットを他装置に出力する。
【0029】
タスク移動部4は、各々のタスク処理部3a〜3dのCPU使用率を取得し、そのCPU使用率に応じて各タスク処理部3a〜3dで実行されているタスクを他コアに移動させる処理を行う。
【0030】
前述のように、ネットワークスイッチ装置1で実行されるタスクは事前の予測が困難なものであるが、タスク移動部4を備えることによって各タスクを実行中に移動させることを可能として、この問題を解決することができる。
【0031】
(実施形態)
続いて、本発明の実施形態の構成について添付
図2〜3に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るネットワークスイッチ装置10は、ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置である。このネットワークスイッチ装置10は、入力されたパケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部102a〜dと、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てるタスク割当部101と、各タスク処理部のCPU使用率を取得し、このCPU使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部に移動させるタスク移動部103とを備える。
【0032】
また、タスク移動部103は、各タスク処理部のCPU使用率を取得するCPU使用率取得機能103bと、取得された各タスク処理部のCPU使用率が予め定められた閾値を超えているか否かを判定するCPU使用率判定機能103cと、CPU使用率が閾値を超えたタスク処理部で実行されているタスクの中で他のタスク処理部に移動した場合のCPU使用率の合計値が閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させるタスク移動処理機能103dとを備える。
【0033】
また、タスク移動部103は、予め与えられた監視周期の経過、または保守者設定処理や発生イベント処理による装置設定関数からのコールバックに反応してCPU使用率取得機能の動作を開始制御する開始処理機能103aをさらに備える。さらに、タスク移動部103のタスク移動処理機能103dは、移動可能なタスクおよび移動先のタスク処理部の組み合わせが複数組存在する場合に、移動元もしくは移動先の各タスク処理部のCPU使用率がこのCPU使用率の平均値に最も近くなる組み合わせを選択する機能を備える。
【0034】
そして、ネットワークスイッチ装置10は、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサ11を備え、各タスク処理部102a〜dがそれぞれ異なるコアにおいて機能する。
【0035】
以上の構成を備える事により、このネットワークスイッチ装置10は、マルチコアプロセッサの演算能力を効率的に活用し、タスク実行中のCPU使用率の急激な変化にも容易に対応して処理を行うことが可能となる。
以下、これをより詳細に説明する。
【0036】
図2は、本発明の実施形態に係るネットワークスイッチ装置10のソフトウェアとしての構成について示す説明図である。
図3は、
図2に示したネットワークスイッチ装置10のハードウェアとしての構成について示す説明図である。ネットワークスイッチ装置10は、ネットワーク構成においては、たとえばルータ、リピータ、ゲートウェイなどのように、ネットワークを介して伝送されるデータパケットを他のネットワークに中継する装置である。
【0037】
ネットワークスイッチ装置10は、ハードウェアとしてはコンピュータプログラムを実行する主体となるマルチコアプロセッサ11と、データを記憶する記憶手段12と、他装置からのデータ入力を受ける入力インタフェース13と、他装置にデータを出力する出力インタフェース14とからなる。
【0038】
マルチコアプロセッサ11は、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコア11a〜11fを備え、コア11aがタスク割当部101、コア11b〜11eがタスク処理部102a〜d、コア11fがタスク移動部103として、各々同時に機能する。
図2〜3ではコアを6つ、タスク処理部を4つ備えた例を示したが、これ以外の数であってもよい。
【0039】
他装置からネットワークスイッチ装置10宛に送られてきた入力パケットを、まずタスク割当部101が当該パケットのフロー情報に応じて振り分けを決定する。ここでタスク割当部101によるパケットの振り分けは、たとえば前述の特許文献2などに記載された公知技術を利用することができる。
【0040】
続いて、各々のタスク処理部102a〜dが、振り分けられた各々のパケットに対して出力先に対応するデータ形式変換などの処理を行って、その処理結果である出力パケットを、出力インタフェース14を介して他装置に出力する。タスク処理部102a〜dは、最終的なデータの出力先が各々異なるものとしてもよいし、具体的な処理内容が各々異なるものとしてもよい。
【0041】
タスク移動部103は、各々のタスク処理部102a〜dに該当する各コア11b〜11eのCPU使用率を取得し、そのCPU使用率に応じて各コア11b〜11eで実行されているタスクを他コアに移動させる処理を行う。
【0042】
タスク移動部103は、開始処理機能103a、CPU使用率取得機能103b、CPU使用率判定機能103c、およびタスク移動処理機能103dといった各機能を備える。開始処理機能103aは、予め与えられた監視周期の経過、または装置設定関数からのコールバックに反応して、次に述べるCPU使用率取得機能103bによる処理を開始させる制御信号を発する。CPU使用率取得機能103bは、開始処理機能103aからの制御信号に反応して、各コア11b〜11eのCPU使用率を取得する。
【0043】
CPU使用率判定機能103cは、CPU使用率取得機能103bが取得した各コア11b〜11eのCPU使用率から、各コア11b〜11eのタスク処理部102a〜dの中でCPU使用率が予め定められた閾値を超えているものが存在するか否かを判定する。タスク移動処理機能103dは、タスク処理部102a〜dで実行されているタスクの中で移動すべきものが存在するか否かを判定し、そのタスクを実際に他のタスク処理部102a〜d(コア11b〜11e)に移動させる。
【0044】
図4は、
図2に示したタスク移動部103の動作について示すフローチャートである。ネットワークスイッチ装置10の電源投入と共に動作を開始したタスク移動部103は、まず開始処理機能103aがタイマ機能に予め与えられた監視周期を設定してリセットし(ステップS101)、その監視周期が経過したか(ステップS102)、もしくは装置設定関数からのコールバックがあるか(ステップS103)否かについて判断する。
【0045】
ここでいう装置設定関数とは、例えば保守者がコマンドを使ってポート間の疎通設定を行う際に呼び出される関数や、装置への拡張カードの増設、パケット処理負荷の増大、ポート障害などのイベント発生によって呼び出される関数などをいう。
【0046】
また、ステップS103は前述のタイマ機能の時刻を書き替えることによっても実現可能である。監視周期の経過も装置設定関数からのコールバックもなければ、開始処理機能103aは引き続きステップS102〜103の判断を継続する。監視周期の経過、もしくは装置設定関数からのコールバックがあった場合は(ステップS102もしくは103がイエス)、CPU使用率取得機能103bが各コア11b〜11eのCPU使用率を取得する(ステップS104)。
【0047】
これに続いて、CPU使用率判定機能103cが、CPU使用率取得機能103bが取得した各コア11b〜11eのCPU使用率から、各コア11b〜11eのタスク処理部102a〜dの中でCPU使用率が予め定められた閾値を超えているものが存在するか否かを判定する(ステップS105、詳細は
図5に後述)。閾値を超えているものが存在しなければステップS101に処理が戻る。
【0048】
閾値を超えているコア11b〜11eが存在すれば(ステップS105がイエス)、タスク移動処理機能103dがタスク処理部102a〜d(コア11b〜11e)で実行されている各タスクについて、移動すべきものが存在するか否かを判定し(ステップS106、詳細は
図6に後述)、移動すべきと判断されたタスクを実際に移動させる処理を行う(ステップS107)。移動すべきと判断されたタスクがなければステップS101に処理が戻る。また、タスクを移動させた場合は、ステップS104に処理が戻って、改めてCPU使用率を取得する。
【0049】
図5は、
図4のステップS105で示したCPU使用率判定機能103cによる処理をより詳細に示すフローチャートである。CPU使用率判定機能103cはまず、タスク処理部102a〜d(コア11b〜11e)で動作する全てのタスクについて、各タスクごとのCPU使用時間を計算する(ステップS111)。CPU使用率判定機能103cはこれに続いて、コア11b〜11eごとにCPU使用時間を積算して、コアごとのCPU使用率、および全コアの平均CPU使用率を算出する(ステップS112)。
【0050】
ここで、コア11b〜11e(タスク処理部102a〜d)ごとのCPU使用率を各々r
1、r
2、r
3、r
4とし、これらの平均値を平均CPU使用率aとする。CPU使用率判定機能103cは、予め与えられた閾値をtとすると、r
i(i=1,2,3,4)が以下の数1の条件を満たすコアが存在するか否かを判定する(ステップS113)。
【0052】
数1を満たすコア、即ちCPU使用率r
iと平均値aとの差が閾値を超えるコアが存在しなければ、各コアのCPU使用率の差は許容範囲内であると判定し、
図4のステップS101に処理が戻り、タイマ機能を改めてリセットして待機状態に戻る。そのようなコアが存在すれば、そのコア(タスク処理部)を次に述べるタスク移動処理の対象として、
図4のステップS106に処理を進める。
【0053】
図6は、
図4のステップS106〜107で示したタスク移動処理機能103dによる処理をより詳細に示すフローチャートである。タスク移動処理機能103dは、CPU使用率判定機能103cによってタスク移動処理の対象とされたコア11b〜11e(タスク処理部102a〜d)で実行されている各タスクについて、他のコア(タスク処理部)に移動させることが可能なタスクが存在するか否かについて判断する(ステップS121、
図4のステップS106)。
【0054】
このステップS121の処理でいう「移動させることが可能なタスク」とは、タスク移動処理の対象ではない他のコア(タスク処理部)のCPU使用率に当該タスクのCPU使用率を加算した値が平均CPU使用率a+閾値tを越えないタスクをいう。即ち、当該タスクのCPU使用率をr
ij(i=1,2,3,4、jは自然数、r
ijはi番目のCPUで実行されるj番目のタスク)、移動先のCPU使用率をr
k(k=1,2,3,4、k≠i)とすると、以下の数2の条件を満たすタスクが存在するか否かを、タスク移動処理機能103dは判断する。
【0056】
数2の条件を満たすタスクが存在しなければ、ステップS101に処理が戻る。数2の条件を満たすタスクが存在すれば、タスク移動処理機能103dはそのタスクをそのコア(タスク処理部)に移動させる処理を行って(ステップS122、
図4のステップS107)、ステップS104に処理が戻り、改めてCPU使用率を取得し、全てのコア(タスク処理部)でCPU使用率が数1の条件を満たさなくなるまで処理を繰り返し継続する。
【0057】
図7は、
図6のステップS121で示した処理で、タスクを移動させることが不可能であると判断される一例について示した説明図である。
図8は、
図6のステップS121で示した処理で、タスクを移動させることが可能であると判断される一例について示した説明図である。
【0058】
今、コア11b(タスク処理部102a)でCPU利用率r
1がa+tを越えたものとする。このコア11b(タスク処理部102a)では3つのタスクが実行されており、その各タスクごとのCPU利用率を各々r
11、r
12、r
13とする。ここで、r
1=r
11+r
12+r
13である。また、コア11c〜11e(タスク処理部102b〜d)のCPU利用率を各々r
2〜r
4とする。
【0059】
ここで、CPU利用率r
11のタスクをコア11b(タスク処理部102a)からコア11c(タスク処理部102b)に移動させたと仮定した場合、移動した後のコア11c(タスク処理部102b)のCPU利用率r
2+r
11がa+tを越える。
図7はこの状態を示している。r
3、r
4についても同様である。即ち、このCPU利用率r
11のタスクを他のコア(タスク処理部)に移動させることはできない。
【0060】
また、CPU利用率r
12のタスクをコア11b(タスク処理部102a)からコア11c(タスク処理部102b)に移動させたと仮定した場合、移動した後のコア11c(タスク処理部102b)のCPU利用率r
2+r
12はa+tを越えない。
図8はこの状態を示している。即ち、このCPU利用率r
12のタスクをコア11c(タスク処理部102b)に移動させることはできる。ちなみにこれをコア11c〜11d(タスク処理部102c〜d)に移動させることは、移動した後のCPU利用率がa+tを越えるのでできない。
【0061】
タスク移動処理機能103dは、このような判断をCPU利用率がa+tを越えたコア(タスク処理部)で実行されている全てのタスクについて、かつ他の全てのコア(タスク処理部)について行い、当該タスクを移動可能なコア(タスク処理部)が存在するか否かを判定する。
【0062】
ここで、移動可能と判定されるタスクT
ij(iはそのタスクが割り当てられたコアの番号、jはこのコアに割り当てられたタスクの番号)とその移動先のコアC
n(nはコアの番号、i≠nでかつiとnは同一範囲)との組み合わせ{T
ij,C
n}が複数存在する場合、移動元のコアのタスクT
ij移動後のCPU利用率が最も平均値aに近くなる組み合わせを選択することもできるし、また移動先のC
nでタスクT
ij移動後のCPU利用率が最も平均値aに近くなる組み合わせを選択してもよい。
【0063】
(実施形態の全体的な動作)
次に、上記の実施形態の全体的な動作について説明する。
本実施形態に係るタスク移動方法は、ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置10にあって、入力されたパケットを処理するタスクを実行するタスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、当該タスクを割り当てられたタスク処理部がパケットに対して処理を行い、各タスク処理部のCPU使用率をタスク移動部が取得し(
図4・ステップS104)、このCPU使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部にタスク移動部が移動させる(
図4・ステップS105〜107)。
【0064】
また、このタスク移動部がタスクを移動させる処理は、
取得された各タスク処理部のCPU使用率が予め定められた閾値を超えているか否かをタスク移動部のCPU使用率判定機能が判定し(
図4・ステップS105)、
CPU使用率が閾値を超えたタスク処理部で実行されているタスクの中で他のタスク処理部に移動した場合のCPU使用率の合計値が閾値を超えない場合にタスク移動部のタスク移動処理機能が当該タスクを当該他のタスク処理部に移動させる(
図4・ステップS106〜107)。
【0065】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するネットワークスイッチ装置10が備えるマルチコアプロセッサ11に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、DVD、CD、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
【0066】
本実施形態によれば、マルチコアプロセッサ11の各コア11b〜11e(タスク処理部102a〜d)でCPU使用率が平均化され、タスクの待ち状態による輻輳の発生を有効に抑制することが可能となる。従って、マルチコアプロセッサ11の持つ演算能力を効率的に活用して装置性能を向上させることが可能となる。かつ、ネットワークの負荷状態は急激に変化しやすいものであるが、この負荷状態の急変に対しても、装置性能の低下を起こさずに容易に対応することが可能となる。
【0067】
(実施形態の拡張)
本実施形態は、その趣旨を改変しない範囲で、様々な拡張が考えられる。以下、それらについて説明する。
各タスクの出力先や処理内容(より具体的にはフロー情報に含まれるIPアドレスやポート番号)に応じて、タスクごとの優先度を予め設定し、タスク移動部のタスク移動処理機能がこの設定された優先度の高低に応じてタスクの移動先を決定するという構成にすることも可能である。
【0068】
より具体的には、より優先度の高いタスクを、よりCPU使用率の低いコアに割り当てる。この構成にすることにより、優先度の高いタスクがより早く実行されるようになり、処理に伴って発生する輻輳を小さく抑制することが可能となる。
【0069】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【0070】
上述した実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【0071】
(付記1) ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置であって、
入力された前記パケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部と、
前記入力されたパケットを処理するタスクを実行する前記タスク処理部を決定してそこに当該タスクを割り当てるタスク割当部と、
前記各タスク処理部のCPU使用率を取得し、このCPU使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に移動させるタスク移動部と
を備えることを特徴とするネットワークスイッチ装置。
【0072】
(付記2) 前記タスク移動部が、
前記各タスク処理部のCPU使用率を取得するCPU使用率取得機能と、
取得された前記各タスク処理部の前記CPU使用率が予め定められた閾値を超えているか否かを判定するCPU使用率判定機能と、
前記CPU使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記CPU使用率の合計値が前記閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させるタスク移動処理機能と
を備えることを特徴とする、付記1に記載のネットワークスイッチ装置。
【0073】
(付記3) 前記タスク移動部が、
予め与えられた監視周期の経過、または保守者設定処理や発生イベント処理による装置設定関数からのコールバックに反応して前記CPU使用率取得機能の動作を開始制御する開始処理機能
をさらに備えることを特徴とする、付記2に記載のネットワークスイッチ装置。
【0074】
(付記4) 前記タスク移動部の前記タスク移動処理機能が、
移動可能な前記タスクおよび移動先の前記タスク処理部の組み合わせが複数組存在する場合に、移動元もしくは移動先の前記各タスク処理部の前記CPU使用率がこのCPU使用率の平均値に最も近くなる前記組み合わせを選択する機能
を備えることを特徴とする、付記2に記載のネットワークスイッチ装置。
【0075】
(付記5) それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサを備え、
前記各タスク処理部がそれぞれ異なる前記コアにおいて機能することを特徴とする、付記1に記載のネットワークスイッチ装置。
【0076】
(付記6) ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
入力された前記パケットを処理するタスクを実行する前記タスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、
当該タスクを割り当てられた前記タスク処理部が前記パケットに対して処理を行い、
前記各タスク処理部のCPU使用率をタスク移動部が取得し、
このCPU使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に前記タスク移動部が移動させる
ことを特徴とするタスク移動方法。
【0077】
(付記7) 前記タスク移動部が前記タスクを移動させる処理が、
取得された前記各タスク処理部の前記CPU使用率が予め定められた閾値を超えているか否かを前記タスク移動部のCPU使用率判定機能が判定し、
前記CPU使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記CPU使用率の合計値が前記閾値を超えない場合に前記タスク移動部のタスク移動処理機能が当該タスクを当該他のタスク処理部に移動させる
ことを特徴とする、付記6に記載のタスク移動方法。
【0078】
(付記8) 前記ネットワークスイッチ装置が、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサを備えるものであると共に、
前記各タスク処理部をそれぞれ異なる前記コアにおいて機能させることを特徴とする、付記6に記載のタスク移動方法。
【0079】
(付記9) ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
このネットワークスイッチ装置が備えるプロセッサに、
入力された前記パケットを処理するタスクを実行する前記タスク処理部を決定してそこに当該タスクを割り当てる手順、
前記各タスク処理部が前記パケットを処理する際のCPU使用率を取得する手順、
およびこのCPU使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に前記タスク移動部が移動させる手順
を実行させることを特徴とするタスク移動プログラム。
【0080】
(付記10) 前記タスクを移動させる手順が、
取得された前記各タスク処理部の前記CPU使用率が予め定められた閾値を超えているか否かを判定する手順、
および前記CPU使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記CPU使用率の合計値が前記閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させる手順
を含むことを特徴とする、付記9に記載のタスク移動プログラム。
【0081】
(付記11) 前記ネットワークスイッチ装置が、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサを備えるものであると共に、
前記各タスク処理部をそれぞれ異なる前記コアにおいて機能させることを特徴とする、付記9に記載のタスク移動プログラム。