(57)【特許請求の範囲】
【請求項１】
マルチコアＣＰＵを備えたコンピュータが有するコアの内、パケット転送処理に割り当てるコア数を決定して当該コンピュータを構成する制御を行う制御装置であって、
パケット転送のスループットの目標範囲を保持する保持手段と、
１つのコアのみをパケット転送処理に割り当てたときに、１つの基準パケットの転送処理に必要な基準サイクル数に基づき、Ｎ個（Ｎは２以上の整数）のコアをパケット転送処理に割り当てたときの最大スループットを推定する推定手段と、
前記最大スループットが前記目標範囲内になるＮの数を求め、前記求めた数のコアがパケット転送処理に割り当てられる様に前記コンピュータを制御する割り当て手段と、
を備えていることを特徴とする制御装置。
【請求項２】
前記推定手段は、Ｎ個のコアをパケット転送処理に割り当てたときに、１つの前記基準パケットの転送処理に必要なサイクル数の前記基準サイクル数からの増加量を求めることで、Ｎ個のコアをパケット転送処理に割り当てたときの最大スループットを推定することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記増加量は、キャッシュヒットレートと、キャッシュミスが生じた場合に、前記コンピュータのシステムメモリにアクセスする時間と、前記Ｎの数に基づく値であることを特徴とする請求項２に記載の制御装置。
【請求項４】
前記推定手段は、キャッシュヒットにより前記基準サイクル数で転送される前記基準パケットの確率と、キャッシュミスにより前記基準サイクル数と前記増加量との和に等しいサイクル数で転送される前記基準パケットの確率と、を求めることで、Ｎ個のコアをパケット転送処理に割り当てたときの最大スループットを推定することを特徴とする請求項３に記載の制御装置。
【請求項５】
前記基準サイクル数で転送される前記基準パケットの確率は、前記Ｎの数の逆数であることを特徴とする請求項４に記載の制御装置。
【請求項６】
前記基準サイクル数で転送される前記基準パケットの確率は、Ｎ個のコアをパケット転送処理に割り当てたときの、Ｎ個のコアそれぞれの利用率に基づき求められることを特徴とする請求項４に記載の制御装置。
【請求項７】
請求項１から６のいずれか１項に記載の制御装置としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マルチコアＣＰＵを有するパケット転送装置の制御技術に関する。
【背景技術】
【０００２】
現在、ルータといった、パケット転送に特化して設計された装置ではなく、通常のコンピュータをパケット転送装置として使用することが行われている。また、パケット転送装置として使用するコンピュータを、パケットの転送のみに使用するのではなく、その他のアプリケーションのために使用することも行われている。この際、コンピュータ全体のリソースの内、パケットの転送に割り当てるべきリソースを適切に設定する必要がある。
【０００３】
非特許文献１及び２は、コンピュータをパケット転送装置として使用する場合における、最大スループットを推定する方法を開示している。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｓ．Ｇａｌｌｅｎｍｕｌｌｅｒ，ｅｔ  ａｌ．，"Ｃｏｍｐａｒｉｓｏｎ  ｏｆ  ｆｒａｍｅｗｏｒｋｓ  ｆｏｒ  ｈｉｇｈ  ｐｅｒｆｏｒｍａｎｃｅ  ｐａｃｋｅｔ  ＩＯ"，ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＡＣＭ  ＡＮＣＳ  ２０１５
【非特許文献２】Ｍ．Ｄｏｂｒｅｓｃｕ，ｅｔ  ａｌ．，"Ｔｏｗａｒｄ  ｐｒｅｄｉｃｔａｂｌｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｉｎ  ｓｏｆｔｗａｒｅ  ｐａｃｋｅｔ・ｐｒｏｃｅｓｓｉｎｇ  ｐｌａｔｆｏｒｍｓ，ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＵＳＥＮＩＸ  ＮＳＩＤ'１２，２０１２
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１及び２の方法は、最大スループットを推定することを開示するのみであり、パケット転送装置として使用するコンピュータに対して、パケット転送のためのリソースをどの様に割り当てるかを開示するものではない。
【０００６】
本発明は、マルチコアＣＰＵを有するコンピュータをパケット転送装置として使用する際に、パケット転送に割り当てるコア数を適切に制御する制御装置を提供するものである。
【課題を解決するための手段】
【０００７】
本発明の一側面によると、マルチコアＣＰＵを備えたコンピュータが有するコアの内、パケット転送処理に割り当てるコア数を決定して当該コンピュータを構成する制御を行う制御装置は、パケット転送のスループットの目標範囲を保持する保持手段と、１つのコアのみをパケット転送処理に割り当てたときに、１つの基準パケットの転送処理に必要な基準サイクル数に基づき、Ｎ個（Ｎは２以上の整数）のコアをパケット転送処理に割り当てたときの最大スループットを推定する推定手段と、前記最大スループットが前記目標範囲内になるＮの数を求め、前記求めた数のコアがパケット転送処理に割り当てられる様に前記コンピュータを制御する割り当て手段と、を備えていることを特徴とする。
【発明の効果】
【０００８】
本発明によると、マルチコアＣＰＵを有するコンピュータをパケット転送装置として使用する際に、パケット転送に割り当てるコア数を適切に制御することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態による制御装置の構成図。
【図２】一実施形態による制御装置での処理のフローチャート。
【図３】一実施形態によるパケット転送装置として使用するコンピュータのキャッシュ構成を示す図。
【発明を実施するための形態】
【００１０】
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の実施形態は例示であり、本発明を実施形態の内容に限定するものではない。また、以下の各図においては、実施形態の説明に必要ではない構成要素については図から省略する。
【００１１】
図１は、本実施形態による制御装置１の構成図である。制御装置１は、パケット転送装置５０を制御する。本実施形態において、パケット転送装置５０は、マルチコアＣＰＵを備えたコンピュータであり、制御装置１は、ユーザが設定するスループットの目標範囲に基づきパケットの転送処理に割り当てるＣＰＵコア数を決定し、決定したコア数がパケット転送処理に使用される様にパケット転送装置５０を構成する。
【００１２】
図２は、本実施形態における制御装置１の処理のフローチャートである。Ｓ１０で、ユーザは、最大スループットの目標範囲を設定して制御装置１に入力する。リソース割当部１２は、この目標範囲を保持する。Ｓ１１で、リソース割当部１２は、パケット転送装置５０が有するコアの内のパケット転送処理に使用するコア数Ｎを、初期値に設定する。推定部１１は、Ｓ１２で、最大スループットλを推定する。なお、最大スループットλの推定処理の詳細は後述する。Ｓ１３で、リソース割当部１２は、推定した最大スループットλが目標範囲内であるかを判定する。目標範囲内になければ、Ｓ１４で、リソース割当部１２は、推定した最大スループットλが目標範囲より大きいのか小さいのかを判定する。推定した最大スループットλが目標範囲より大きいことは、パケット転送処理に割り当てたコア数が多いことを意味するため、リソース割当部１２は、Ｓ１５で、Ｎを１だけ減少させ、Ｓ１２からの処理を繰り返す。一方、推定した最大スループットλが目標範囲より小さいことは、パケット転送処理に割り当てたコア数が少ないことを意味するため、リソース割当部１２は、Ｓ１６で、Ｎを１だけ増加させ、Ｓ１２からの処理を繰り返す。また、Ｓ１３の判定において、推定した最大スループットλが目標範囲内にあると、制御装置１は処理を終了する。
【００１３】
なお、図２の処理は、パケット転送装置５０の稼働前に行うことも、稼働中に行うこともできる。稼働前に行う場合には、例えば、図２の処理を１回だけ行い、最大スループットが目標範囲内となるコア数を求め、求めたコア数でパケット転送装置を稼働させることができる。また、稼働中に行う場合には、最大スループットが目標範囲内となるコア数を求める処理を繰り返し行うことができる。その場合、最初は、図２の処理をそのまま行う。そして、２回目以降については、図２のＳ１０及びＳ１１は省略して、Ｓ１２の処理から繰り返す。なお、繰り返し行う場合には、Ｓ１３で"Ｙｅｓ"となると、直ちに、Ｓ１２の処理を開始するのではなく、所定の待機時間だけ待機した後、Ｓ１２の処理を開始する構成とすることができる。また、パケット転送装置の稼働中の間、常に、図２の処理を繰り返すのではなく、所定回数だけ繰り返す構成とすることもできる。
【００１４】
続いて、Ｓ１２における最大スループットの推定処理について説明する。Ｓ１２における最大スループットの推定には、例えば、非特許文献１や２に記載の公知の方法を使用することができる。しかしながら、非特許文献１は、使用するコンピュータがシングルコアであることを前提とするものであり、現在の主流であるマルチコアＣＰＵを備えたパケット転送装置５０に適用すると、最大スループットの推定精度が劣化する。また、非特許文献２は、例えば、２つのコアを備えたＣＰＵの場合には精度良く最大スループットの推定を行うことができるが、コア数が増加すると実際の最大スループットと、推定した最大スループットとの差が大きくなる。これは、非特許文献２の方法においては、総てのパケットがキャッシュ競合の影響を受けることを前提としているためである。
【００１５】
したがって、以下に述べる、より精度の高い最大スループットの推定方法を使用することができる。図３は、本実施形態によるパケット転送装置５０のキャシュ構成を示す図である。本実施形態では、パケット転送処理に割り当てられたコア数がコア＃１〜コア＃ＮのＮ個であるものとし、総てのコア＃１〜＃Ｎが同じ、ラストレベルキャッシュ（ＬＬＣ）を共有するものとする。なお、レベル１キャッシュ（Ｌ１）と、レベル２キャッシュ（Ｌ２）は、各コアに対応して設けられている。さらに、各キャッシュが利用できない場合、パケット転送装置５０は、システムメモリをキャッシュとして使用する。なお、システムメモリにアクセスする時間は、キャッシュにアクセスする時間と比較して非常に大きな値となる。
【００１６】
最大スループットは、インタフェース速度と、ＣＰＵ速度により制限される。以下では、インタフェース速度で制限される最大スループットをＳ１と呼び、ＣＰＵ速度により制限される最大スループットをＳ２と呼ぶものとする。本実施形態の推定部１１は、最大スループットＳ１及び最大スループットＳ２をそれぞれ求め、最大スループットＳ１及び最大スループットＳ２の小さい方を、パケット転送装置５０の最大スループットλとする。ここで、最大スループットＳ１については、パケット転送装置５０のインタフェース速度を、基準パケット長で除することにより求めることができる。なお、複数のインタフェースのインタフェース速度がそれぞれ異なる場合には、最小値を使用する。
【００１７】
以下、最大スループットＳ２の算出方法について説明する。まず、１つのコアのみが動作しているときにおいて、１つの基準パケットを転送するのに必要なコアのサイクル数をＣｓｏｌｏとする。この場合、１つのコアのみを動作させるときの最大スループットλｓｏｌｏは、コア速度（１秒当たりのサイクル数）をｆとすると、λｓｏｌｏ＝ｆ／Ｃｓｏｌｏとなる。しかしながら、複数のコアを動作させると、キャッシュミスにより、システムメモリへのアクセスが生じる。つまり、複数のコアを動作させると、１つの基準パケットを転送するのに必要な時間は、１つのコアのみが動作しているときのサイクルＣｓｏｌｏより長くなる。以下では、この長くなるサイクル数をαとする。
【００１８】
本実施形態において、推定部１１は、このαを
α＝（δｈｆ／λｓｏｌｏ）＋（δｈｆ／λｓｏｌｏ）（Ｎ−１／Ｎ）    （１）
として求める。なお、ｈはキャッシュヒットレートであり、δはシステムメモリにアクセスする場合に必要な時間である。式（１）の第１項は、１つのコアのみを動作させているときにはＬＬＣでキャッシュヒットするが、他のコアを動作させたことによりＬＬＣでキャッシュミスとなることにより増加するサイクル数に対応する。また、式（１）の第２項は、複数のコアを動作させることにより増加するキャッシュミスにより増加するサイクル数に対応する。
【００１９】
また、本実施形態では、各基準パケットの転送に必要なサイクル数がＣｓｏｌｏか（Ｃｓｏｌｏ＋α）のいずれかであるものとし、基準パケットがＣｓｏｌｏで転送される確率をｐとし、（Ｃｓｏｌｏ＋α）で転送される確率をｑ＝１−ｐとする。Ｎ個のＣＰＵコアは、同じ処理を行うため、ｐ＝１／Ｎで求めることができる。しかしながら、コアの利用率は１００％未満であるため、コアの％利用率で重み付けし、コア＃ｉ（ｉ＝１からＮの整数）において、基準パケットがＣｓｏｌｏで転送される確率ｐｉを、以下の式（２）で求める。
【００２０】
【数１】
0006600250.tif 000002
ここで、）ｕ１〜ｕＮは、コア＃１〜コア＃Ｎの％利用率（Ｕｔｉｌｉｚａｔｉｏｎ）である。そして、推定部１１は、最大スループットＳ２を以下の式（３）により求める。なお、ｕａｌｌは、ＣＰＵ全体の利用率である
【００２１】
【数２】
0006600250.tif 000003
【００２２】
以下では、最大スループットＳ２の算出のための処理の流れについて説明する。まず、推定部１１は、リソース割当部１２を介して、一時的にパケット転送に割り当てるコアの数を１つとし、試験パケット生成部１３に基準パケットを送信させ、試験パケット受信部１４に基準パケットを受信させる。これにより、単一コアのみが動作している場合における最大スループットλｓｏｌｏを測定する。また、推定部１１は、単一コアのみが動作している場合において基準パケットの転送に費やしたＣＰＵサイクルＣｓｏｌｏと、ラストレベルキャッシュ（ＬＬＣ）までのキャッシュヒットレートｈを測定する。なお、例えば、パケット転送装置５０がＬｉｎｕｘ（登録商標）  ＯＳであるものとすると、Ｃｓｏｌｏは、以下のコマンドラインにより取得できる。
sudo ocount -s --events=cpl_cycles:ring0,cpl_cycles:ring123 
同様に、ｈは、以下のコマンドラインにより取得できる。
sudo ocount -s -events=mem_uops_retired :all_loads, mem_load_uops_retired: l1_hit,mem_load_uops_retired: l2_hit,mem_load_uops_retired:l3_hit
【００２３】
その後、推定部１１は、リソース割当部１２を介して、パケット転送に割り当てるコアを元の数に戻す。その後、推定部１１は、システムメモリへのアクセスに対する遅延量δを測定する。遅延量δは、以下のコマンドラインにより取得できる。
$ taskset 0x1 ./lat_mem_rd -N 1 -P 1 4096k 512
さらに、推定部１１は、各コアの％ＣＰＵ利用率（Ｕｔｉｌｉｚａｔｉｏｎ）ｕ１〜ｕＮと、全体の％ＣＰＵ利用率ｕａｌｌを測定する。これら、％ＣＰＵ利用率は、以下のコマンドラインにより取得できる。
$ mpstat -P ALL
【００２４】
推定部１１は、各コアの％利用率に基づき式（２）により確率ｐｉを求める。また、Ｎ個のコアを動作させることによる、１パケットの転送に必要なサイクルの増大量αを式（１）により求める。そして、式（３）に基づき、最大スループットＳ２を求める。
【００２５】
なお、図２の処理をパケット転送装置の稼働前に行う場合には、各コアの％利用率を求めることはできない。この場合、ｕ１〜ｕＮと、ｕａｌｌを１であるものとして行えば良い。
【００２６】
以上、本実施形態によると、目標範囲内の最大スループットとするコア数を適切に設定でき、残りのコアを他の処理に割り当てることが可能にある。なお、通常、最大スループットＳ１が目標範囲より大きくなる様に、パケット転送装置５０として使用するコンピュータに実装するインタフェースは選択される。つまり、通常、最大スループットλは、最大スループットＳ２で制限され、最大スループットＳ１では制限されない。したがって、制御装置１は、最大スループットＳ２のみを求め、これを最大スループットλとすることができる。
【００２７】
また、本発明による制御装置は、コンピュータを上記制御装置として動作させるプログラムにより実現することができる。これらコンピュータプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。
【符号の説明】
【００２８】
１１：推定部、１２：リソース割当部、１３：試験パケット生成部、１４：試験パケット受信部
【図１】
0006600250.tif 000004
【図２】
0006600250.tif 000005
【図３】
0006600250.tif 000006