JP2015184960A - 情報処理システム及び制御方法、並びにコンピュータ・プログラム - Google Patents

情報処理システム及び制御方法、並びにコンピュータ・プログラム Download PDF

Info

Publication number
JP2015184960A
JP2015184960A JP2014061324A JP2014061324A JP2015184960A JP 2015184960 A JP2015184960 A JP 2015184960A JP 2014061324 A JP2014061324 A JP 2014061324A JP 2014061324 A JP2014061324 A JP 2014061324A JP 2015184960 A JP2015184960 A JP 2015184960A
Authority
JP
Japan
Prior art keywords
communication data
processor
reception
information
reception process
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014061324A
Other languages
English (en)
Inventor
啓夢 猿橋
Hiromu Saruhashi
啓夢 猿橋
和人 三好
Kazuto Miyoshi
和人 三好
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2014061324A priority Critical patent/JP2015184960A/ja
Publication of JP2015184960A publication Critical patent/JP2015184960A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

【課題】1つのソケットで待ち受けている通信に対する受信処理を、メモリアクセスの効率が良いように、複数のプロセスに対して振り分ける情報処理システム等を提供する。
【解決手段】それぞれ記憶装置14、24を備えた複数のプロセッサと11、21、通信ネットワークから通信データを受信し、受信した通信データを、アクセス効率がより良い記憶装置に格納する通信制御手段12、22と、通信データが格納された物理メモリ位置に基づいて、物理メモリ位置に対するアクセス効率がより良いプロセッサを選択し、プロセッサにおいて動作する受信プロセス16、26に対して、通信データの処理を割り当てる割当処理を行う接続待ち受け手段2とを有する。
【選択図】図1

Description

本発明は、それぞれメモリを備えた複数のプロセッサを含む情報処理システム(コンピュータ)における通信処理の制御に関する。
それぞれメモリを備えた複数のプロセッサ(CPU:Central Processing Unit)を含む情報処理システムにおいて、各CPUが自身に対応付けられたメモリにアクセスするアーキテクチャ(NUMA:Non−Uniform Memory Access)を採用することができる。なお、本明細書では、CPUと、CPUに対応づけられたメモリとの対を「ノード」と言う。NUMAを採用したノード(本明細書では、「NUMAノード」と言う)では、すべてのCPUが、全ノードのメモリを共有し、共通のメモリアドレス空間によって全メモリに対してアクセス可能である。
一般に、NUMAアーキテクチャでは、各CPUは、自身に対応づけられたメモリへの高速なアクセスに対し、他のCPUに対応づけられたメモリ(以下、「リモートのメモリ」と言う)に対するアクセス(本明細書では、「リモートアクセス」と言う)の効率が悪いという特性がある。すなわち、あるCPUにおいて動作するプロセスが、リモートのメモリに格納されたデータを処理することは、処理効率の低下を招く。本明細書では、メモリアクセス性能が良い位置関係にあることを「近い」または「近傍」のように表現する。
複数のNIC(Network Interface Card)が具備されている構成のコンピュータシステムにおいて、通信パケットの処理を行うCPUは、通信を行うNICとNUMAノードとのハードウェア構成によって決まることが一般的な方法である。例えば、NUMAアーキテクチャのコンピュータでは、ネットワークのセッション受付処理の際、プロセスをCPU間においてリスケジュールすることにより、NIC近傍のCPUがセッション受付処理を行う。この方法では、1つのソケットで待ち受けている通信に対して、受信データに対するアクセス効率が良いCPUが処理を行うことができる。
しかし、これは、プロセスを実行するNIC近傍のCPUと、元々プロセスが動作していたノードにあるプロセス自身のデータ(メモリ)との間のリモートアクセスを増やすことが少なくないので、通信処理としては必ずしも効率的ではなかった。なお、ここで「1つのソケット」とは、同じネットワークアドレス(例えば、IPアドレスとポート番号との組み合わせなど)ということを指す。NICの構成などによっては、1つのソケットで待ちうけることができるネットワークアドレスは複数であることがある。
このような問題に対して、特許文献1には、NICが受信したデータを、処理を行うCPU(プロセス)の近傍に移動させる通信ユニットが開示されている。この特許文献1に開示された通信ユニットにおいては、NICがデータを受信したとき、通信データに含まれる識別情報に基づいて、通信処理を行うCPUに対応付けられたメモリに対して、受信データを転送する。このようにして、この通信ユニットは、通信処理におけるリモートアクセスの増加を防ぐことにより、処理効率を向上させることができる。
また、マルチプロセッサシステムの処理効率を向上させる方法として、以下のような関連文献が開示されている。
特許文献2には、優先度が低い処理を実行するスレッドの起動に際して、CPUおよびメモリの使用率が所定の範囲にある処理装置を割り当てることにより、効率的に処理を実行可能な処理制御装置を選択する処理制御装置が開示されている。
特許文献3には、通信媒体を介して接続し、互いのメモリを利用可能な計算機におけるリモートページ、およびリモートプロセッサに対し、発行されたシステムコールを最適なプロセッサでもって実行することにより、高速な処理が可能な計算機が開示されている。
特許文献4には、1つ以上のCPUをグループ管理し、複数のグループのCPU負荷状態に基づいて選択した1つのグループからCPUの貸出しを行うことにより、通信回線に結ばれた他の計算機上のプロセッサの資源を有効利用する方法が開示されている。
特許文献5には、他の装置のメモリを使用しているプロセスが、自装置のメモリに空き領域を調べ、空いている場合に、リモートのメモリの内容を、自装置のローカルメモリに移すことにより、情報処理効率を向上させる方法が開示されている。
特開2013−69063号公報 特許第4773835号 特許第3591883号 特開平08−077026号公報 特開平07−182298号公報
しかしながら、特許文献1に開示された通信ユニットは、1つのソケットで待ち受けている(すなわち、同じ識別情報を持つ)通信に対する受信処理を、複数のプロセスに振り分ける場合には適用できないという課題がある。その理由は、特許文献1に開示された通信ユニットは、識別情報に基づいて、通信処理を行うCPUを判別するので、1つのソケットで待ち受けている通信に対しては、同じCPUに対応するメモリを受信データの転送先とするからである。すなわち、この通信ユニットは、1つのソケットで待ち受けている通信に対する受信処理を、複数のプロセスに振り分けることができない。したがって、この通信ユニットにおいては1つのプロセスに処理が集中することによる、効率の低下が発生するという課題がある。
また、特許文献2乃至5に開示された各装置または方法は、1つのソケットで待ち受けている通信に対する受信処理の振り分けを考慮していない。
本発明の1つの目的は、1つのソケットで待ち受けている通信に対する受信処理を、メモリアクセスの効率が良いように、複数のプロセスに対して振り分けることができる情報処理システムなどを提供することにある。
上記の目的を達成すべく、本発明の一態様に係る情報処理システムは、以下の構成を備えることを特徴とする。
すなわち、本発明の一態様に係る情報処理システムは、
それぞれ記憶装置を備えた複数のプロセッサと、
通信ネットワークから通信データを受信し、受信した前記通信データを、アクセス効率がより良い前記記憶装置に格納する通信制御手段と、
前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良い前記プロセッサを選択し、前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う接続待ち受け手段とを備える。
また、上記の同目的を達成すべく、本発明の一態様に係る制御方法は、情報処理システムによって、
通信ネットワークから通信データを受信し、
受信した前記通信データを、アクセス効率がより良い記憶装置に格納し、
前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良いプロセッサを選択し、
前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う。
また、同目的は、上記の各構成を有する情報処理システム、並びに対応する方法を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
本発明には、それぞれメモリを備えた複数のプロセッサを含むコンピュータシステムにおいて、1つのソケットで待ち受けている通信に対する受信処理の効率を向上できるという効果がある。
本発明の第1の実施形態に係る情報処理システムの構成を示すブロック図である。 本発明の第2の実施形態に係る情報処理システムの構成を示すブロック図である。 第2の実施形態に係る情報処理システム100の各部と待ち受けソケット情報200との関係の一例を表す概念図である。 第2の実施形態に係る情報処理システム100におけるフラグ付与の動作を示すフローチャートである。 第2の実施形態における接続待ち受け部102の受信したセッションに対する割当処理の動作を示すフローチャートである。 第2の実施形態における接続待ち受け部102の受付要求処理の動作を示すフローチャートである。 本発明の各実施形態、および、その変形例に係る情報処理システムに適用可能なコンピュータ(情報処理システム)の構成を例示する図である。
次に、本発明の実施形態について図面を参照して詳細に説明する。
<第1の実施形態>
図1は、本発明の第1の実施形態に係る情報処理システム1の構成を示すブロック図である。本実施形態に係る情報処理システム1は、それぞれ記憶装置を備えた複数のプロセッサ(CPU)を含むコンピュータシステムである。本実施形態において、情報処理システム1は、一例として、2つのノードを有するが、これに限定されない。すなわち、情報処理システム1は、2つ以上のノードを含むことができる。
情報処理システム1は、CPU11およびCPU21などを用いて実行されるコンピュータ・プログラム(ソフトウェア・プログラム)の制御により動作する一般的なマルチプロセッサの情報処理装置(コンピュータ)によって構成されても良い。または、情報処理システム1の各部が、専用のハードウェアデバイス、または論理回路によって構成されても良い。なお、情報処理システム1をコンピュータによって実現したハードウェア構成例については、図7を参照して後述する。
図1を参照すると、本実施形態に係る情報処理システム1は、ノード10およびノード20を有する。ノード20は、接続待ち受け部2を除いて、ノード10と基本的に同じ構成を有する。以下の説明においては、特別にノード20に関して記述する部分を除き、ノード10の各構成の説明をもって、ノード20の各構成の説明に代えることができる。なお、情報処理システム1が有するノードは、3つ以上であってもよい。その場合、3つ目以降のノードは、ノード20と同じ構成と動作である。
接続待ち受け部2は、情報処理システム1において、1つである。図1において、接続待ち受け部2は、一例として、ノード10において動作するが、これに限定されない。例えば、接続待ち受け部2は、ノード20において動作してもよい。なお、接続待ち受け部2は、いずれか1つのノードにおいて動作してもよいが、複数のノードにおいて、一部の機能を分散して動作してもよい。
ノード10は、CPU11、通信制御部(NIC)12、接続待ち受け部2、記憶装置14を有する。記憶装置14は、通信データ情報15を格納することができる。
CPU11は、記憶装置14と対応づけられたプロセッサである。CPU11は、複数のCPUを含んでもよい。CPU11は、ノード10を制御することにより、情報処理システム1を制御することができる。
本実施形態においては、情報処理システム1に含まれる各CPUが、他のCPUに対応づけられる記憶装置に対しても、アクセスすることが可能である。ただし、各CPUから各記憶装置に対するアクセス効率には、違いがあることを前提とする。また、本実施形態においては、メモリアドレスに基づいて、記憶装置が判別できる前提とする。なお、以下では、メモリアドレスを「物理メモリ位置」とも言う。
本実施形態において、自ノードに含まれる記憶装置が、各機能部にとって、アクセス効率の良い記憶装置である前提とする。すなわち、ある記憶装置に対してアクセス効率が良いCPUとは、同じノードのCPUである。例えば、本実施形態において、CPU11が自ノードに含まれる記憶装置14にアクセスする際のアクセス効率は、ノード20に含まれる記憶装置24にアクセスする際のアクセス効率よりも良いこととする。また、記憶装置14に対してアクセス効率が良いCPUは、CPU11である。
NIC12は、インターネットや構内LAN(ローカルエリアネットワーク)等の通信ネットワーク(以下、単に「ネットワーク」と言う)1000を介した通信を制御することができる。NIC12は、ネットワーク1000から通信データを受信し、受信した通信データを通信データ情報15として、アクセス効率が良い記憶装置14に格納することができる。本実施形態において、NIC12は、アクセス効率が良い記憶装置が記憶装置14であることをあらかじめ知っていることとする。NIC12は、通信データ情報15を受信したことを、接続待ち受け部2に対して通知する。
なお、ノード20(ノード10以外のノード)におけるNIC22も、通信データ情報15を受信したことを、ノード10の接続待ち受け部2に対して通知する。
接続待ち受け部2は、通信データ情報15が格納された物理メモリ位置に基づいて、その物理メモリ位置に対するアクセス効率が良いCPUを選択する。そして、接続待ち受け部2は、選択したCPUにおいて動作する受信プロセスに対して、通信データ情報15の受信処理を割り当てる。なお、以下では、接続待ち受け部2のこのような一連の動作を「割当処理」とも言う。
記憶装置14は、例えば、DRAM(Dynamic Random Access Memory)または、スタティックRAMのような半導体メモリ装置などにより実現される。記憶装置14は、通信データ情報15を格納することができる。本実施形態において、記憶装置14は、ノード10に含まれる各部から最もアクセス効率が良い(近い、近傍の)記憶装置である。
通信データ情報15は、NIC12がネットワーク1000から受信した通信データを含む。通信データ情報15は、NIC12によって、記憶装置14に格納される。
次に、上述した構成を備える本実施形態の動作について詳細に説明する。まず、通信を行う前の準備段階の動作について説明する。
まず、ノード10および20において、それぞれ受信プロセス16および26が、1つのソケット(同じネットワークアドレス)に対する受信待ちを要求する受け付け要求を、接続待ち受け部2に対して発行する。なお、受信プロセス16および26は、あらかじめ各ノードにおいて生成されていることを前提とする。また、受信プロセス16および26は、それぞれノード10および20において効率的に動作できるように、受信プロセス自身のデータを主に記憶装置14または24に格納していることを前提とする。通知後、受信プロセス16および26は、接続(受信)待ち状態となる。
接続待ち受け部2は、各受信プロセスから通知を受けたことを内部に記憶する。
以上が、準備段階の動作である。
次に、情報処理システム1が、ネットワーク1000から通信データを受信する際の動作を説明する。
例えば、初めに、ノード10のNIC12が、ネットワーク1000からの接続要求を受信した場合、NIC12は、受信した通信データを含む通信データ情報15を、記憶装置14に保存する。そして、NIC12は、通信データ情報15を受信したことを、接続待ち受け部2に対して通知する。
次に、接続待ち受け部2は、NIC12からの通知を受けて、通信データ情報15が格納された物理メモリ位置に基づいて、その物理メモリ位置に対するアクセス効率が良いCPUを選択する。具体的には、接続待ち受け部2は、通信データ情報15の格納された物理メモリ位置(すなわち、記憶装置14の中)に対して、アクセス効率が良いCPU11を選択する。
そして、接続待ち受け部2は、選択したCPUにおいて動作する受信プロセスに対して、通信データ情報15の受信処理を割り当てる。具体的には、接続待ち受け部2は、選択したCPU11において動作する受信プロセス16に対して、通信データ情報15の受信処理を割り当てる。
このようにして、受信プロセス16が、NIC12が受信した通信データ情報15に対する受信処理を行う。受信プロセス16自身のデータも通信データ情報15も自ノード10の記憶装置14にあるので、受信プロセス16は、リモートアクセスを増加することなく、メモリアクセス効率が良い状態において受信処理を行うことができる。
次に、今度は、ノード20のNIC22が、ネットワーク1000からの接続要求を受信した場合、NIC22は、受信した通信データを含む通信データ情報25を、記憶装置24に保存する。そして、NIC22は、通信データ情報25を受信したことを、接続待ち受け部2に対して通知する。
接続待ち受け部2は、NIC22からの通知を受けて、通信データ情報25の格納された物理メモリ位置(すなわち、記憶装置24の中)に対して、アクセス効率が良いCPU21を選択する。
そして、接続待ち受け部2は、選択したCPU21において動作する受信プロセス26に対して、通信データ情報25の受信処理を割り当てる。
このようにして、今度は、受信プロセス26が、NIC22が受信した通信データ情報25に対する受信処理を行う。受信プロセス26自身のデータも通信データ情報25も自ノード20の記憶装置24にあるので、受信プロセス26も、リモートアクセスを増加することなく、メモリアクセス効率が良い状態において受信処理を行うことができる。
以上説明したように、本実施形態には、1つのソケットで待ち受けている通信に対する受信処理を、受信したNICに応じて、メモリアクセスの効率が良いように複数のプロセスに対して振り分けることができるという効果がある。これにより、あるNICを介して通信されるセッション群は、そのNICが利用する記憶装置に対してアクセス効率の良い位置の受信プロセスが担当するので、メモリのリモートアクセスやキャッシュ競合が減少するという効果も生じる。また、受信したNICに応じた振り分けが可能であることから、本実施形態には、NICの構成変更およびIPアドレスの変更などの際に、情報処理システム1の設定変更を行う必要がないという効果もある。
その理由は、接続待ち受け部2が、通信データ情報15が格納された物理メモリ位置に基づいて、その物理メモリ位置に対するアクセス効率が良いCPUを選択し、そのCPUにおいて動作する受信プロセスに対して処理を割り当てることができるからである。すなわち、本実施形態は、「背景技術」欄に記述した一般的な方法のようにNICが受信する前に処理を行う受信プロセスを定めるのではなく、受信したNICに応じて、複数の受信プロセスの中から、アクセス効率が良い受信プロセスを選択することができるからである。
さらに、ネットワークマルチパス(ボンディング)、またはリンクアグリゲーションなどの技術によってNICが仮想化されている場合にも、IPアドレスと受信プロセスの間の関連付けが制御できるので、効率的な運用が可能になるという効果がある。
ネットワークマルチパス(ボンディング)とは、1つの情報処理システムに搭載した複数のNICを、1つの仮想的なNICとして扱う技術である。また、リンクアグリゲーションとは、複数の物理リンクを束ねて、1つの論理リンクとして扱う通信制御技術である。どちらの技術も、一つのソケットで待ち受けている通信に対して、ネットワークの通信回線およびNICの負荷を分散することにより、多数のセッションの通信を処理可能とすることができる。しかし、一般的な情報処理システムでは、これらの通信制御技術によって、着信するNICを分散しても、IPアドレスとNICとを関連付ける仕組みがないことにより、受信プロセスを効率よく割り当てることができないという課題があった。
本実施形態によれば、あらかじめ複数の受信プロセスを各ノードの負荷を考慮して分散配置しておくことにより、情報処理システム1が、各NICに効率よく分散して着信することに連動して、効率の良い受信プロセスの割り当てが可能になるという効果がある。
<第2の実施形態>
次に、上述した第1の実施形態を基本とする第2の実施形態について説明する。以下では、第2の実施形態に係る特徴的な部分を中心に説明し、第1の実施形態と同様な構成を有する第2の実施形態の構成要素には、第1の実施形態で付した参照符号と同一の参照符号を付し、その構成要素について重複する詳細な説明は省略する。
まず、図2を参照して、以下に本実施形態の構成を説明する。図2は、本発明の第2の実施形態に係る情報処理システム100の構成を示すブロック図である。
本実施形態は、第1の実施形態を、NUMAアーキテクチャの情報処理システム100に適用した具体例である。NUMAアーキテクチャの構造および特性は、「背景技術」欄において上述した通りである。
また、本実施形態では、ソケット通信を具体例として、情報処理システム100が、受信プロセスおよび着信する通信セッションを管理する様子を詳細に説明する。したがって、本実施形態は、ソケット通信における管理に利用されるアフィニティ指定部101および待ち受けソケット情報200とを含む点が、上述した第1の実施形態と異なる。また、本実施形態は、接続待ち受け部102が、アフィニティ指定部101および待ち受けソケット情報200とを用いて、通信を管理する点が、上述した第1の実施形態と異なる。
図2を参照すると、本実施形態に係る情報処理システム100は、4つのNUMAノード110〜140を含む。本実施形態において、情報処理システム100は、一例として、4つのNUMAノードを有するが、これに限定されない。すなわち、情報処理システム100は、2つ以上のNUMAノードを含むことができる。
情報処理システム100は、情報処理システム1を基本とする。すなわち、情報処理システム100は、NUMAノード110〜140に含まれるCPUを用いて実行されるコンピュータ・プログラム(ソフトウェア・プログラム)の制御により動作する一般的なマルチプロセッサの情報処理システム(コンピュータ)によって構成されても良い。または、情報処理システム100の各部が、専用のハードウェアデバイス、または論理回路によって構成されても良い。なお、情報処理システム100をコンピュータによって実現したハードウェア構成例については、図7を参照して後述する。
NUMAノード120〜140は、アフィニティ指定部101、接続待ち受け部102、および待ち受けソケット情報200を除いて、NUMAノード110と基本的に同じ構成を有する。以下の説明においては、特別にNUMAノード120〜140に関して記述する部分を除き、NUMAノード110の各構成の説明をもって、NUMAノード120〜140の各構成の説明に代えることができる。アフィニティ指定部101、接続待ち受け部102、および待ち受けソケット情報200は、情報処理システム100において、1つである。図2において、これら3つは、一例として、NUMAノード110において動作するが、これに限定されない。なお、これら3つは、いずれか1つのノードにおいて動作してもよいが、複数のノードにおいて、一部の機能を分散して動作してもよい。また、本実施形態において、これら3つは、情報処理システム100を制御するオペレーティングシステム(OS:Operating System)に含めてもよい。
なお、図2において、NUMAノード130および140の各部は省略されているが、NUMAノード130および140は、NUMAノード120と同様の構成を有する。NUMAノード130の各部の符号は、NUMAノード120の各部の符号「21」〜「26」を、「31」〜「36」と置き替えることにより表される。同様にNUMAノード140の各部の符号は、NUMAノード120の各部の符号「21」〜「26」を、「41」〜「46」と置き替えることにより表される。
NUMAノード110は、受信プロセス16、CPU11、通信制御部(NIC)12、アフィニティ指定部101、接続待ち受け部102、記憶装置14を有する。記憶装置14は、通信データ情報15、および待ち受けソケット情報200を格納することができる。
本実施形態においても、各CPUと各記憶装置のアクセス範囲およびアクセス効率における特徴は、第1の実施形態と同様である。例えば、本実施形態においても、情報処理システム100に含まれる各CPUが、他のCPUに対応づけられる記憶装置に対して、アクセスすることが可能である。本実施形態においては、自ノードに含まれる記憶装置が、各機能部にとって、もっともアクセス効率の良い(最近傍の)記憶装置である。
なお、NUMAアーキテクチャの特性の1つとして、本実施形態においては、情報処理システム100に含まれる全CPUが、共通のメモリアドレス空間を持つ前提とする。したがって、本実施形態においては、各記憶装置は、物理アドレスの範囲(開始アドレスから終了アドレスまで)によって識別可能である。例えば、接続待ち受け部102は、各記憶装置の物理アドレスの範囲を表す情報をあらかじめ持つことにより、通信データ情報15の物理アドレスから、それを格納する記憶装置が、記憶装置14であることを知ることができる。
CPU11、NIC12、記憶装置14、通信データ情報15の構成および動作は、上述した以外は、第1の実施形態における同名の機能部と同様であるので、重複する詳細な説明は省略する。
受信プロセス16は、第1の実施形態における受信プロセス16を基本とする。すなわち、受信プロセス16は、CPU11において動作する。また、受信プロセス16は、ノード10において効率的に動作できるように、受信プロセス16自身のデータを主に記憶装置14に格納している。ただし、本実施形態においては、受信プロセス16は、図示しないアプリケーションなどによって起動される。
アフィニティ指定部101は、受信プロセス16〜46(または、図示しないアプリケーションなど)から要求を受けて、接続待ち受け部102に対して、「近傍CPU優先起床フラグ201」を指定する。近傍CPU優先起床フラグ201は、接続待ち受け部102に対して、本実施形態による通信制御の実行を指定する設定情報である。近傍CPU優先起床フラグが指定されない場合、接続待ち受け部102は、一般的なソケット通信が指定されたと解釈する。
接続待ち受け部102は、第1の実施形態における接続待ち受け部2を基本とする。本実施形態においては、接続待ち受け部102は、受信プロセス16〜46、NIC12〜42を介して受信するセッション、および、近傍CPU優先起床フラグ201を登録することができる待ち受けソケット情報200を生成する。
以下に、待ち受けソケット情報200の詳細な構造を、図3を参照して説明する。図3は、第2の実施形態に係る情報処理システム100の各部と待ち受けソケット情報200との関係の一例を表す概念図である。
図3を参照すると、待ち受けソケット情報200は、近傍CPU優先起床フラグ201と、各CPU11〜41に対応する待ちキュー211〜214およびセッションキュー221〜224とを含むことができる。近傍CPU優先起床フラグ201は、アフィニティ指定部101を介して、当該フラグが指定されたことを表す情報を含むことができる。待ちキュー211〜214は、受信待ち状態の受信プロセス16〜46を表す情報を、各CPU11〜41ごとに登録することができるキューである。セッションキュー221〜224は、各NIC12〜42に着信したセッションを処理する受信プロセスがない場合に、到着(受信)済みのセッションを登録することができるキューである。接続待ち受け部102は、待ちキュー211〜214、およびセッションキュー221〜224を、先入れ先出し(FIFO:First In First Out)によって処理する。
接続待ち受け部102は、各NIC12〜42から各通信データ情報15〜45の受信を通知されたとき、待ちキュー211〜214に基づいて、受信プロセス16〜46を選択する。そして、接続待ち受け部102は、選択した受信プロセスに対して各通信データ情報15〜45の処理を割り当てることができる。また、接続待ち受け部102は、各受信プロセス16〜46から受付要求を受けたとき、セッションキュー221〜224に基づいて、受信プロセス16〜46に対して、処理待ち状態のセッション(通信データ情報15〜45のいずれか)の処理を割り当てることができる。
接続待ち受け部102は、これらの割り当て処理の際に、第1の実施形態を基本とする選択処理を実行する。すなわち、接続待ち受け部102は、各通信データ情報15〜45の物理アドレスに基づいて、受信処理が可能な受信プロセス16〜46から、最もメモリアクセス効率の良い受信プロセス16〜46を選択する。
次に、上述した構成を備える本実施形態の動作について詳細に説明する。初めに、本実施形態の理解の参考として、一般的なソケット通信における処理の概要を簡単に説明する。一般的なソケット通信においてデータの受信処理が可能になるまでには、ソケット生成処理と、受付要求処理と、セッション受付処理との3段階の処理がある。
まず、ソケット生成処理が実行される。情報処理システムにおいて、アプリケーションがデータの受信を行おうとする場合、まず、アプリケーションは、OSの機能(listenシステムコール等)を呼び出す。そして、OSの一般的な機能を有する接続待ち受け部が、システムコールの呼び出しに対して、一般的な待ち受けソケットを生成する。
上記のソケット生成処理の後、受付要求処理が実行される。アプリケーションによって生成された受信プロセスが、その待ち受けソケットを指定して、受付要求(acceptシステムコール等)を呼び出す。接続待ち受け部は、受付要求に応じて、待ち受けソケットに含まれる「待ちキュー」に受信プロセスを表す情報を登録する(以下、「受信プロセスを登録する」のように省略する)。受信プロセスは、接続待ち受け部から受付要求が返されるまで、受信待ち状態となる(休眠する)。
上記の受付要求処理の後、情報処理システムは、通信相手であるクライアントからのセッション要求を受け付けるセッション受付処理が実行可能となる。以下に、セッション受付処理の動作を説明する。
セッション受付処理は、情報処理システムのNICが、クライアントからセッション要求(SYN(synchronize)パケット)を受信することにより開始される。SYNパケットは、CPUまたはメモリごとに配置されたいずれかのNICを介して、通信データ情報としてメモリに格納される。セッション要求の受信後、接続待ち受け部などが、クライアントに対してSYNACK(SYN acknowledgment)パケットを送信し、それに対する応答のACKパケットを受信することにより、セッションが成立する。
セッションが成立すると、接続待ち受け部は、そのセッションに対する割当処理を行う。すなわち、接続待ち受け部は、成立したセッションに関するIPアドレス、およびポート番号を含むネットワークアドレスなどに基づいて、そのセッションを適切な待ち受けソケットに振り分ける。接続待ち受け部は、その待ち受けソケットの待ちキューに登録されている受信プロセスがあれば、その受信プロセスを起床することにより、セッションの通信データ情報の処理を割り当てる。もし、受信待ち状態の受信プロセスが1つもない場合は、接続待ち受け部は、待ち受けソケットに含まれる「セッションキュー」に、成立したセッションをチェーン(登録)した後、受信プロセスから新たな受付要求が到着するまで待つ。そして、接続待ち受け部は、その後、受付要求を発行した受信プロセスに対して、セッションキューに登録されていたセッション(通信データ情報)の処理を割り当てる。以上が、セッション受付処理である。
最終的に、通信データ情報の処理を割り当てられた受信プロセスが、そのセッションに対する受信処理を行う。
一般的なソケット通信において、上記の「待ちキュー」および「セッションキュー」は、待ち受けソケットに対して単一のキューとして構成されている。
このような一般的なソケット通信における処理を踏まえて、以下に、本実施形態に係る情報処理システム100の動作を説明する。本実施形態における処理は、上記の一般的なソケット通信の処理を基本として、それぞれの段階において、処理の追加、または、一部の処理の変更を行うことにより実現される。
まず、図4を参照して、ソケット生成処理の後に行われる本実施形態の動作を説明する。図4は、第2の実施形態に係る情報処理システム100におけるフラグ付与の動作を示すフローチャートである。
まず、情報処理システム100において、アプリケーション(図示せず)が、データの受信に際して、上述した一般的なソケット生成処理を実行する。なお、上記の一般的なソケット通信の処理の説明における「接続待ち受け部」は、「接続待ち受け部102」に読み替えてもよい。ソケット生成処理が終了した時点における「待ち受けソケット」は、まだ一般的なソケット通信におけるそれである。なお、この動作説明において、ソケットは、情報処理システム100に含まれるすべてのNIC12〜42から受信できるように生成される前提とする。この状態において、図4に示すフラグ付与の動作を実行する。
図4を参照すると、まず、アプリケーションによって生成された受信プロセス16〜46の何れか(またはアプリケーション)が、アフィニティ指定部101を介して、生成された待ち受けソケットに対する近傍CPU優先起床フラグ付与を要求する(ステップA100)。例えば、受信プロセス16〜46は、生成された待ち受けソケットを指定して、フラグ付与を要求するシステムコールを呼び出すなどの方法により、アフィニティ指定部101に対して、フラグ付与の要求を行う。
アフィニティ指定部101は、接続待ち受け部102に対して、指定された待ち受けソケットの情報と、近傍CPU優先起床フラグ付与の要求を受けたことを伝える。接続待ち受け部102は、指定された待ち受けソケット情報に対して、近傍CPU優先起床フラグ201を設定する(ステップB110)。
次に、接続待ち受け部102は、指定された待ち受けソケット情報に対して、情報処理システム100に含まれる各CPU11〜41ごとの待ちキュー、および、セッションキューを拡張する(ステップB111)。具体的には、接続待ち受け部102は、情報処理システム100に含まれるCPUの数(4つ)に対応する待ち受けキュー211〜214と、セッションキュー221〜224とを生成する。このようにして、一般的な待ち受けソケット情報は、図3に示す待ち受けソケット情報200のように拡張される。以上が、フラグ付与の動作である。
次に、情報処理システム100において、上述した一般的な受付要求処理に替えて、図6に示す、本実施形態に係る受付要求処理が実行される。図6は、第2の実施形態における接続待ち受け部102の受付要求処理の動作を示すフローチャートである。以下では、図3に示す受信プロセス16が受付要求(acceptシステムコール等)を呼び出した場合を具体例として、受付要求処理の動作を説明する。
まず、受信プロセス16が、待ち受けソケット情報200を指定して、受付要求を呼び出すと、接続待ち受け部102が、図6に示す動作を実行する。
図6を参照すると、接続待ち受け部102は、まず、待ち受けソケット情報200において、近傍CPU優先起床フラグ201が設定されているかどうかを確認する(ステップD301)。
近傍CPU優先起床フラグ201が設定されていない(すなわち、一般的なソケット通信が指定されている)場合、接続待ち受け部102は、一般的な受付要求の処理として、セッションキューの先頭のセッションを割り当てる(ステップD302)。このときのセッションキューは、一般的な待ち受けソケットに含まれるキューである。一般的な受付要求の処理の結果、受付要求を呼び出した受信プロセスは、割り当てられたセッションの処理が可能になる。
一方、ステップD301において、近傍CPU優先起床フラグ201が設定されている場合、接続待ち受け部102は、受付要求を呼び出した受信プロセス16が動作するCPU11に対して、対応付けられているセッションキュー221を選択する(ステップD310)。
そして、接続待ち受け部102は、選択したセッションキュー221にセッションが登録されているかどうかを確認する(ステップD311)。なお、セッションキューに対するセッション登録の動作は、セッション受付処理の動作説明において後述する。
選択したセッションキュー221においてセッションが登録されている場合、接続待ち受け部102は、受付要求を呼び出した受信プロセス16に対して、選んだセッションキュー221の先頭のセッションを割り当てる(ステップD312)。すなわち、図3に示す具体例の場合、接続待ち受け部102(図2)は、受信プロセス16に対して、通信データ情報15の処理を割り当てる。
この結果、受付要求を呼び出した受信プロセス16が、最もアクセス効率良く処理することができるNIC12に到着済みのセッション(通信データ情報15)の受信処理を行うことが可能になる。その理由は、受信プロセス16は、セッションの通信データ情報15と、プロセス自身のデータとの両方に対して、リモートアクセスなしに効率良くアクセスすることができるからである。
一方、ステップD311において、選択したセッションキュー221にセッションが登録されていない場合、接続待ち受け部102は、他のセッションキューにセッションが登録されているかどうかを確認する(ステップD320)。セッションが登録されている場合、接続待ち受け部102は、他のセッションキューから、セッションが登録されているキューを1つ選ぶ。なお、このとき、接続待ち受け部102は、CPU11になるべく近いNUMAノードのCPUに対応づけられたセッションキューを選んでもよい。例えば、図2、図3において、CPU11からNUMAノード120の記憶装置24の方が、NUMAノード130および140の記憶装置34および44よりもアクセス効率が良い(近い)前提とする。この場合、接続待ち受け部102は、まず、NUMAノード120のCPU12に対応づけられたセッションキュー222を確認してもよい。
ステップD320においてセッションが登録されているセッションキューを選べた場合、接続待ち受け部102は、受付要求を呼び出した受信プロセス16に対して、選んだセッションキューの先頭のセッションを割り当てる(ステップD312)。具体的には、接続待ち受け部102は、受信プロセス16に対して、セッションキュー222に登録されたセッション(通信データ情報25)の受信処理を割り当てる。
この結果、受付要求を呼び出した受信プロセス16が、情報処理システム100に到着済みのセッションの中では、比較的アクセス効率良く処理することができるセッション(通信データ情報25)の受信処理を行うことが可能になる。
一方、ステップD320において、セッションが登録されたセッションキューが一つもない場合、接続待ち受け部102は、受付要求を呼び出した受信プロセス16を、受信プロセス16が動作するCPU11に対応する待ちキュー211に登録する(ステップD321)。このようにして、接続待ち受け部102は、受付要求を呼び出した受信プロセス16が動作するCPU11に対応するセッションキュー221を最優先として、受信プロセス16にセッションの処理を割り当てることができる。また、まだセッションが着信していない場合、接続待ち受け部102は、受信プロセス16〜46が動作するCPU11〜41ごとに分けて、受付要求を呼び出した受信プロセス16〜46を待ちキュー211〜214に登録することができる。
以上が、本実施形態に係る受付要求処理の動作である。
次に、情報処理装置100が、図示しないクライアントから送られたセッション要求を受信した場合に行う、セッション受付処理を説明する。セッション要求(SYNパケット)が到着したとき、受信したNIC12〜42のいずれかが、そのSYNパケットを含む通信データ情報15〜45を自ノードの記憶装置14〜44に格納する。その後、接続待ち受け部102が、図5に示す割当処理を含むセッション受付処理を行う。
図5は、第2の実施形態における接続待ち受け部102の受信したセッションに対する割当処理の動作を示すフローチャートである。図5に示す割当処理は、上述した一般的なセッション受付処理に含まれる割当処理に替えて実行される。以下では、図3に示す待ちキュー211〜214の状態において、NIC12がセッション要求を受信した場合を具体例として、セッション受付処理の動作を説明する。なお、図3に示す待ちキュー211〜214の状態とは、待ちキュー211、213および214には、受信待ち状態の受信プロセスが登録されている状態である。また、このとき、待ちキュー212には、受信プロセスが登録されていない状態である。
まず、NIC12が、クライアントから送られたセッション要求を受信すると、受信した通信データを含む通信データ情報15を、記憶装置14に保存する。そして、NIC12は、通信データ情報15を受信したことを、接続待ち受け部102に対して通知する。このときのNIC12の動作は、第1の実施形態と同様である。
本実施形態では、接続待ち受け部102は、このとき、セッションが成立するまでの処理を実行する。
セッションが成立すると、接続待ち受け部102は、そのセッションに対する受信処理を行う受信プロセスを割り当てる割当処理を行う。
図5を参照すると、接続待ち受け部102は、まず、待ち受けソケット情報200において、近傍CPU優先起床フラグ201が設定されているかどうかを確認する(ステップC201)。
近傍CPU優先起床フラグ201が設定されていない(すなわち、一般的なソケット通信が指定されている)場合、接続待ち受け部102は、一般的な割当処理として、待ちキューの先頭の受信プロセスにそのセッションの処理を割り当てる(ステップC202)。このときの待ちキューは、一般的な待ち受けソケットに含まれるキューである。一般的な割当処理の結果、割り当てを受けた受信プロセスが、受信されたセッションに対する受信処理を行うことが可能になる。
一方、ステップC201において、近傍CPU優先起床フラグ201が設定されている場合、接続待ち受け部102は、NIC12によって通知された通信データ情報15に対して、最近傍のCPU11を選択する(ステップC210)。すなわち、接続待ち受け部102は、通信データ情報15が格納された物理メモリ位置に基づいて、その物理メモリ位置に対するアクセス効率が良いCPUを選択する。具体的には、例えば、NIC12がセッション要求を受信した場合、接続待ち受け部102は、通信データ情報15の物理アドレスに基づいて、最近傍のCPU11を選択する。
通信データ情報15の物理アドレスに基づいて最近傍のCPU11を選択する方法には様々な方法がある。例えば、接続待ち受け部102が、あらかじめ、共通のメモリアドレス空間における各記憶装置14の対応範囲を示す開始物理アドレスおよび終了物理アドレスを含むマッピング情報などを保持してもよい。そして、接続待ち受け部102は、例えば、通信データ情報15の開始位置を示す物理アドレスを、そのマッピング情報と照合することにより、対応する記憶装置14を判別してもよい。最終的に、接続待ち受け部102は、判別した記憶装置14に対して最近傍のCPUであるCPU11を、通信データ情報15の最近傍のCPU11として選択することができる。
そして、接続待ち受け部102は、選択した最近傍のCPU11に対応する待ちキュー211に、受信プロセス16〜46が登録されているかどうかを確認する(ステップC211)。
最近傍のCPUに対応する待ちキュー211に、受信プロセス16が登録されている場合、接続待ち受け部102は、受信したセッションに対して、選択した待ちキュー211の先頭の受信プロセス16を割り当てる(ステップC212)。すなわち、接続待ち受け部102は、休眠している受信プロセス16を起床することにより、通信データ情報15の処理を割り当てる。
この結果、起床された受信プロセス16が、最もアクセス効率よく処理することができるNIC12に到着したセッションの受信処理を行うことが可能になる。
一方、ステップC211において、最近傍のCPUに対応する待ちキューに、受信プロセスが登録されていない場合、接続待ち受け部102は、他のセッションキューにセッションが登録されているかどうかを確認する(ステップC220)。ここでは、NIC22がセッション要求を受信した場合を、具体的として説明する。NIC22がセッション要求を受信すると、通信データ情報25が記憶装置24に格納される。したがって、最近傍のCPUは、CPU21である。最近傍のCPUに対応する待ちキュー212には、受信プロセスが登録されていない。
このとき、接続待ち受け部102は、他の待ちキュー211、213、または214から、受信プロセスが登録されているキューを1つ選ぶ。なお、このとき、接続待ち受け部102は、CPU21になるべく近いNUMAノードのCPUに対応づけられた待ちキューを選んでもよい。例えば、図2、図3において、CPU21が動作するNUMAノード120に隣接するNUMAノード110または130の記憶装置14または34の方が、NUMAノード140の記憶装置44よりもアクセス効率が良い(近い)とする。この場合、接続待ち受け部102は、NUMAノード110または130のCPU11または13に対応づけられた待ちキュー211または213を確認してもよい。ここでは、接続待ち受け部102は、待ちキュー213を選択したこととする。
ステップC220において受信プロセスが登録されている待ちキューを選べた場合、接続待ち受け部102は、受信したセッションに対して、選んだ待ちキュー213の先頭の受信プロセス46を割り当てる(ステップC212)。すなわち、接続待ち受け部102は、休眠している受信プロセス36を起床することにより、通信データ情報25の処理を割り当てる。
この結果、起床された受信プロセス36が、比較的アクセス効率良く処理することができる、隣のNUMAノード120のNIC22に到着したセッションの受信処理を行うことが可能になる。このように、接続待ち受け部102は、受信処理を行うことが可能な受信プロセスにおいて、最も近い受信プロセスを選んで受信処理を割り当てることができる。
一方、ステップC220において、受信プロセスが登録された待ちキューが一つもない場合、接続待ち受け部102は、受信した通信データを含む通信データ情報15〜45に対して最近傍のCPU11〜41を選ぶ。そして、接続待ち受け部102は、到着したセッション(通信データ情報15〜45)を示す情報を、その最近傍のCPU11〜41に対応するセッションキュー221〜224に登録する(ステップC221)。このようにして、接続待ち受け部102は、受信した通信データを含む通信データ情報に最近傍のCPUに対応する待ちキューを最優先として、その通信データ情報に対するアクセス効率が良い受信プロセスに受信処理を割り当てることができる。また、セッションが到着したときに、受信待ち状態の受信プロセスがない場合、接続待ち受け部102は、CPU11〜41ごとに、セッションの通信データを含む通信データ情報15〜45を、到着したセッション(通信データ情報)に最近傍のCPUに対応するセッションキュー221〜224に登録することができる。以上が、本実施形態に係る割当処理の動作である。
このようにして、本実施形態には、上述した第1の実施形態と同様の効果に加えて、さらに、一般的なソケット通信との共存ができるという効果もある。
その理由は、アフィニティ指定部101が、受信プロセスまたはアプリケーションなどから要求を受けて、本実施形態に係る通信制御の実行を指定する近傍CPU優先起床フラグ201を指定することができるからである。また、接続待ち受け部102は、近傍CPU優先起床フラグ201の指定に応じて、一般的なソケット通信と本実施形態に係る通信制御とを切り替えることができるからである。
なお、接続待ち受け部102が、必ずしも、一般的なソケット通信の処理を実行しなくてもよい。例えば、図5のステップC202、セッション受付処理におけるセッションが成立するまでの処理、および図6のステップD302などは、一般的なOSなどによって実行されてもよい。
また、本実施形態では、説明を簡潔にするために、すべてのNUMAノードに受信プロセスおよびNICがある構成としたが、これに限定されない。すなわち、複数のNUMAノードのうち、受信プロセスが動作しないNUMAノードがあってもよい。また、NICを備えていないNUMAノードがあってもよい。
(第2の実施形態の変形例)
なお、本実施形態の変形例としては以下のようなものが考えられる。
例えば、図5のステップC211および220において、接続待ち受け部102は、最近傍のCPUに対応する待ちキューに、受信プロセスが登録されていない場合(ステップC211)、すぐに他の待ちキュー(次善)を確認する(ステップC220)が、これに限らない。すなわち、接続待ち受け部102は、ステップC211の後、タイマーなどにより、一定の期間待機してから、ステップC220を実行してもよい。これにより、接続待ち受け部102は、最近傍のCPUで動作する受信プロセス(最善)が出現することを待つことができる。
同様に、図6のステップD311およびD320において、接続待ち受け部102は、選択したセッションキュー221にセッションが登録されていない場合(ステップD311)、すぐに他のセッションキュー(次善)を確認する(ステップD320)が、これに限らない。すなわち、接続待ち受け部102は、ステップD311の後、タイマーなどにより、一定の期間待機してから、ステップD320を実行してもよい。これにより、接続待ち受け部102は、最もアクセス効率良く処理できるセッション(最善)が到着することを待つことができる。
また、他の変形例として、接続待ち受け部102は、セッションに対する受信プロセスを割り当てる割当処理において、通信データ情報に対して最近傍のCPUを選択した後(ステップC210)、受信待ち状態である受信プロセスに対して、最近傍のCPUを通知してもよい。または、接続待ち受け部102は、図5に示すステップC210以降の割当処理に替えて、受信待ち状態である受信プロセスに対して、セッション要求を受信したNICを通知してもよい。
この場合、あらかじめ起動しておく受信プロセスは、1つだけにすることができる。すなわち、セッション要求を受信してから、あらかじめ起動している受信プロセスが、上記の最近傍のCPUの通知に基づいて、最適な受信処理を実行できる受信プロセスを新たに起動して受信処理を割り当てることができる。または、あらかじめ起動している受信プロセスが、セッション要求を受信したNICの通知に基づいて、当該セッションの処理に最適なCPUを決定し、そのCPUにおいて新たに起動した受信プロセスに対して受信処理を割り当てることができる。なお、このとき、待ちキュー211〜214は1つでよいので、待ち受けソケット情報200の構造と管理が簡易になるという効果もある。以上が、変形例である。
なお、上述した各実施形態において図1および図2に示した各部は、それぞれ独立したハードウェア回路で構成されていてもよいし、ソフトウェアプログラムの機能(処理)単位(ソフトウェアモジュール)と捕らえることができる。
ただし、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。このような場合のハードウェア環境の一例を、図7を参照して説明する。
図7は、本発明の各実施形態、および、その変形例に係る情報処理システムに適用可能なコンピュータ(情報処理装置)の構成を例示する図である。すなわち、図7は、上述した各実施形態における情報処理システム1、および100の少なくとも何れかを実現可能なコンピュータの構成であって、上述した各実施形態における各機能を実現可能なハードウェア環境を示す。
図7に示したコンピュータ900は、CPU(Central Processing Unit)901、ROM(Read Only Memory)902、RAM(Random Access Memory)903、通信インタフェース(I/F)904、ディスプレイ905、及びハードディスク装置(HDD)906を備え、これらがバス907を介して接続された構成を有する。なお、コンピュータ900は、CPU901、RAM903、ROM902、通信インタフェース904の少なくとも一部を備えるノード910を複数有することができる。各ノード910同士は、バス907、または、その他のバス等により相互に接続される。なお、図7に示したコンピュータが情報処理システム1、または100として機能する場合、ディスプレイ905は常時設けられる必要はない。また、通信インタフェース904は、上述した各実施形態において、当該各コンピュータ間における通信を実現する一般的な通信手段である。ハードディスク装置906には、プログラム群906Aと、各種の記憶情報906Bとが格納されている。プログラム群906Aは、例えば、上述した図4乃至図6に示した各ブロック(各部)に対応する機能を実現するためのコンピュータ・プログラムである。このようなハードウェア構成において、CPU901は、コンピュータ900の全体の動作を司る。
そして、上述した各実施形態を例に説明した本発明は、各実施形態の説明において参照したブロック構成図(図1および図2)あるいはフローチャート(図4乃至図6)の機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、当該ハードウェアのCPU901に読み出して実行することによって達成される。また、このコンピュータ内に供給されたコンピュータ・プログラムは、読み書き可能な一時記憶メモリ903またはハードディスク装置906などの不揮発性の記憶デバイス(記憶媒体)に格納すれば良い。また、通信データ情報15〜45、および待ち受けソケット情報200は、そのコンピュータ・プログラムの実行に際して、RAM903に格納すればよい。
また、前記の場合において、当該各装置内へのコンピュータ・プログラムの供給方法は、フロッピーディスク(登録商標)やCD−ROM等の各種記録媒体を介して当該装置内にインストールする方法や、インターネット等の通信ネットワーク1000を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータ・プログラムを構成するコード、或いは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
なお、上述した実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下の付記に限定されるものではない。
(付記1)
それぞれ記憶装置を備えた複数のプロセッサと、
通信ネットワークから通信データを受信し、受信した前記通信データを、アクセス効率がより良い前記記憶装置に格納する通信制御手段と、
前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良い前記プロセッサを選択し、前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う接続待ち受け手段と
を有する情報処理システム。
(付記2)
前記通信データを処理可能な受信プロセスが動作するプロセッサごとの待ちキュー情報をさらに有し、前記待ちキュー情報は、待機状態である前記受信プロセスの情報を含み、
前記接続待ち受け手段は、前記割当処理において、前記記憶装置と各プロセッサとの距離を示す距離情報に基づいて、前記物理メモリ位置に最も近い最近傍プロセッサを選択し、前記待ちキュー情報に基づいて、前記最近傍プロセッサ、または、前記物理メモリ位置にできるだけ近い他のプロセッサにおいて動作する前記受信プロセスを起床することによって、前記受信プロセスに対して前記通信データの処理を割り当て、
起床された前記受信プロセスが前記通信データに対する受信処理を行う
付記1記載の情報処理システム。
(付記3)
前記接続待ち受け手段は、前記受信プロセスの親プロセスに対して、前記物理メモリ位置に最も近いプロセッサを示す近傍プロセッサ情報を通知することによって割当処理を行い、
前記親プロセスは、前記近傍プロセッサ情報に基づいて、新たな受信プロセスを生成し、前記新たな受信プロセスが、前記通信データに対する受信処理を行う
付記1記載の情報処理システム。
(付記4)
前記接続待ち受け手段は、前記最近傍プロセッサにおいて動作する待機状態の受信プロセスがなかった場合に、前記最近傍プロセッサにおいて動作する受信プロセスが待機状態になることを所定の時間において待ち、
前記受信プロセスが待機状態となったときは、前記最近傍プロセッサにおいて動作する前記受信プロセスに対して、前記通信データの処理を割り当て、
前記受信プロセスが待機状態とならなかったときは、前記物理メモリ位置にできるだけ近い、前記最近傍プロセッサ以外の他のプロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる
付記2記載の情報処理システム。
(付記5)
前記通信データを受信する前に、複数の受信プロセスによって受信処理を行うことを示すアフィニティ情報が指定されたときに、前記待ちキュー情報を生成するアフィニティ指定手段をさらに有し、
前記接続待ち受け手段は、前記アフィニティ情報が指定された場合に、前記割当処理を実行する
付記1、2、または4のいずれかに記載の情報処理システム。
(付記6)
前記通信制御手段は、前記通信データを、前記通信制御手段自身に近い記憶装置に格納し、
前記通信データは、セッション要求情報を含み、
前記接続待ち受け手段は、セッション成立の際に前記割当処理を行う
付記1乃至5のいずれかに記載の情報処理システム。
(付記7)
通信ネットワークから通信データを受信し、
受信した前記通信データを、アクセス効率がより良い記憶装置に格納し、
前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良いプロセッサを選択し、
前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う制御方法。
(付記8)
前記通信データを受信する前に、
前記通信データを処理可能な受信プロセスが動作するプロセッサごとの待ちキュー情報を生成し、
前記受信プロセスが待機状態になった際に、前記待ちキュー情報に、待機状態である前記受信プロセスの情報を格納し、
前記割当処理において、
前記記憶装置と各プロセッサとの距離を示す距離情報に基づいて、前記物理メモリ位置に最も近い最近傍プロセッサを選択し、
前記待ちキュー情報に基づいて、前記最近傍プロセッサ、または、前記物理メモリ位置にできるだけ近い他のプロセッサにおいて動作する前記受信プロセスを起床することによって、前記受信プロセスに対して前記通信データの処理を割り当て、
起床された前記受信プロセスに前記通信データに対する受信処理を実行させる
付記7記載の制御方法。
(付記9)
前記割当処理の際に、
前記受信プロセスの親プロセスに対して、前記物理メモリ位置に最も近いプロセッサを示す近傍プロセッサ情報を通知し、
前記親プロセスは、前記近傍プロセッサ情報に基づいて、新たな受信プロセスを生成し、前記新たな受信プロセスが、前記通信データに対する受信処理を行う
付記7記載の制御方法。
(付記10)
前記割当処理の際に、
前記最近傍プロセッサにおいて動作する待機状態の受信プロセスがなかった場合に、前記最近傍プロセッサにおいて動作する受信プロセスが待機状態になることを所定の時間において待ち、
前記受信プロセスが待機状態となったときは、前記最近傍プロセッサにおいて動作する前記受信プロセスに対して、前記通信データの処理を割り当て、
前記受信プロセスが待機状態とならなかったときは、前記物理メモリ位置にできるだけ近い、前記最近傍プロセッサ以外の他のプロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる
付記8記載の制御方法。
(付記11)
前記通信データを受信する前に、複数の受信プロセスによって受信処理を行うことを示すアフィニティ情報が指定されたときに、前記待ちキュー情報を生成し、
前記アフィニティ情報が指定された場合に、前記割当処理を実行する
付記7、8、または10のいずれかに記載の制御方法。
(付記12)
セッション要求情報を含む前記通信データを受信した際に、前記通信データを受信した通信制御手段に近い記憶装置に、前記通信データを格納し、
セッション成立の際に前記割当処理を行う
付記7乃至11のいずれかに記載の制御方法。
(付記13)
通信ネットワークから通信データを受信し、受信した前記通信データを、アクセス効率がより良い記憶装置に格納する通信制御処理と、
前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良いプロセッサを選択し、前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う接続待ち受け処理と
をコンピュータに実行させるコンピュータ・プログラム。
(付記14)
前記接続待ち受け処理において、
前記通信データを受信する前に、前記通信データを処理可能な受信プロセスが動作するプロセッサごとの待ちキュー情報を生成し、前記受信プロセスが待機状態になった際に、前記待ちキュー情報に、待機状態である前記受信プロセスの情報を格納し、
前記割当処理において、前記記憶装置と各プロセッサとの距離を示す距離情報に基づいて、前記物理メモリ位置に最も近い最近傍プロセッサを選択し、前記待ちキュー情報に基づいて、前記最近傍プロセッサ、または、前記物理メモリ位置にできるだけ近い他のプロセッサにおいて動作する前記受信プロセスを起床することによって、前記受信プロセスに対して前記通信データの処理を割り当て、
起床された前記受信プロセスに前記通信データに対する受信処理を実行させる 付記13記載のコンピュータ・プログラム。
(付記15)
前記接続待ち受け処理において、
前記受信プロセスの親プロセスに対して、前記物理メモリ位置に最も近いプロセッサを示す近傍プロセッサ情報を通知することにより前記割当処理を行う
付記13記載のコンピュータ・プログラム。
1、100 情報処理システム
2、102 接続待ち受け部
10、20 ノード
11、21、31、41 プロセッサ(CPU)
12、22、32、42 通信制御部(NIC)
14、24、34、44 記憶装置
15、25、35、45 通信データ情報
16、26、36、46 受信プロセス
101 アフィニティ指定部
110、120、130、140NUMAノード
200 待ち受けソケット情報
201 近傍CPU優先起床フラグ
211、212、213、214 待ちキュー
221、222、223、224 セッションキュー
900 情報処理システム(コンピュータ)
901 CPU
902 ROM
903 RAM
904 通信インタフェース(I/F)
905 ディスプレイ
906 ハードディスク装置(HDD)
906A プログラム群
906B 各種の記憶情報
907 バス
910 ノード
1000 ネットワーク(通信ネットワーク)

Claims (10)

  1. それぞれ記憶装置を備えた複数のプロセッサと、
    通信ネットワークから通信データを受信し、受信した前記通信データを、アクセス効率がより良い前記記憶装置に格納する通信制御手段と、
    前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良い前記プロセッサを選択し、前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う接続待ち受け手段と
    を有する情報処理システム。
  2. 前記通信データを処理可能な受信プロセスが動作するプロセッサごとの待ちキュー情報をさらに有し、前記待ちキュー情報は、待機状態である前記受信プロセスの情報を含み、
    前記接続待ち受け手段は、前記割当処理において、前記記憶装置と各プロセッサとの距離を示す距離情報に基づいて、前記物理メモリ位置に最も近い最近傍プロセッサを選択し、前記待ちキュー情報に基づいて、前記最近傍プロセッサ、または、前記物理メモリ位置にできるだけ近い他のプロセッサにおいて動作する前記受信プロセスを起床することによって、前記受信プロセスに対して前記通信データの処理を割り当て、
    起床された前記受信プロセスが前記通信データに対する受信処理を行う
    請求項1記載の情報処理システム。
  3. 前記接続待ち受け手段は、前記受信プロセスの親プロセスに対して、前記物理メモリ位置に最も近いプロセッサを示す近傍プロセッサ情報を通知することによって割当処理を行い、
    前記親プロセスは、前記近傍プロセッサ情報に基づいて、新たな受信プロセスを生成し、前記新たな受信プロセスが、前記通信データに対する受信処理を行う
    請求項1記載の情報処理システム。
  4. 前記接続待ち受け手段は、前記最近傍プロセッサにおいて動作する待機状態の受信プロセスがなかった場合に、前記最近傍プロセッサにおいて動作する受信プロセスが待機状態になることを所定の時間において待ち、
    前記受信プロセスが待機状態となったときは、前記最近傍プロセッサにおいて動作する前記受信プロセスに対して、前記通信データの処理を割り当て、
    前記受信プロセスが待機状態とならなかったときは、前記物理メモリ位置にできるだけ近い、前記最近傍プロセッサ以外の他のプロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる
    請求項2記載の情報処理システム。
  5. 前記通信データを受信する前に、複数の受信プロセスによって受信処理を行うことを示すアフィニティ情報が指定されたときに、前記待ちキュー情報を生成するアフィニティ指定手段をさらに有し、
    前記接続待ち受け手段は、前記アフィニティ情報が指定された場合に、前記割当処理を実行する
    請求項1、2、または4のいずれかに記載の情報処理システム。
  6. 通信ネットワークから通信データを受信し、
    受信した前記通信データを、アクセス効率がより良い記憶装置に格納し、
    前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良いプロセッサを選択し、
    前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う制御方法。
  7. 前記通信データを受信する前に、
    前記通信データを処理可能な受信プロセスが動作するプロセッサごとの待ちキュー情報を生成し、
    前記受信プロセスが待機状態になった際に、前記待ちキュー情報に、待機状態である前記受信プロセスの情報を格納し、
    前記割当処理において、
    前記記憶装置と各プロセッサとの距離を示す距離情報に基づいて、前記物理メモリ位置に最も近い最近傍プロセッサを選択し、
    前記待ちキュー情報に基づいて、前記最近傍プロセッサ、または、前記物理メモリ位置にできるだけ近い他のプロセッサにおいて動作する前記受信プロセスを起床することによって、前記受信プロセスに対して前記通信データの処理を割り当て、
    起床された前記受信プロセスに前記通信データに対する受信処理を実行させる
    請求項6記載の制御方法。
  8. 通信ネットワークから通信データを受信し、受信した前記通信データを、アクセス効率がより良い記憶装置に格納する通信制御処理と、
    前記通信データが格納された物理メモリ位置に基づいて、前記物理メモリ位置に対するアクセス効率がより良いプロセッサを選択し、前記プロセッサにおいて動作する受信プロセスに対して、前記通信データの処理を割り当てる割当処理を行う接続待ち受け処理と
    をコンピュータに実行させるコンピュータ・プログラム。
  9. 前記接続待ち受け処理において、
    前記通信データを受信する前に、前記通信データを処理可能な受信プロセスが動作するプロセッサごとの待ちキュー情報を生成し、前記受信プロセスが待機状態になった際に、前記待ちキュー情報に、待機状態である前記受信プロセスの情報を格納し、
    前記割当処理において、前記記憶装置と各プロセッサとの距離を示す距離情報に基づいて、前記物理メモリ位置に最も近い最近傍プロセッサを選択し、前記待ちキュー情報に基づいて、前記最近傍プロセッサ、または、前記物理メモリ位置にできるだけ近い他のプロセッサにおいて動作する前記受信プロセスを起床することによって、前記受信プロセスに対して前記通信データの処理を割り当て、
    起床された前記受信プロセスに前記通信データに対する受信処理を実行させる
    請求項8記載のコンピュータ・プログラム。
  10. 前記接続待ち受け処理において、
    前記受信プロセスの親プロセスに対して、前記物理メモリ位置に最も近いプロセッサを示す近傍プロセッサ情報を通知することにより前記割当処理を行う
    請求項8記載のコンピュータ・プログラム。
JP2014061324A 2014-03-25 2014-03-25 情報処理システム及び制御方法、並びにコンピュータ・プログラム Pending JP2015184960A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014061324A JP2015184960A (ja) 2014-03-25 2014-03-25 情報処理システム及び制御方法、並びにコンピュータ・プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014061324A JP2015184960A (ja) 2014-03-25 2014-03-25 情報処理システム及び制御方法、並びにコンピュータ・プログラム

Publications (1)

Publication Number Publication Date
JP2015184960A true JP2015184960A (ja) 2015-10-22

Family

ID=54351402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014061324A Pending JP2015184960A (ja) 2014-03-25 2014-03-25 情報処理システム及び制御方法、並びにコンピュータ・プログラム

Country Status (1)

Country Link
JP (1) JP2015184960A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017172215A1 (en) * 2016-03-31 2017-10-05 Intel Corporation Technologies for network i/o access
WO2023066180A1 (zh) * 2021-10-19 2023-04-27 华为技术有限公司 一种数据处理的方法和相关装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017172215A1 (en) * 2016-03-31 2017-10-05 Intel Corporation Technologies for network i/o access
US10142231B2 (en) 2016-03-31 2018-11-27 Intel Corporation Technologies for network I/O access
WO2023066180A1 (zh) * 2021-10-19 2023-04-27 华为技术有限公司 一种数据处理的方法和相关装置

Similar Documents

Publication Publication Date Title
WO2017133623A1 (zh) 一种数据流处理方法、装置和系统
US8478926B1 (en) Co-processing acceleration method, apparatus, and system
US10365830B2 (en) Method, device, and system for implementing hardware acceleration processing
EP3073374B1 (en) Thread creation method, service request processing method and related device
EP3252613B1 (en) Resource management for peripheral component interconnect-express domains
EP2240852B1 (en) Scalable sockets
KR102128357B1 (ko) 주소 할당 방법, 게이트웨이 및 시스템
JP6275119B2 (ja) メモリ要素の割当てのために一方向リンク付けリストを区分化するシステム及び方法
US20140068625A1 (en) Data processing systems
US11909632B2 (en) Distributed label assignment for labeled routing protocol routes
KR20170030578A (ko) 프록시 기반 멀티스레딩 메시지 전달 통신을 위한 기술
CN115167996A (zh) 调度方法及装置、芯片、电子设备及存储介质
WO2022100116A1 (zh) 一种保序执行写请求的方法及网络设备
JP2015184960A (ja) 情報処理システム及び制御方法、並びにコンピュータ・プログラム
CN115766729A (zh) 一种四层负载均衡的数据处理方法及相关装置
CN111147611B (zh) 参考附加网络地址转换表提供快速分组转发的电子设备
KR20210122056A (ko) 스토리지 장치들을 포함하는 스토리지 서버의 성능 스케일링
WO2016006228A1 (ja) 仮想化システムおよび仮想化方法
CN110300068A (zh) Arp资源管理方法、装置、电子设备
JP2008097273A (ja) ネットワークインタフェース装置、ネットワークインタフェース制御方法、情報処理装置、データ転送方法
WO2024098926A1 (zh) 一种计算资源的管理方法以及装置
Nanri et al. Channel interface: a primitive model for memory efficient communication
WO2020168505A1 (zh) 一种在多个处理器之间调度软件任务的方法和装置
CN110955533A (zh) 用于多连接消息接发端点的技术
GB2484707A (en) Data processing systems