(57)【要約】【課題】複数のタスク処理部の負荷を平準化し、マルチコアプロセッサの演算能力を効率的に活用して処理を行うことを可能とするネットワークスイッチ装置等を提供する。【解決手段】ネットワークスイッチ装置１は、入力されたパケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部３ａ〜３ｄと、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てるタスク割当部２と、各タスク処理部のＣＰＵ使用率を取得し、このＣＰＵ使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部に移動させるタスク移動部４とを備える。【選択図】図１
2014110538.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置であって、
入力された前記パケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部と、
前記入力されたパケットを処理するタスクを実行する前記タスク処理部を決定してそこに当該タスクを割り当てるタスク割当部と、
前記各タスク処理部のＣＰＵ使用率を取得し、このＣＰＵ使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に移動させるタスク移動部と
を備えることを特徴とするネットワークスイッチ装置。
【請求項２】
前記タスク移動部が、
前記各タスク処理部のＣＰＵ使用率を取得するＣＰＵ使用率取得機能と、
取得された前記各タスク処理部の前記ＣＰＵ使用率が予め定められた閾値を超えているか否かを判定するＣＰＵ使用率判定機能と、
前記ＣＰＵ使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記ＣＰＵ使用率の合計値が前記閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させるタスク移動処理機能と
を備えることを特徴とする、請求項１に記載のネットワークスイッチ装置。
【請求項３】
前記タスク移動部が、
予め与えられた監視周期の経過、または保守者設定処理や発生イベント処理による装置設定関数からのコールバックに反応して前記ＣＰＵ使用率取得機能の動作を開始制御する開始処理機能
をさらに備えることを特徴とする、請求項２に記載のネットワークスイッチ装置。
【請求項４】
前記タスク移動部の前記タスク移動処理機能が、
移動可能な前記タスクおよび移動先の前記タスク処理部の組み合わせが複数組存在する場合に、移動元もしくは移動先の前記各タスク処理部の前記ＣＰＵ使用率がこのＣＰＵ使用率の平均値に最も近くなる前記組み合わせを選択する機能
を備えることを特徴とする、請求項２に記載のネットワークスイッチ装置。
【請求項５】
それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサを備え、
前記各タスク処理部がそれぞれ異なる前記コアにおいて機能することを特徴とする、請求項１に記載のネットワークスイッチ装置。
【請求項６】
ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
入力された前記パケットを処理するタスクを実行する前記タスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、
当該タスクを割り当てられた前記タスク処理部が前記パケットに対して処理を行い、
前記各タスク処理部のＣＰＵ使用率をタスク移動部が取得し、
このＣＰＵ使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に前記タスク移動部が移動させる
ことを特徴とするタスク移動方法。
【請求項７】
前記タスク移動部が前記タスクを移動させる処理が、
取得された前記各タスク処理部の前記ＣＰＵ使用率が予め定められた閾値を超えているか否かを前記タスク移動部のＣＰＵ使用率判定機能が判定し、
前記ＣＰＵ使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記ＣＰＵ使用率の合計値が前記閾値を超えない場合に前記タスク移動部のタスク移動処理機能が当該タスクを当該他のタスク処理部に移動させる
ことを特徴とする、請求項６に記載のタスク移動方法。
【請求項８】
ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
このネットワークスイッチ装置が備えるプロセッサに、
入力された前記パケットを処理するタスクを実行する前記タスク処理部を決定してそこに当該タスクを割り当てる手順、
前記各タスク処理部が前記パケットを処理する際のＣＰＵ使用率を取得する手順、
およびこのＣＰＵ使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に前記タスク移動部が移動させる手順
を実行させることを特徴とするタスク移動プログラム。
【請求項９】
前記タスクを移動させる手順が、
取得された前記各タスク処理部の前記ＣＰＵ使用率が予め定められた閾値を超えているか否かを判定する手順、
および前記ＣＰＵ使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記ＣＰＵ使用率の合計値が前記閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させる手順
を含むことを特徴とする、請求項８に記載のタスク移動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークスイッチ装置、タスク移動方法、およびタスク移動プログラムに関し、特にマルチコアプロセッサのリソースを有効に活用しうるネットワークスイッチ装置などに関する。
【背景技術】
【０００２】
インターネットは一般的に、たとえばルータ、リピータ、ゲートウェイなどのように、通信パケットを一つのネットワークから他のネットワークに転送するデータ中継装置を多数含む。本明細書では、それらの装置を総称してネットワークスイッチ装置という。
【０００３】
ネットワークスイッチ装置は、受信したパケットのヘッダ情報の中に含まれるフロー情報（当該パケットの宛先についての情報、たとえばＩＰアドレス、ポート番号など）に基づいて、当該パケットに対して必要なデータ形式の変換などの処理を行った上で、そのフロー情報に応じたネットワークに当該パケットを転送する役割を果たす。即ち、ネットワークスイッチ装置は、インターネットの要所ごとに配置され、インターネットが機能を果たすために不可欠なものである。
【０００４】
近年は、インターネットを介して、高画質の映像や高音質の音声などを含むいわゆるリッチコンテンツのリアルタイム配信も多く行われるようになっている。このため、インターネットの要所に配置されるネットワークスイッチ装置は、ますます多くの量のパケットをリアルタイムに処理することが要求されている。
【０００５】
その一方でネットワークスイッチ装置が備えるプロセッサは、これまではクロック周波数を高周波数化することによって処理容量の向上に対応してきた。しかしながら、近年はプロセッサの動作に伴う発熱量などの問題により、クロック周波数の増加は物理的限界に達しているので、演算処理の実施主体であるコアを複数備えたマルチコアプロセッサが利用されるようになってきている。
【０００６】
これに関連して、以下の各々の技術文献がある。その中でも特許文献１には、各サブＣＰＵで検出された負荷情報から当該ＣＰＵごとの処理負荷を予測し、それに応じて各タスクを各ＣＰＵに割り当てるという情報処理装置が記載されている。特許文献２には、マルチコアプロセッサを搭載し、ハッシュ法、即ちフロー情報を暗号学的ハッシュ関数に適用して得られるハッシュ値によって各コアに受信パケットを振り分けるというパケット振分装置が記載されている。
【０００７】
特許文献３には、各タスクの発生元のプログラムの必要計算量から必要なＣＰＵ使用率を計算し、その計算された必要ＣＰＵ使用率に基づいてマルチコアプロセッサ上で当該タスクを実行するコアを選択するというタスク割当装置が記載されている。特許文献４には、マルチコアプロセッサにおける処理負荷の分散のため、各コアの機能情報に応じて割り振られた基本モジュール（処理内容）を再配置するという技術が記載されている。
【０００８】
特許文献５には、マルチコアプロセッサシステムにおいて各コアのキャッシュ使用状況に応じてコア間でタスクを移動させるという演算資源割当装置が記載されている。特許文献６には、マルチコアプロセッサのうちいくつのコアを利用して各タスクを稼働させるかを選択するという制御方法および装置が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１１−１４１７８２号公報
【特許文献２】特開２０１０−１６１５４６号公報
【特許文献３】特開２０１０−２７７１７１号公報
【特許文献４】再特ＷＯ２００７／０３７００６号
【特許文献５】再特ＷＯ２０１０／０９３００３号
【特許文献６】特開２００９−０９３３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
マルチコアプロセッサを利用したネットワークスイッチ装置で問題となっている点は、このマルチコアプロセッサの備える各コア間で負荷に偏りが生じていることである。図９は、既存の（特許文献２に記載の）ネットワークスイッチ装置９１０のソフトウェアとしての構成について示す説明図である。図１０は、図９に示したネットワークスイッチ装置９１０のハードウェアとしての構成について示す説明図である。
【００１１】
ネットワークスイッチ装置９１０は、ハードウェアとしてはコンピュータプログラムを実行する主体となるマルチコアプロセッサ９１１と、データを記憶する記憶手段９１２と、他装置からのデータ入力を受ける入力インタフェース９１３と、他装置にデータを出力する出力インタフェース９１４とからなる。
【００１２】
マルチコアプロセッサ９１１は、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコア９１１ａ〜９１１ｅを備え、コア９１１ａがタスク割当部９２１、コア９１１ｂ〜９１１ｅがタスク処理部９２２ａ〜ｄとして、各々同時に機能する。
【００１３】
他装置からネットワークスイッチ装置９１０宛に送られてきた入力パケットを、まずタスク割当部９２１が当該パケットのフロー情報に応じて、前述の特許文献２に記載されたハッシュ法によって振り分けを決定する。続いて、各々のタスク処理部９２２ａ〜ｄが、振り分けられた各々のパケットに対して出力先に対応するデータ形式変換などの処理を行って、その処理結果である出力パケットを、出力インタフェース９１４を介して他装置に出力する。
【００１４】
このタスクの割り当ては、当該パケットのフロー情報（宛先についての情報、たとえばＩＰアドレス、ポート番号など）に応じて、当該パケットを受信した時点で決定され、その時点で各タスクが作成される。このタスクの分量の増減は、他装置の動作や構成の変化によって決定され、しかも特定の装置の特定の処理の分量が急激に増減することも頻繁にある。従って、ネットワークスイッチ装置の側でこれを事前に予測することは事実上不可能である。
【００１５】
また、前述のハッシュ法は、暗号学的ハッシュ関数の特質によって「同一のフロー情報からは必ず同一のハッシュ値が得られる」ので、同一のフロー情報を持つパケットは必ず同一のタスク処理部（即ち同一のコア）に割り当てられるので処理順序の逆転が生じないという利点はあるが、これによってタスクが各コアで均一になるように割り当てられるということではない。
【００１６】
即ち、既存のネットワークスイッチ装置９１０では、特定のタスク処理部（即ち特定のコア）にタスクの割り当てが偏ってしまう可能性が高く、しかも一度あるタスク処理部（コア）に割り当てられたタスクを他のタスク処理部（コア）に再割り当てすることはできない。そのため、特定のタスク処理部（コア）においてＣＰＵ使用率が過大となってタスクの輻輳が発生し、マルチコアプロセッサの持つ演算能力を充分に活用できていない状況となっている。特に、当該装置を長時間にわたって継続して運用した場合に、そのような負荷の偏りが生じやすくなる。
【００１７】
このような問題点を解決しうる技術は、前述の特許文献１〜６のいずれにも記載されていない。特許文献１に記載の技術は、複数のセンサ値を処理するという情報処理装置に関するものであり、しかも「処理負荷の予測」を必要とするので、負荷の増減を予測することが困難なネットワークスイッチ装置に適用可能な技術ではない。特許文献３もこれと同様に、実行前に「必要なＣＰＵ使用率を計算」することを必要とする技術であるので、ネットワークスイッチ装置に適用可能な技術ではない。
【００１８】
特許文献２は、図９〜１０に記載した既存のネットワークスイッチ装置９１０について記載しているに過ぎない。また、一つのタスク処理部（コア）に割り当てられたタスクを他のタスク処理部（コア）に再割り当てするという技術は特許文献４〜５に記載されてはいるが、これは動作中の各コアのＣＰＵ使用率に基づいてタスクを移動させるものではないので、ネットワークスイッチ装置における上記の問題を解決することはできない。特許文献６に記載の技術は、そもそも上記の問題とは特に関係ない。
【００１９】
本発明の目的は、複数のタスク処理部（コア）の負荷を平準化し、マルチコアプロセッサの演算能力を効率的に活用して処理を行うことを可能とするネットワークスイッチ装置、タスク移動方法、およびタスク移動プログラムを提供することにある。
【課題を解決するための手段】
【００２０】
上記目的を達成するため、本発明に係るネットワークスイッチ装置は、ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置であって、入力されたパケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部と、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てるタスク割当部と、各タスク処理部のＣＰＵ使用率を取得し、このＣＰＵ使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部に移動させるタスク移動部とを備えることを特徴とする。
【００２１】
上記目的を達成するため、本発明に係るタスク移動方法は、ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、入力されたパケットを処理するタスクを実行するタスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、当該タスクを割り当てられたタスク処理部がパケットに対して処理を行い、各タスク処理部のＣＰＵ使用率をタスク移動部が取得し、このＣＰＵ使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部にタスク移動部が移動させることを特徴とする。
【００２２】
上記目的を達成するため、本発明に係るタスク移動プログラムは、ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、このネットワークスイッチ装置が備えるプロセッサに、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てる手順、各タスク処理部がパケットを処理する際のＣＰＵ使用率を取得する手順、およびこのＣＰＵ使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部にタスク移動部が移動させる手順を実行させることを特徴とする。
【発明の効果】
【００２３】
本発明は、上記したように、タスク処理部による処理実行中のＣＰＵ使用率をタスク移動部が取得して、このＣＰＵ使用率によって割り当てられたタスクを移動可能なように構成したので、タスク実行中のＣＰＵ使用率の急激な変化にも容易に対応することができる。これによって、複数のタスク処理部（コア）の負荷を平準化し、マルチコアプロセッサの演算能力を効率的に活用して処理を行うことが可能であるという、優れた特徴を持つネットワークスイッチ装置、タスク移動方法、およびタスク移動プログラムを提供することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の基本形態に係るネットワークスイッチ装置の構成について示す説明図である。
【図２】本発明の実施形態に係るネットワークスイッチ装置のソフトウェアとしての構成について示す説明図である。
【図３】図２に示したネットワークスイッチ装置のハードウェアとしての構成について示す説明図である。
【図４】図２に示したタスク移動部の動作について示すフローチャートである。
【図５】図４のステップＳ１０５で示したＣＰＵ使用率判定機能による処理をより詳細に示すフローチャートである。
【図６】図４のステップＳ１０６〜１０７で示したタスク移動処理機能による処理をより詳細に示すフローチャートである。
【図７】図６のステップＳ１２１で示した処理で、タスクを移動させることが不可能であると判断される一例について示した説明図である。
【図８】図６のステップＳ１２１で示した処理で、タスクを移動させることが可能であると判断される一例について示した説明図である。
【図９】図９は、既存の（特許文献２に記載の）ネットワークスイッチ装置のソフトウェアとしての構成について示す説明図である。
【図１０】図９に示したネットワークスイッチ装置のハードウェアとしての構成について示す説明図である。
【発明を実施するための形態】
【００２５】
（基本形態）
以下、本発明の基本形態の構成について添付図１に基づいて説明する。
最初に、基本形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
基本形態に係るネットワークスイッチ装置１は、ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置である。このネットワークスイッチ装置１は、入力されたパケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部３ａ〜３ｄと、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てるタスク割当部２と、各タスク処理部のＣＰＵ使用率を取得し、このＣＰＵ使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部に移動させるタスク移動部４とを備える。
【００２６】
以上の構成を備える事により、このネットワークスイッチ装置１は、マルチコアプロセッサの演算能力を効率的に活用して処理を行うことが可能となる。
以下、これをより詳細に説明する。
【００２７】
図１は、本発明の基本形態に係るネットワークスイッチ装置１の構成について示す説明図である。ネットワークスイッチ装置１は、タスク割当部２と、複数のタスク処理部３ａ〜３ｄと、タスク移動部４とからなる。
【００２８】
他装置からネットワークスイッチ装置１宛に送られてきた入力パケットを、まずタスク割当部２が当該パケットのフロー情報に応じて、タスク処理部３ａ〜３ｄのいずれによって処理するかの振り分けを決定する。これに続いて、各々のタスク処理部３ａ〜３ｄが、振り分けられた各々のパケットに対して出力先に対応するデータ形式変換などの処理を行って、その処理結果である出力パケットを他装置に出力する。
【００２９】
タスク移動部４は、各々のタスク処理部３ａ〜３ｄのＣＰＵ使用率を取得し、そのＣＰＵ使用率に応じて各タスク処理部３ａ〜３ｄで実行されているタスクを他コアに移動させる処理を行う。
【００３０】
前述のように、ネットワークスイッチ装置１で実行されるタスクは事前の予測が困難なものであるが、タスク移動部４を備えることによって各タスクを実行中に移動させることを可能として、この問題を解決することができる。
【００３１】
（実施形態）
続いて、本発明の実施形態の構成について添付図２〜３に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るネットワークスイッチ装置１０は、ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置である。このネットワークスイッチ装置１０は、入力されたパケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部１０２ａ〜ｄと、入力されたパケットを処理するタスクを実行するタスク処理部を決定してそこに当該タスクを割り当てるタスク割当部１０１と、各タスク処理部のＣＰＵ使用率を取得し、このＣＰＵ使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部に移動させるタスク移動部１０３とを備える。
【００３２】
また、タスク移動部１０３は、各タスク処理部のＣＰＵ使用率を取得するＣＰＵ使用率取得機能１０３ｂと、取得された各タスク処理部のＣＰＵ使用率が予め定められた閾値を超えているか否かを判定するＣＰＵ使用率判定機能１０３ｃと、ＣＰＵ使用率が閾値を超えたタスク処理部で実行されているタスクの中で他のタスク処理部に移動した場合のＣＰＵ使用率の合計値が閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させるタスク移動処理機能１０３ｄとを備える。
【００３３】
また、タスク移動部１０３は、予め与えられた監視周期の経過、または保守者設定処理や発生イベント処理による装置設定関数からのコールバックに反応してＣＰＵ使用率取得機能の動作を開始制御する開始処理機能１０３ａをさらに備える。さらに、タスク移動部１０３のタスク移動処理機能１０３ｄは、移動可能なタスクおよび移動先のタスク処理部の組み合わせが複数組存在する場合に、移動元もしくは移動先の各タスク処理部のＣＰＵ使用率がこのＣＰＵ使用率の平均値に最も近くなる組み合わせを選択する機能を備える。
【００３４】
そして、ネットワークスイッチ装置１０は、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサ１１を備え、各タスク処理部１０２ａ〜ｄがそれぞれ異なるコアにおいて機能する。
【００３５】
以上の構成を備える事により、このネットワークスイッチ装置１０は、マルチコアプロセッサの演算能力を効率的に活用し、タスク実行中のＣＰＵ使用率の急激な変化にも容易に対応して処理を行うことが可能となる。
以下、これをより詳細に説明する。
【００３６】
図２は、本発明の実施形態に係るネットワークスイッチ装置１０のソフトウェアとしての構成について示す説明図である。図３は、図２に示したネットワークスイッチ装置１０のハードウェアとしての構成について示す説明図である。ネットワークスイッチ装置１０は、ネットワーク構成においては、たとえばルータ、リピータ、ゲートウェイなどのように、ネットワークを介して伝送されるデータパケットを他のネットワークに中継する装置である。
【００３７】
ネットワークスイッチ装置１０は、ハードウェアとしてはコンピュータプログラムを実行する主体となるマルチコアプロセッサ１１と、データを記憶する記憶手段１２と、他装置からのデータ入力を受ける入力インタフェース１３と、他装置にデータを出力する出力インタフェース１４とからなる。
【００３８】
マルチコアプロセッサ１１は、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコア１１ａ〜１１ｆを備え、コア１１ａがタスク割当部１０１、コア１１ｂ〜１１ｅがタスク処理部１０２ａ〜ｄ、コア１１ｆがタスク移動部１０３として、各々同時に機能する。図２〜３ではコアを６つ、タスク処理部を４つ備えた例を示したが、これ以外の数であってもよい。
【００３９】
他装置からネットワークスイッチ装置１０宛に送られてきた入力パケットを、まずタスク割当部１０１が当該パケットのフロー情報に応じて振り分けを決定する。ここでタスク割当部１０１によるパケットの振り分けは、たとえば前述の特許文献２などに記載された公知技術を利用することができる。
【００４０】
続いて、各々のタスク処理部１０２ａ〜ｄが、振り分けられた各々のパケットに対して出力先に対応するデータ形式変換などの処理を行って、その処理結果である出力パケットを、出力インタフェース１４を介して他装置に出力する。タスク処理部１０２ａ〜ｄは、最終的なデータの出力先が各々異なるものとしてもよいし、具体的な処理内容が各々異なるものとしてもよい。
【００４１】
タスク移動部１０３は、各々のタスク処理部１０２ａ〜ｄに該当する各コア１１ｂ〜１１ｅのＣＰＵ使用率を取得し、そのＣＰＵ使用率に応じて各コア１１ｂ〜１１ｅで実行されているタスクを他コアに移動させる処理を行う。
【００４２】
タスク移動部１０３は、開始処理機能１０３ａ、ＣＰＵ使用率取得機能１０３ｂ、ＣＰＵ使用率判定機能１０３ｃ、およびタスク移動処理機能１０３ｄといった各機能を備える。開始処理機能１０３ａは、予め与えられた監視周期の経過、または装置設定関数からのコールバックに反応して、次に述べるＣＰＵ使用率取得機能１０３ｂによる処理を開始させる制御信号を発する。ＣＰＵ使用率取得機能１０３ｂは、開始処理機能１０３ａからの制御信号に反応して、各コア１１ｂ〜１１ｅのＣＰＵ使用率を取得する。
【００４３】
ＣＰＵ使用率判定機能１０３ｃは、ＣＰＵ使用率取得機能１０３ｂが取得した各コア１１ｂ〜１１ｅのＣＰＵ使用率から、各コア１１ｂ〜１１ｅのタスク処理部１０２ａ〜ｄの中でＣＰＵ使用率が予め定められた閾値を超えているものが存在するか否かを判定する。タスク移動処理機能１０３ｄは、タスク処理部１０２ａ〜ｄで実行されているタスクの中で移動すべきものが存在するか否かを判定し、そのタスクを実際に他のタスク処理部１０２ａ〜ｄ（コア１１ｂ〜１１ｅ）に移動させる。
【００４４】
図４は、図２に示したタスク移動部１０３の動作について示すフローチャートである。ネットワークスイッチ装置１０の電源投入と共に動作を開始したタスク移動部１０３は、まず開始処理機能１０３ａがタイマ機能に予め与えられた監視周期を設定してリセットし（ステップＳ１０１）、その監視周期が経過したか（ステップＳ１０２）、もしくは装置設定関数からのコールバックがあるか（ステップＳ１０３）否かについて判断する。
【００４５】
ここでいう装置設定関数とは、例えば保守者がコマンドを使ってポート間の疎通設定を行う際に呼び出される関数や、装置への拡張カードの増設、パケット処理負荷の増大、ポート障害などのイベント発生によって呼び出される関数などをいう。
【００４６】
また、ステップＳ１０３は前述のタイマ機能の時刻を書き替えることによっても実現可能である。監視周期の経過も装置設定関数からのコールバックもなければ、開始処理機能１０３ａは引き続きステップＳ１０２〜１０３の判断を継続する。監視周期の経過、もしくは装置設定関数からのコールバックがあった場合は（ステップＳ１０２もしくは１０３がイエス）、ＣＰＵ使用率取得機能１０３ｂが各コア１１ｂ〜１１ｅのＣＰＵ使用率を取得する（ステップＳ１０４）。
【００４７】
これに続いて、ＣＰＵ使用率判定機能１０３ｃが、ＣＰＵ使用率取得機能１０３ｂが取得した各コア１１ｂ〜１１ｅのＣＰＵ使用率から、各コア１１ｂ〜１１ｅのタスク処理部１０２ａ〜ｄの中でＣＰＵ使用率が予め定められた閾値を超えているものが存在するか否かを判定する（ステップＳ１０５、詳細は図５に後述）。閾値を超えているものが存在しなければステップＳ１０１に処理が戻る。
【００４８】
閾値を超えているコア１１ｂ〜１１ｅが存在すれば（ステップＳ１０５がイエス）、タスク移動処理機能１０３ｄがタスク処理部１０２ａ〜ｄ（コア１１ｂ〜１１ｅ）で実行されている各タスクについて、移動すべきものが存在するか否かを判定し（ステップＳ１０６、詳細は図６に後述）、移動すべきと判断されたタスクを実際に移動させる処理を行う（ステップＳ１０７）。移動すべきと判断されたタスクがなければステップＳ１０１に処理が戻る。また、タスクを移動させた場合は、ステップＳ１０４に処理が戻って、改めてＣＰＵ使用率を取得する。
【００４９】
図５は、図４のステップＳ１０５で示したＣＰＵ使用率判定機能１０３ｃによる処理をより詳細に示すフローチャートである。ＣＰＵ使用率判定機能１０３ｃはまず、タスク処理部１０２ａ〜ｄ（コア１１ｂ〜１１ｅ）で動作する全てのタスクについて、各タスクごとのＣＰＵ使用時間を計算する（ステップＳ１１１）。ＣＰＵ使用率判定機能１０３ｃはこれに続いて、コア１１ｂ〜１１ｅごとにＣＰＵ使用時間を積算して、コアごとのＣＰＵ使用率、および全コアの平均ＣＰＵ使用率を算出する（ステップＳ１１２）。
【００５０】
ここで、コア１１ｂ〜１１ｅ（タスク処理部１０２ａ〜ｄ）ごとのＣＰＵ使用率を各々ｒ１、ｒ２、ｒ３、ｒ４とし、これらの平均値を平均ＣＰＵ使用率ａとする。ＣＰＵ使用率判定機能１０３ｃは、予め与えられた閾値をｔとすると、ｒｉ（ｉ＝１，２，３，４）が以下の数１の条件を満たすコアが存在するか否かを判定する（ステップＳ１１３）。
【００５１】
【数１】
2014110538.tif 000003
【００５２】
数１を満たすコア、即ちＣＰＵ使用率ｒｉと平均値ａとの差が閾値を超えるコアが存在しなければ、各コアのＣＰＵ使用率の差は許容範囲内であると判定し、図４のステップＳ１０１に処理が戻り、タイマ機能を改めてリセットして待機状態に戻る。そのようなコアが存在すれば、そのコア（タスク処理部）を次に述べるタスク移動処理の対象として、図４のステップＳ１０６に処理を進める。
【００５３】
図６は、図４のステップＳ１０６〜１０７で示したタスク移動処理機能１０３ｄによる処理をより詳細に示すフローチャートである。タスク移動処理機能１０３ｄは、ＣＰＵ使用率判定機能１０３ｃによってタスク移動処理の対象とされたコア１１ｂ〜１１ｅ（タスク処理部１０２ａ〜ｄ）で実行されている各タスクについて、他のコア（タスク処理部）に移動させることが可能なタスクが存在するか否かについて判断する（ステップＳ１２１、図４のステップＳ１０６）。
【００５４】
このステップＳ１２１の処理でいう「移動させることが可能なタスク」とは、タスク移動処理の対象ではない他のコア（タスク処理部）のＣＰＵ使用率に当該タスクのＣＰＵ使用率を加算した値が平均ＣＰＵ使用率ａ＋閾値ｔを越えないタスクをいう。即ち、当該タスクのＣＰＵ使用率をｒｉｊ（ｉ＝１，２，３，４、ｊは自然数、ｒｉｊはｉ番目のＣＰＵで実行されるｊ番目のタスク）、移動先のＣＰＵ使用率をｒｋ（ｋ＝１，２，３，４、ｋ≠ｉ）とすると、以下の数２の条件を満たすタスクが存在するか否かを、タスク移動処理機能１０３ｄは判断する。
【００５５】
【数２】
2014110538.tif 000004
【００５６】
数２の条件を満たすタスクが存在しなければ、ステップＳ１０１に処理が戻る。数２の条件を満たすタスクが存在すれば、タスク移動処理機能１０３ｄはそのタスクをそのコア（タスク処理部）に移動させる処理を行って（ステップＳ１２２、図４のステップＳ１０７）、ステップＳ１０４に処理が戻り、改めてＣＰＵ使用率を取得し、全てのコア（タスク処理部）でＣＰＵ使用率が数１の条件を満たさなくなるまで処理を繰り返し継続する。
【００５７】
図７は、図６のステップＳ１２１で示した処理で、タスクを移動させることが不可能であると判断される一例について示した説明図である。図８は、図６のステップＳ１２１で示した処理で、タスクを移動させることが可能であると判断される一例について示した説明図である。
【００５８】
今、コア１１ｂ（タスク処理部１０２ａ）でＣＰＵ利用率ｒ１がａ＋ｔを越えたものとする。このコア１１ｂ（タスク処理部１０２ａ）では３つのタスクが実行されており、その各タスクごとのＣＰＵ利用率を各々ｒ１１、ｒ１２、ｒ１３とする。ここで、ｒ１＝ｒ１１＋ｒ１２＋ｒ１３である。また、コア１１ｃ〜１１ｅ（タスク処理部１０２ｂ〜ｄ）のＣＰＵ利用率を各々ｒ２〜ｒ４とする。
【００５９】
ここで、ＣＰＵ利用率ｒ１１のタスクをコア１１ｂ（タスク処理部１０２ａ）からコア１１ｃ（タスク処理部１０２ｂ）に移動させたと仮定した場合、移動した後のコア１１ｃ（タスク処理部１０２ｂ）のＣＰＵ利用率ｒ２＋ｒ１１がａ＋ｔを越える。図７はこの状態を示している。ｒ３、ｒ４についても同様である。即ち、このＣＰＵ利用率ｒ１１のタスクを他のコア（タスク処理部）に移動させることはできない。
【００６０】
また、ＣＰＵ利用率ｒ１２のタスクをコア１１ｂ（タスク処理部１０２ａ）からコア１１ｃ（タスク処理部１０２ｂ）に移動させたと仮定した場合、移動した後のコア１１ｃ（タスク処理部１０２ｂ）のＣＰＵ利用率ｒ２＋ｒ１２はａ＋ｔを越えない。図８はこの状態を示している。即ち、このＣＰＵ利用率ｒ１２のタスクをコア１１ｃ（タスク処理部１０２ｂ）に移動させることはできる。ちなみにこれをコア１１ｃ〜１１ｄ（タスク処理部１０２ｃ〜ｄ）に移動させることは、移動した後のＣＰＵ利用率がａ＋ｔを越えるのでできない。
【００６１】
タスク移動処理機能１０３ｄは、このような判断をＣＰＵ利用率がａ＋ｔを越えたコア（タスク処理部）で実行されている全てのタスクについて、かつ他の全てのコア（タスク処理部）について行い、当該タスクを移動可能なコア（タスク処理部）が存在するか否かを判定する。
【００６２】
ここで、移動可能と判定されるタスクＴｉｊ（ｉはそのタスクが割り当てられたコアの番号、ｊはこのコアに割り当てられたタスクの番号）とその移動先のコアＣｎ（ｎはコアの番号、ｉ≠ｎでかつｉとｎは同一範囲）との組み合わせ｛Ｔｉｊ，Ｃｎ｝が複数存在する場合、移動元のコアのタスクＴｉｊ移動後のＣＰＵ利用率が最も平均値ａに近くなる組み合わせを選択することもできるし、また移動先のＣｎでタスクＴｉｊ移動後のＣＰＵ利用率が最も平均値ａに近くなる組み合わせを選択してもよい。
【００６３】
（実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。
本実施形態に係るタスク移動方法は、ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置１０にあって、入力されたパケットを処理するタスクを実行するタスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、当該タスクを割り当てられたタスク処理部がパケットに対して処理を行い、各タスク処理部のＣＰＵ使用率をタスク移動部が取得し（図４・ステップＳ１０４）、このＣＰＵ使用率に応じて一のタスク処理部に割り当てられたタスクを他のタスク処理部にタスク移動部が移動させる（図４・ステップＳ１０５〜１０７）。
【００６４】
また、このタスク移動部がタスクを移動させる処理は、
取得された各タスク処理部のＣＰＵ使用率が予め定められた閾値を超えているか否かをタスク移動部のＣＰＵ使用率判定機能が判定し（図４・ステップＳ１０５）、
ＣＰＵ使用率が閾値を超えたタスク処理部で実行されているタスクの中で他のタスク処理部に移動した場合のＣＰＵ使用率の合計値が閾値を超えない場合にタスク移動部のタスク移動処理機能が当該タスクを当該他のタスク処理部に移動させる（図４・ステップＳ１０６〜１０７）。
【００６５】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するネットワークスイッチ装置１０が備えるマルチコアプロセッサ１１に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
【００６６】
本実施形態によれば、マルチコアプロセッサ１１の各コア１１ｂ〜１１ｅ（タスク処理部１０２ａ〜ｄ）でＣＰＵ使用率が平均化され、タスクの待ち状態による輻輳の発生を有効に抑制することが可能となる。従って、マルチコアプロセッサ１１の持つ演算能力を効率的に活用して装置性能を向上させることが可能となる。かつ、ネットワークの負荷状態は急激に変化しやすいものであるが、この負荷状態の急変に対しても、装置性能の低下を起こさずに容易に対応することが可能となる。
【００６７】
（実施形態の拡張）
本実施形態は、その趣旨を改変しない範囲で、様々な拡張が考えられる。以下、それらについて説明する。
各タスクの出力先や処理内容（より具体的にはフロー情報に含まれるＩＰアドレスやポート番号）に応じて、タスクごとの優先度を予め設定し、タスク移動部のタスク移動処理機能がこの設定された優先度の高低に応じてタスクの移動先を決定するという構成にすることも可能である。
【００６８】
より具体的には、より優先度の高いタスクを、よりＣＰＵ使用率の低いコアに割り当てる。この構成にすることにより、優先度の高いタスクがより早く実行されるようになり、処理に伴って発生する輻輳を小さく抑制することが可能となる。
【００６９】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【００７０】
上述した実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【００７１】
（付記１）  ネットワークを介して伝送されるパケットを他のネットワークに中継するネットワークスイッチ装置であって、
入力された前記パケットに対して出力先のネットワークに応じた処理を行う複数のタスク処理部と、
前記入力されたパケットを処理するタスクを実行する前記タスク処理部を決定してそこに当該タスクを割り当てるタスク割当部と、
前記各タスク処理部のＣＰＵ使用率を取得し、このＣＰＵ使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に移動させるタスク移動部と
を備えることを特徴とするネットワークスイッチ装置。
【００７２】
（付記２）  前記タスク移動部が、
前記各タスク処理部のＣＰＵ使用率を取得するＣＰＵ使用率取得機能と、
取得された前記各タスク処理部の前記ＣＰＵ使用率が予め定められた閾値を超えているか否かを判定するＣＰＵ使用率判定機能と、
前記ＣＰＵ使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記ＣＰＵ使用率の合計値が前記閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させるタスク移動処理機能と
を備えることを特徴とする、付記１に記載のネットワークスイッチ装置。
【００７３】
（付記３）  前記タスク移動部が、
予め与えられた監視周期の経過、または保守者設定処理や発生イベント処理による装置設定関数からのコールバックに反応して前記ＣＰＵ使用率取得機能の動作を開始制御する開始処理機能
をさらに備えることを特徴とする、付記２に記載のネットワークスイッチ装置。
【００７４】
（付記４）  前記タスク移動部の前記タスク移動処理機能が、
移動可能な前記タスクおよび移動先の前記タスク処理部の組み合わせが複数組存在する場合に、移動元もしくは移動先の前記各タスク処理部の前記ＣＰＵ使用率がこのＣＰＵ使用率の平均値に最も近くなる前記組み合わせを選択する機能
を備えることを特徴とする、付記２に記載のネットワークスイッチ装置。
【００７５】
（付記５）  それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサを備え、
前記各タスク処理部がそれぞれ異なる前記コアにおいて機能することを特徴とする、付記１に記載のネットワークスイッチ装置。
【００７６】
（付記６）  ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
入力された前記パケットを処理するタスクを実行する前記タスク処理部をタスク割当部が決定してそこに当該タスクを割り当て、
当該タスクを割り当てられた前記タスク処理部が前記パケットに対して処理を行い、
前記各タスク処理部のＣＰＵ使用率をタスク移動部が取得し、
このＣＰＵ使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に前記タスク移動部が移動させる
ことを特徴とするタスク移動方法。
【００７７】
（付記７）  前記タスク移動部が前記タスクを移動させる処理が、
取得された前記各タスク処理部の前記ＣＰＵ使用率が予め定められた閾値を超えているか否かを前記タスク移動部のＣＰＵ使用率判定機能が判定し、
前記ＣＰＵ使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記ＣＰＵ使用率の合計値が前記閾値を超えない場合に前記タスク移動部のタスク移動処理機能が当該タスクを当該他のタスク処理部に移動させる
ことを特徴とする、付記６に記載のタスク移動方法。
【００７８】
（付記８）  前記ネットワークスイッチ装置が、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサを備えるものであると共に、
前記各タスク処理部をそれぞれ異なる前記コアにおいて機能させることを特徴とする、付記６に記載のタスク移動方法。
【００７９】
（付記９）  ネットワークを介して伝送されるパケットを備えられた複数のタスク処理部によって出力先のネットワークに応じた処理を行ってから当該パケットを他のネットワークに中継するネットワークスイッチ装置にあって、
このネットワークスイッチ装置が備えるプロセッサに、
入力された前記パケットを処理するタスクを実行する前記タスク処理部を決定してそこに当該タスクを割り当てる手順、
前記各タスク処理部が前記パケットを処理する際のＣＰＵ使用率を取得する手順、
およびこのＣＰＵ使用率に応じて一の前記タスク処理部に割り当てられた前記タスクを他の前記タスク処理部に前記タスク移動部が移動させる手順
を実行させることを特徴とするタスク移動プログラム。
【００８０】
（付記１０）  前記タスクを移動させる手順が、
取得された前記各タスク処理部の前記ＣＰＵ使用率が予め定められた閾値を超えているか否かを判定する手順、
および前記ＣＰＵ使用率が前記閾値を超えた前記タスク処理部で実行されているタスクの中で前記他のタスク処理部に移動した場合の前記ＣＰＵ使用率の合計値が前記閾値を超えない場合に当該タスクを当該他のタスク処理部に移動させる手順
を含むことを特徴とする、付記９に記載のタスク移動プログラム。
【００８１】
（付記１１）  前記ネットワークスイッチ装置が、それぞれが異なるコンピュータプログラムを実行する主体となる複数のコアを有するマルチコアプロセッサを備えるものであると共に、
前記各タスク処理部をそれぞれ異なる前記コアにおいて機能させることを特徴とする、付記９に記載のタスク移動プログラム。
【産業上の利用可能性】
【００８２】
本発明は、ルータ、リピータ、ゲートウェイなど、インターネットの要所ごとに配置されたネットワークスイッチ装置において、幅広く適用することができる。
【符号の説明】
【００８３】
１、１０  ネットワークスイッチ装置
２、１０１  タスク割当部
３ａ、３ｄ、１０２ａ、１０２ｄ  タスク処理部
４、１０３  タスク移動部
１１  マルチコアプロセッサ
１１ａ、１１ｆ  コア
１２  記憶手段
１３  入力インタフェース
１４  出力インタフェース
１０３ａ  開始処理機能
１０３ｂ  ＣＰＵ使用率取得機能
１０３ｃ  ＣＰＵ使用率判定機能
１０３ｄ  タスク移動処理機能
【図１】
2014110538.tif 000005
【図２】
2014110538.tif 000006
【図３】
2014110538.tif 000007
【図４】
2014110538.tif 000008
【図５】
2014110538.tif 000009
【図６】
2014110538.tif 000010
【図７】
2014110538.tif 000011
【図８】
2014110538.tif 000012
【図９】
2014110538.tif 000013
【図１０】
2014110538.tif 000014