(57)【要約】【課題】ノード間でのデータ通信量を低減できるようにする。【解決手段】タスクを実行可能な複数のタスク処理ノード２００と、新規タスクを割り当てるタスク処理ノード２００を決定するタスク管理ノード１００とを有する計算機システム１０であって、タスク処理ノード２００のそれぞれは、自身に割り当てられた割当タスクが使用するデータをキャッシュ可能なメモリ２０２を備え、タスク管理ノード１００は、割当タスクと、割当タスクが割り当てられ、且つ、使用するデータがキャッシュされているタスク処理ノード２００との対応関係を含むタスク割当履歴情報１１２を記憶し、タスク管理ノード１００のＣＰＵ１０１を、新規タスクと割当タスクとの類似度を判定し、類似度に基づいて、タスク割当履歴情報１１２に含まれるタスク処理ノード２００の中から新規タスクを割り当てるタスク処理ノード２００を決定し、新規タスクを割り当てるように構成する。【選択図】図１
2019087039.tif 000002
【特許請求の範囲】
【請求項１】
タスクを実行可能な複数のタスク処理ノードと、新規タスクを割り当てるタスク処理ノードを決定するタスク管理ノードとを有するタスク管理システムであって、
複数の前記タスク処理ノードのそれぞれは、自身に割り当てられたタスクである割当タスクが使用するデータをキャッシュ可能なメモリを備え、
前記タスク管理ノードは、
前記割当タスクと、前記割当タスクが割り当てられ、且つ、前記割当タスクが使用するデータがキャッシュされている前記タスク処理ノードとの対応関係を含むタスク割当情報を記憶し、
前記タスク管理ノードのプロセッサは、
前記新規タスクと、前記割当タスクとの類似度を判定し、
前記類似度に基づいて、前記タスク割当情報に含まれている前記タスク処理ノードの中から前記新規タスクを割り当てるタスク処理ノードを決定し、
前記決定したタスク処理ノードに前記新規タスクを割り当てる
タスク管理システム。
【請求項２】
前記タスク管理ノードは、
前記割当タスクに、前記割当タスクを所定の解析方法により解析した解析結果を対応付けて記憶し、
前記タスク管理ノードのプロセッサは、
前記新規タスクを前記所定の解析方法で解析し、
前記新規タスクの解析結果と、前記割当タスクの前記解析結果とに基づいて、前記類似度を判定する
請求項１に記載のタスク管理システム。
【請求項３】
前記割当タスク及び前記新規タスクは、自然言語処理に関するタスクであり、
前記所定の解析方法は、前記割当タスク又は前記新規タスクの語又は文章をベクトル化する方法である
請求項２に記載のタスク管理システム。
【請求項４】
前記タスク処理ノードのプロセッサは、
自身の前記タスク処理ノードに割り当てられた前記新規タスクで使用するデータであって、前記メモリにキャッシュされていないデータを所定の記憶装置から取得して前記メモリにキャッシュする
請求項１から請求項３のいずれか一項に記載のタスク管理システム。
【請求項５】
前記タスク処理ノードは、
前記割当タスクと、前記割当タスクで使用されるデータの内のキャッシュされているデータとの対応関係の情報を記憶し、
前記タスク管理ノードのプロセッサは、
所定の条件に従って、前記割当タスクについて、キャッシュされているデータを削除する際の優先順位を決定して前記タスク処理ノードに通知し、
前記タスク処理ノードのプロセッサは、
前記メモリに前記記憶装置から取得した前記データをキャッシュするための空き容量がない場合に、前記優先順位に従って、前記割当タスクで使用するデータを前記メモリから削除する
請求項４に記載のタスク管理システム。
【請求項６】
前記タスク処理ノードのプロセッサは、
前記割当タスクで使用するデータであって、他の割当タスクで使用されないデータを前記メモリから削除する
請求項５に記載のタスク管理システム。
【請求項７】
前記タスク管理ノードのプロセッサは、
前記割当タスクの最終実行日時、前記割当タスクと１以上の新規タスクとの類似度、新規タスクとの類似度を算出した回数、前記割当タスクを実行した実行ノードに対して前記新規タスクを割り当てた回数の少なくともいずれか１つに基づいて、前記優先順位を決定する
請求項５又は請求項６に記載のタスク管理システム。
【請求項８】
前記タスク管理ノードのプロセッサは、
前記割当タスクで使用する全てのデータが前記メモリから削除された場合に、前記割当タスクを実行した前記タスク処理ノードを特定する情報を削除する
請求項５から請求項７のいずれか一項に記載のタスク管理システム。
【請求項９】
前記タスク処理ノードは、
前記割当タスクと、前記割当タスクで使用されるデータの内のキャッシュされているデータとの対応関係の情報を記憶し、
前記タスク処理ノードのプロセッサは、
前記メモリに前記記憶装置から取得した前記データをキャッシュするための空き容量がない場合に、複数の前記割当タスクで使用されていないデータを前記メモリから削除する
請求項４から請求項８のいずれか一項に記載のタスク管理システム。
【請求項１０】
前記所定の記憶装置は、
前記複数のタスク処理ノードの少なくともいずれか１つに備えられている
請求項１から請求項９のいずれか一項に記載のタスク管理システム。
【請求項１１】
前記所定の記憶装置は、
前記タスク処理ノードと別体で構成されるデータ管理ノードに備えられている
請求項１から請求項９のいずれか一項に記載のタスク管理システム。
【請求項１２】
タスクを実行可能な複数のタスク処理ノードと、新規タスクを割り当てるタスク処理ノードを決定するタスク管理ノードとを有するタスク管理システムによるタスク管理方法であって、
複数の前記タスク処理ノードのそれぞれは、自身に割り当てられたタスクである割当タスクが使用するデータをキャッシュ可能なメモリを備えており、
前記割当タスクと、前記割当タスクが割り当てられ、且つ、前記割当タスクが使用するデータがキャッシュされている前記タスク処理ノードとの対応関係を含むタスク割当情報を記憶し、
前記新規タスクと、前記割当タスクとの類似度を判定し、
前記類似度に基づいて、前記タスク割当情報に含まれている前記タスク処理ノードの中から前記新規タスクを割り当てるタスク処理ノードを決定し、
前記決定したタスク処理ノードに前記新規タスクを割り当てる
タスク管理方法。
【請求項１３】
タスクを実行可能な複数のタスク処理ノードの中から新規タスクを割り当てるタスク処理ノードを決定するタスク管理ノードを構成するコンピュータに実行させるためのタスク管理プログラムであって、
前記コンピュータは、
複数の前記タスク処理ノードのそれぞれは、自身に割り当てられたタスクである割当タスクが使用するデータをキャッシュ可能なメモリを備え、
前記コンピュータに、
前記割当タスクと、前記割当タスクが割り当てられ、且つ、前記割当タスクが使用するデータがキャッシュされている前記タスク処理ノードとの対応関係を含むタスク割当情報を記憶させ、
前記新規タスクと、前記割当タスクとの類似度を判定させ、
前記類似度に基づいて、前記タスク割当情報に含まれている前記タスク処理ノードの中から前記新規タスクを割り当てるタスク処理ノードを決定させ、
前記決定したタスク処理ノードに前記新規タスクを割り当てさせる
タスク管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードの中からタスクを割り当てるノードを決定するタスク管理システム等に関する。
【背景技術】
【０００２】
現在、ＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）を活用した判断支援サービスを提供する市場が拡大している。自然言語処理系ＡＩを活用するサービスでは、大容量のテキストデータを扱うため、複数のノードによるデータの分散管理と分散処理とが行われている。
【０００３】
近年、ＡＩ処理の目的で、タスクを分散処理する際、大容量データを複数ノードに分散させて管理する方法が用いられている。この方法を用いた場合には、タスクを処理する際、タスクが必要とするデータを分散管理されたノードから取得する必要があり、タスクで必要なデータが多くなる程、ノード間の通信が増加し、通信がボトルネックとなって処理の速度が低下する問題がある。
【０００４】
これに対して、処理を高速化するため、タスクが使用するデータが最も多く保存されているノードに近い、タスクを処理するノードにタスクを配置し、データ取得時のノード間通信を削減する方法が用いられている。例えば、特許文献１には、ノード間の実際の距離を用いてタスクを割り当てるノードを決定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１４／０３７２６１１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記したように、複数のノードにデータを分散管理し、複数のノードで分散処理する場合には、ノード間のデータ量を削減することが要請される。
【０００７】
例えば、特許文献１の技術では、タスクが使用するデータが最も多くあるノードを判断するために、タスクが使用するデータを調査するための処理を行う必要がある。さらに、使用するデータが増加する程、タスクを割り当てるノードの算出には時間がかかる。このため、データを取得するためのノード間通信が多発し、性能が低下する。
【０００８】
本発明は、上記事情に鑑みなされたものであり、その目的は、ノード間でのデータ通信量を低減することのできる技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、一観点に係るタスク管理システムは、タスクを実行可能な複数のタスク処理ノードと、新規タスクを割り当てるタスク処理ノードを決定するタスク管理ノードとを有するタスク管理システムであって、複数のタスク処理ノードのそれぞれは、自身に割り当てられたタスクである割当タスクが使用するデータをキャッシュ可能なメモリを備え、タスク管理ノードは、割当タスクと、割当タスクが割り当てられ、且つ、割当タスクが使用するデータがキャッシュされているタスク処理ノードとの対応関係を含むタスク割当情報を記憶し、タスク管理ノードのプロセッサは、新規タスクと、割当タスクとの類似度を判定し、類似度に基づいて、タスク割当情報に含まれているタスク処理ノードの中から新規タスクを割り当てるタスク処理ノードを決定し、決定したタスク処理ノードに新規タスクを割り当てる。
【発明の効果】
【００１０】
本発明によれば、ノード間でのデータ通信量を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１実施形態に係る計算機システムの全体構成図である。
【図２】図２は、第１実施形態に係るタスク割当履歴情報の構成を示す図である。
【図３】図３は、第１実施形態に係るキャッシュ管理情報の構成を示す図である。
【図４】図４は、第１実施形態に係るタスク管理処理のフローチャートである。
【図５】図５は、第１実施形態に係るタスク実行処理のフローチャートである。
【図６】図６は、第１実施形態に係るタスク単位のキャッシュ内整理処理のフローチャートである。
【図７】図７は、第１実施形態に係る削除対象タスク決定処理のフローチャートである。
【図８】図８は、第１実施形態に係るキャッシュデータ単位のキャッシュ内整理処理のフローチャートである。
【図９】図９は、第２実施形態に係る計算機システムの全体構成図である。
【発明を実施するための形態】
【００１２】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
以下の説明では、実施形態に係る情報を、例えば、テーブルよるデータ構造で表現して説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくてもよく、「リスト」、「ＤＢ（データベース）」、「キュー」等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」「番号」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００１４】
また、以下の説明では「プログラム」（例えば、プログラムモジュール）を動作の主体として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主体とした説明としてもよく、コントローラを主体とした説明としてもよい。
【００１５】
また、プログラムを動作の主体として開示された処理は、ノード等の計算機（コンピュータ、情報処理装置）が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよい。各種プログラムはプログラム配布サーバや記憶メディア（例えば、不揮発性記録メディア）によって各ノードにインストールされてもよい。
【００１６】
まず、第１実施形態に係る計算機システムの概要について説明する。
【００１７】
第１実施形態に係る計算機システムは、類似するタスクを検索し、タスクの割り当てを行うタスク管理ノード１００（図１参照）と、タスク処理を実行するとともに、タスク処理で必要なデータを管理する複数のタスク処理ノード２００（図２参照）とを含む。
【００１８】
タスク管理ノードは、タスク処理要求を受け取って、タスク内容を解析し、タスクの履歴情報と類似検索を行い、タスク間の類似率等を条件にタスクを割り当てるタスク処理ノードを決定する処理を実行する。また、タスク処理ノードは、割り当てられたタスクを処理するとともに、タスクに使用するデータのキャッシュを管理する処理を実行する。
【００１９】
次に、第１実施形態に係る計算機システムについて詳細に説明する。
【００２０】
図１は、第１実施形態に係る計算機システムの全体構成図である。
【００２１】
タスク管理システムの一例としての計算機システム１０は、クライアント５０と、タスク管理ノード１００と、複数のタスク処理ノード２００とを備える。クライアント５０と、タスク管理ノード１００と、タスク処理ノード２００とは、ネットワーク３００を介して接続されている。ネットワーク３００は、例えば、有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、これらを組み合わせたものであってもよい。
【００２２】
クライアント５０は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）によって構成され、タスクの実行を要求するユーザにより利用される。クライアント５０は、例えば、ユーザからのタスク処理要求をタスク管理ノード１００に送信し、タスク管理ノード１００からタスク処理結果を受信し、例えば、ディスプレイ等に表示する。
【００２３】
タスク管理ノード１００は、例えば、サーバ等の計算機で構成され、プロセッサの一例としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、メモリ１０２と、ネットワークインターフェース１０３とを有する。
【００２４】
ネットワークインターフェース１０３は、例えば、有線ＬＡＮカードや無線ＬＡＮカードなどのインターフェースであり、ネットワーク３００を介して他の装置（例えば、クライアント５０、タスク処理ノード２００等）と通信する。
【００２５】
ＣＰＵ１０１は、メモリ１０２に格納されたプログラム（モジュール）を実行することにより、各種処理を実行する。
【００２６】
メモリ１０２は、例えば、ＲＡＭ（ＲＡＮＤＯＭ  ＡＣＣＥＳＳ  ＭＥＭＯＲＹ）であり、ＣＰＵ１０１で実行されるプログラムや、必要な情報を記憶する。
【００２７】
メモリ１０２は、プログラムの一例としてのタスク管理モジュール１１１と、タスク割当情報の一例としてのタスク割当履歴情報１１２とを格納する。
【００２８】
タスク管理モジュール１１１は、タスク割当モジュール１３１と、タスク解析モジュール１３２と、類似検索モジュール１３３とを含む。タスク割当モジュール１３１は、ＣＰＵ１０１に、タスクの受付およびタスクの割当に関する処理を実行させるプログラムモジュールである。タスク解析モジュール１３２は、ＣＰＵ１０１に、タスク内容の解析、タスクの数値化等の処理を実行させるプログラムモジュールである。類似検索モジュール１３３は、ＣＰＵ１０１に、数値化された新規タスクの情報と既に割り当てられてタスクの情報とを比較し、類似率を評価する処理を実行させるプログラムモジュールである。なお、これらモジュールによる処理の詳細については後述する。
【００２９】
タスク割当履歴情報１１２は、タスクの割当に関する履歴の情報である。なお、タス割当履歴情報１１２の詳細については、後述する。
【００３０】
タスク処理ノード２００は、例えば、サーバ等の計算機で構成され、プロセッサの一例としてのＣＰＵ２０１と、メモリ２０２と、記憶装置２０３と、ネットワークインターフェース２０４とを有する。
【００３１】
ネットワークインターフェース２０４は、例えば、有線ＬＡＮカードや無線ＬＡＮカードなどのインターフェースであり、ネットワーク３００を介して他の装置（例えば、クライアント５０、タスク管理ノード１００、他のタスク処理ノード２００等）と通信する。
【００３２】
ＣＰＵ２０１は、メモリ２０２に格納されたプログラム（モジュール）を実行することにより、各種処理を実行する。
【００３３】
メモリ２０２は、例えば、ＲＡＭであり、ＣＰＵ２０１で実行されるプログラムや、必要な情報を記憶する。
【００３４】
メモリ２０２は、タスク処理モジュール２１１、キャッシュ管理モジュール２１２、データ管理モジュール２１３、キャッシュ管理情報２１４を格納する。
【００３５】
タスク処理モジュール２１１は、ＣＰＵ２０１に、タスク管理ノード１００から受信したタスクを処理し、タスク管理ノード１００にタスクの結果および完了通知を行う処理を実行させるプログラムモジュールである。タスク処理モジュール２１１は、ＣＰＵ２０１に、タスク処理として、ＡＩによる自然言語処理を実行させるようにしてもよい。キャッシュ管理モジュール２１２は、ＣＰＵ２０１に、タスクを処理する際にキャッシュ２１５にキャッシュされたデータを管理させ、キャッシュ２１５の容量不足の際に整理を行わせる処理（キャッシュ内整理処理）を実行させるプログラムモジュールである。データ管理モジュール２１３は、ＣＰＵ２０１に、複数のタスク処理ノード２００の記憶装置２０３内のデータ２３１の配置状況を管理させるプログラムモジュールである。このデータ管理モジュール２１３をＣＰＵ２１０が実行することにより、記憶装置２０３内のデータ２３１を単体、もしくは複数のタスク処理ノード２００の記憶装置２０３により分散管理することができる。
【００３６】
キャッシュ管理情報２１４は、キャッシュ２１５におけるキャッシュ状況及びタスクが使用したデータの一覧に関する情報である。なお、キャッシュ管理情報２１４の詳細については、後述する。
【００３７】
また、メモリ２０２は、タスク処理に利用するために自身のタスク処理ノード２００又は他のタスク処理ノード２００の記憶装置２０３から取得したデータ（キャッシュデータ）２２１を格納するための領域であるキャッシュ２１５を有する。キャッシュ２１５の容量は、予め所定の容量に設定されている。キャッシュデータ２２１は、キャッシュ管理モジュール２１２によりキャッシュ２１５から削除されるまで、キャッシュ２１５に保持された状態が維持される。
【００３８】
記憶装置２０３は、例えば、ハードディスクやフラッシュメモリなどであり、ＣＰＵ２０１で実行されるプログラムや、ＣＰＵ２０１に利用されるデータを記憶する。本実施形態では、記憶装置２０３は、タスクの処理で使用されるデータ２３１を格納する。
【００３９】
次に、タスク割当履歴情報１１２について説明する。
【００４０】
図２は、第１実施形態に係るタスク割当履歴情報の構成を示す図である。
【００４１】
タスク割当履歴情報１１２は、タスクで使用するデータがタスク処理ノード２００においてキャッシュされている各タスクに対応するエントリを格納する。タスク割当履歴情報１１２のエントリは、タスク３０１、実行ノードＩＤ３０２、解析結果３０３、処理状況３０４、比較回数３０５、平均類似率３０６、採択数３０７、及び最終実行日時３０８のフィールドを含む。
【００４２】
タスク３０１には、タスク処理ノード２００に割り当てられたタスク（割当タスク）の識別子（タスクＩＤ）が格納される。なお、本実施形態では、タスク３０１には、タスク処理ノード２００のキャッシュ２１５にタスクで使用するデータがキャッシュされた状態が維持されているタスクのタスクＩＤが格納されている。実行ノードＩＤ３０２には、エントリに対応するタスクが割り当てられたノード（タスク処理ノード２００）の識別子（実行ノードＩＤ）が格納される。解析結果３０３には、エントリに対応するタスク（タスクの内容）をタスク解析モジュール１３３により解析した結果が格納される。例えば、自然言語処理系のタスクについては、解析結果３０３には、タスク内容の文章や単語を数値化（ベクトル化）した結果が格納される。処理状況３０４には、エントリに対応するタスクが処理中であるか、又は処理済みであるかの情報が格納される。比較回数３０５には、類似検索モジュール１３２が新たに要求されたタスク（新規タスク）と、エントリに対応するタスク（割当タスク）とを比較した回数が格納される。平均類似率３０６には、類似検索モジュール１３２が新規タスクと割当タスクとを比較した結果（類似率：類似度の一例）についての今までの平均（平均類似率）が格納される。採択数３０７には、タスク割当モジュール１３１がタスクを割り当てるタスク処理ノード２００を決定するためにこのエントリを要因とした、すなわち、このエントリに対応するタスク処理ノード２００を新規タスクの割当先と決定した回数（採択数）が格納される。最終実行日時３０８には、エントリに対応するタスクを実行した最終日時（例えば、ＹＹＭＭＤＤ  ｈｈ：ｍｍ：ｓｓ）が格納される。
【００４３】
次に、キャッシュ管理情報２１４について説明する。
【００４４】
図３は、第１実施形態に係るキャッシュ管理情報の構成を示す図である。
【００４５】
キャッシュ管理情報２１４は、タスク処理ノード２００に対応するエントリを保持する。キャッシュ管理情報２１４のエントリは、ノードＩＤ４０１、キャッシュ容量４０２、使用済みキャッシュ容量４０３、データ削除閾値４０４、キャッシュ整理方式４０５、キャッシュ済みタスク４０６、及びキャッシュデータ一覧４０７のフィールドを有する。
【００４６】
ノードＩＤ４０１には、タスク処理ノード２００を識別するためのユニークな識別子（ノードＩＤ）が格納される。なお、キャッシュ管理情報２１４が、自身が格納されたタスク処理ノード２００に関する情報のみを管理する場合には、ノードＩＤ４０１を備えなくてもよい。キャッシュ容量４０２には、エントリに対応するタスク処理ノード２００のキャッシュ２１５として使用可能なメモリ２０２の記憶容量が格納される。使用済みキャッシュ容量４０３には、エントリに対応するタスク処理ノード２００のキャッシュ２１５にキャッシュされているキャッシュデータ２２１の総容量が格納される。データ削除閾値４０４には、キャッシュ２１５におけるデータの削除をするか否かの判断に使用する容量に関する閾値が格納される。キャッシュ整理方式４０５には、キャッシュ２１５のキャッシュ容量が不足した際に、キャッシュデータを整理する方式を示す情報が格納される。キャッシュ済みタスク４０６には、エントリに対応するタスク処理ノード２００のキャッシュ２１５に使用するデータがキャッシュされているタスクの識別子が格納される。キャッシュ済みタスク４０６は、複数のタスクの識別子を格納することができる。キャッシュデータ一覧４０７には、キャッシュ済みタスク４０６のタスク識別子に対応するタスクが使用した又使用しているデータの内、キャッシュ２１５にキャッシュされているキャッシュデータ２２１の識別子の一覧が保持される。
【００４７】
次に、計算機システム１０における処理動作について説明する。
【００４８】
まず、タスク管理ノード１００によるタスク管理処理について説明する。
【００４９】
図４は、第１実施形態に係るタスク管理処理のフローチャートである。
【００５０】
タスク管理処理は、タスク管理ノード１００がクライアント５０からタスク実行要求を受信した場合に開始される。なお、本実施形態では、タスク実行要求の対象とするタスク（新規タスク）が自然言語処理のタスクである場合を例に説明する。なお、タスクの種類は自然言語処理のタスクに限らない。
【００５１】
タスク管理モジュール１１１（正確には、タスク管理モジュール１１１を実行するＣＰＵ１０１）は、クライアント５０から受信したタスク処理要求に含まれている新規タスクの解析をタスク解析モジュール１３２に実行させることにより、タスク（タスクの内容
を解析させる（ステップＳ１０１）。具体的には、タスク解析モジュール１３２は、タスクのワード（文章又は語）をベクトル情報に変換（数値化）する。ワードをベクトル情報に変換する方法としては、例えば、ｗｏｒｄ２ｖｅｃ等の公知の技術を用いることができる。
【００５２】
次いで、タスク管理モジュール１１１は、タスク割当履歴情報１１２の各エントリの処理状況３０４を参照することにより、現在タスクを処理していないタスク処理ノード２００（空きノード）があるか否かを判定する（ステップＳ１０２）。
【００５３】
この結果、空きノードがない場合（ステップＳ１０２：ＮＯ）には、タスク管理モジュール１１１は、タスク割当履歴情報１１２にエントリがある全タスクを対象に、類似検索モジュール１３３により新規タスクとの類似率を算出させ（ステップＳ１０４）、処理をステップＳ１０６に進める。ここで、類似検索モジュール１３３は、算出された新規タスクのベクトル情報と、タスク割当履歴情報１１２の全タスクのエントリの解析結果３０３の情報とに基づいて、新規タスクと割当タスクとの類似率を算出する。
【００５４】
一方、空きノードがある場合（ステップＳ１０２：ＹＥＳ）には、タスク管理モジュール１１１は、全ての空きノードを対象に、類似検索モジュール１３３により新規タスクとの類似率を算出させ（ステップＳ１０５）、処理をステップＳ１０６に進める。
【００５５】
ステップＳ１０６では、タスク管理モジュール１１１は、類似検索モジュール１３３によって算出された類似率に基づいて、最も類似率の高いタスクが存在するタスク処理ノード２００を新規タスクの割当先のノード（割当先ノード）として選択する。
【００５６】
ここで、新規タスクとの類似率が最も高いタスクは、新規タスクで利用されるデータと同じデータを使用する可能性が高く、そのデータがキャッシュされている可能性も高い。したがって、最も類似率が高いタスクが存在するタスク処理ノード２００を新規タスクの割当先ノードとすると、新規タスクを実行する際に、キャッシュされているデータを利用できる可能性（すなわち、キャッシュヒット率）が高くなる。新規タスクと最も類似度が高いタスクとが同じデータを使用する可能性は、タスクの種類によって異なるが、例えば、タスクが自然言語処理に関するタスクであれば、同じデータを使用する可能性はより高くなる傾向にあることが言える。
【００５７】
次いで、タスク割当モジュール１３１は、割当先ノードとして選択されたタスク処理ノード２００にタスク処理を依頼する、すなわち、新規タスクを送付する（ステップＳ１０７）。これにより、割当先ノードのタスク処理ノード２００では、タスクの処理が実行され、タスク処理が終了した場合には、タスクの処理結果とタスク完了通知とがタスク管理ノード１００に送信されることとなる。
【００５８】
次いで、タスク管理モジュール１１１は、タスク割当履歴情報１１２を更新する（ステップＳ１０８）具体的には、タスク管理モジュール１１１は、新規タスクに対応するエントリをタスク割当履歴情報１１２に追加し、追加したエントリにおけるタスク３０１に新規タスクの識別子を設定し、実行ノード３０２に割当先ノードの識別子を設定し、解析結果３０３にステップＳ１０１で得られたベクトル情報を設定し、処理状況３０４にタスクが実行中であることを示す処理中を設定し、比較回数３０５に割当タスクと比較した数（類似率を算出した数）を格納し、平均類似率３０６に比較した割当タスクとの平均の類似率を格納し、採択数３０７に０を格納する。また、タスク管理モジュール１１１は、比較を行った割当タスクに対応するエントリの比較回数３０５の比較回数に１を加算し、平均類似率３０６に、比較回数と、更新前の平均類似率と、算出した類似率とに基づいて算出した最新の平均類似率を格納する。また、タスク管理モジュール１１１は、割当先ノードとして選択されたタスク処理ノード２００に対応するエントリの採択数３０７に１を加算する。
【００５９】
その後、タスク管理モジュール１１１は、タスク処理ノード２００からタスク完了通知とタスク処理結果とを受信し（Ｓ１０９）、タスク完了通知がされたタスクに対応するタスク割当履歴情報１１２のエントリの処理状況３０４を処理済みに更新し（Ｓ１１０）、タスク処理結果をタスク処理要求の要求元のクライアント５０に通知する（Ｓ１１１）。
【００６０】
次に、タスク処理ノード２００によるタスク実行処理について説明する。
【００６１】
図５は、第１実施形態に係るタスク実行処理のフローチャートである。
【００６２】
タスク実行処理は、タスク処理ノード２００がタスク管理ノード１００から新規タスクを受領した場合に開始される。
【００６３】
タスク実行処理が開始されると、タスク処理ノード２００のタスク処理モジュール２１１は、タスクを解析してタスク処理に必要なデータ（取得対象データ）を調査する（Ｓ２０１）。
【００６４】
次いで、タスク処理モジュール２１１は、取得対象データのそれぞれを処理対象として、ループＡの処理（ステップＳ２０３〜Ｓ２０８）を繰り返し実行する。
【００６５】
ループＡでは、タスク処理モジュール２１１は、処理対象の取得対象データ（処理対象データ）について、キャッシュ２１５に存在するか否かをキャッシュ管理モジュール２１２に問い合わせる（ステップＳ２０３）。この結果、キャッシュ２１５に存在する場合（ステップＳ２０３：ＹＥＳ）には、タスク処理モジュール２１１は、キャッシュ管理モジュール２１２を介して、キャッシュ２１５から処理対象データに対応するキャッシュデータ２２１を取得する（ステップＳ２０５）。
【００６６】
一方、キャッシュ２１５に存在しない場合（ステップＳ２０３：ＮＯ）には、タスク処理モジュール２１１は、データ管理モジュール２１３を介して、全てのタスク処理ノード２００の記憶装置２０３のいずれかから処理対象データに対応するデータ２３１を取得する（ステップＳ２０４）。
【００６７】
次いで、タスク処理モジュール２１１は、キャッシュ管理モジュール２１２に、キャッシュ２１５にデータ２３１を格納できる空き容量があるか否かを問い合わせる（ステップＳ２０６）。
【００６８】
この結果、キャッシュ２１５にデータ２３１を格納できる空き容量がない場合（ステップＳ２０６：ＮＯ）には、タスク処理モジュール２１１は、キャッシュ管理モジュール２１２にキャッシュ容量不足を通知して、キャッシュ２１５内を整理して空き容量を増やすキャッシュ内整理処理を実行させる（ステップＳ２０７）。キャッシュ内整理処理の方法は、キャッシュ管理情報２１４のキャッシュ整理方式４０５の情報によって異なる。キャッシュ内整理処理については、図６、図８を用いて後述する。
【００６９】
空き容量がある場合（ステップＳ２０６：ＹＥＳ）又はキャッシュ内整理処理（ステップＳ２０７）を実行した後には、タスク処理モジュール２１１は、キャッシュ２１５へデータ２３１を書込み、キャッシュ管理情報２１４を更新する（Ｓ２０８）。具体的には、タスク処理モジュール２１１は、キャッシュ管理情報２１４のタスク処理ノード２００に対応するエントリのキャッシュ済みタスク４０６に新規タスクの識別子を格納するとともに、キャッシュデータ一覧４０７に取得したデータの識別子を追加し、使用済みキャッシュ容量４０３をその時点の容量に変更する。
【００７０】
取得対象データのすべてを処理対象として、ループＡの処理を実行した場合には、タスク処理モジュール２１１は、ループＡを抜けて、タスクの処理を実行する（ステップＳ２０９）。
【００７１】
次いで、タスク処理モジュール２１１は、タスク処理の実行を終えた場合には、タスクの実行結果を、タスク管理ノード１００へ通知し（ステップＳ２１０）、処理を終了する。
【００７２】
次に、タスク処理ノード２００におけるタスク単位のキャッシュ内整理処理について説明する。タスク単位のキャッシュ内整理処理は、図５のステップＳ２０７のキャッシュ内整理処理の一例である。
【００７３】
図６は、第１実施形態に係るタスク単位のキャッシュ内整理処理のフローチャートである。
【００７４】
タスク単位のキャッシュ内整理処理は、キャッシュ管理モジュール２１２が、タスク処理モジュール２１１からキャッシュ容量不足の通知を受領した場合に開始される。
【００７５】
まず、キャッシュ管理モジュール２１２は、自身のタスク処理ノード２００の識別子をタスク管理ノード１００に通知し、削除対象タスクの順位（削除の優先順位）をタスク管理ノード１００に問い合わせる（ステップＳ３０１）。これにより、タスク管理ノード１００は、削除対象タスク決定処理（図７参照）を実行することとなり、この処理の結果として、キャッシュ管理モジュール２１２は、削除対象タスクの順位を取得することとなる。
【００７６】
キャッシュ管理モジュール２１２は、タスク管理ノード１００から削除対象タスクの順位を受領すると、その順位の上位から順に、削除対象タスクに対応するキャッシュ管理情報２１４のキャッシュデータ一覧４０７から削除対象とするキャッシュデータ（削除対象キャッシュデータ）の一覧を取得する（Ｓ３０２）。
【００７７】
次いで、キャッシュ管理モジュール２１２は、順位に従って１つの削除対象タスクに対応する削除対象キャッシュデータのそれぞれを処理対象としてループＢの処理（ステップＳ３０４，Ｓ３０５）を実行する。
【００７８】
ループＢでは、キャッシュ管理モジュール２１２は、キャッシュ管理情報２１４のキャッシュデータ一覧４０７の情報を参照して、処理対象の削除対象キャッシュデータ（処理対象キャッシュデータ）を、他のタスクが使用しているか否かを判定する（ステップＳ３０４）。
【００７９】
この結果、他のタスクが使用していると判定した場合（ステップＳ３０４：ＹＥＳ）には、キャッシュ２１５から処理対象キャッシュデータを削除すると他のタスクに影響があるので、キャッシュ管理モジュール２１２は、この処理対象キャッシュデータを削除せずに、次に削除対象キャッシュデータを処理対象として、ループＢの処理を実行する。
【００８０】
一方、他のタスクが使用していないと判定した場合（ステップＳ３０４：ＮＯ）には、処理対象キャッシュデータを削除しても他のタスクの実行に影響がないので、キャッシュ管理モジュール２１２は、キャッシュ２１５から処理対象キャッシュデータを削除し（ステップＳ３０５）、次の削除対象キャッシュデータを処理対象として、ループＢの処理を実行する。
【００８１】
そして、削除対象キャッシュデータのすべてを処理対象として、ループＢの処理を実行した場合には、キャッシュ管理モジュール２１２は、ループＢを抜けて、削除対象タスクに対応するキャッシュタスク４０６及びキャッシュデータ一覧４０７をキャッシュ管理情報２１４のエントリから削除する（Ｓ３０６）。
【００８２】
次いで、キャッシュ管理モジュール２１２は、キャッシュ２１５の容量不足が解消したか否かを判定する（ステップＳ３０７）。この結果、キャッシュ２１５の容量不足が解消されていない場合（ステップＳ３０７：ＮＯ）には、キャッシュ管理モジュール２１２は、次の順位の削除対象タスクについてループＢの処理を実行する。
【００８３】
一方、キャッシュ２１５の容量不足を解消した場合（ステップＳ３０７：ＹＥＳ）には、キャッシュ管理モジュール２１２は、キャッシュデータを削除したタスクをタスク管理ノード１００に通知し（ステップＳ３０８）、処理を終了する。
【００８４】
以上説明したように、タスク単位のキャッシュ内整理処理によると、キャッシュ２１５の容量を適切に確保することができる。また、他のタスクで使用されているデータについては、キャッシュ２１５から削除されないようにすることができる。
【００８５】
次に、タスク管理ノード１００による削除対象タスク決定処理について説明する。
【００８６】
図７は、第１実施形態に係る削除対象タスク決定処理のフローチャートである。
【００８７】
削除対象タスク決定処理は、タスク処理ノード２００から、タスク処理ノード２００の識別子と、削除対象タスクの順位の問い合わせを受信した場合に実行が開始される。
【００８８】
タスク管理モジュール１１１は、削除対象タスクの順位を決定する（ステップＳ４０１）。ここで、削除対象タスクの順位を決定する方法としては、例えば、タスク割当履歴情報１１２の比較回数３０５の比較回数に基づいて決定する方法（例えば、比較回数が少ないものを上位としたり、或いは、比較回数が多いものを上位にしたりする方法）や、タスク割当履歴情報１１２の最終実行日時３０８の日時に基づいて決定する方法（最新のものを上位としたり、最古のものを上位としたりする方法）や、実行済みのタスクであってタスク割当履歴情報１１２の平均類似率３０６の平均類似率が小さいものを上位とする方法等のいずれか少なくとも一つとしてもよい。
【００８９】
次いで、タスク管理モジュール１１１は、決定した削除対象タスクの順位をタスク処理ノード２００に通知する（ステップＳ４０２）。
【００９０】
次いで、タスク管理モジュール１１１は、タスク処理ノード２００からキャッシュデータを削除したタスクの通知を受けた場合には、タスク割当履歴情報１１２から削除したタスクのエントリを削除して（ステップＳ４０３）、削除対象タスク決定処理を終了する。
【００９１】
この削除対象タスク決定処理によると、削除対象タスクの順位を適切に決定することができ、キャッシュ２１５からキャッシュデータが削除されたタスクについてのエントリをタスク割当履歴情報１１２から削除することができる。したがって、タスク割当履歴情報１１２には、タスク処理ノード２００のキャッシュ２１５に使用するデータがキャッシュされているタスクについてのエントリのみが存在することとなる。
【００９２】
次に、タスク処理ノード２００におけるキャッシュデータ単位のキャッシュ内整理処理について説明する。キャッシュデータ単位のキャッシュ内整理処理は、図５のステップＳ２０７のキャッシュ内整理処理の一例である。なお、図６に示すキャッシュ内整理処理とのいずれかを実行してもよいし、両方を実行するようにしてもよい。
【００９３】
図８は、第１実施形態に係るキャッシュデータ単位のキャッシュ内整理処理のフローチャートである。
【００９４】
まず、キャッシュ管理モジュール２１２は、削除対象とするキャッシュデータ（削除対象キャッシュデータ）を決定する（ステップＳ５０１）。削除対象キャッシュデータは、例えば、複数のタスクで重複して利用されていないデータ、利用するタスクの数が少ないデータ、データサイズが大きいデータ、データサイズが小さいデータのいずれとしてもよく、任意の方法で決定することができる。
【００９５】
次いで、キャッシュ管理モジュール２１２は、キャッシュ管理情報２１４のキャッシュデータ一覧４０７から削除対象キャッシュデータを削除し（ステップＳ５０２）、キャッシュ２１５に存在する削除対象キャッシュデータを削除する（ステップＳ５０３）。
【００９６】
次いで、キャッシュ管理モジュール２１２は、キャッシュ２１５に必要な空き容量を確保できたか否かを確認する（ステップＳ５０４）。この結果、必要な空き容量を確保できていない場合（ステップＳ５０４：ＮＯ）には、キャッシュ管理モジュール２１２は、処理をステップＳ５０１に進め、次の削除対象キャッシュデータを削除する処理を行う。一方、必要な空き容量を確保できた場合（ステップＳ５０４：ＹＥＳ）には、キャッシュ管理モジュール２１２は、キャッシュデータ単位のキャッシュ内整理処理を終了する。
【００９７】
上記したキャッシュデータ単位のキャッシュ内整理処理によると、タスク管理ノード１００に問い合わせることなく、キャッシュ２１５の空き容量を適切に確保することができる。
【００９８】
以上説明したように、第１実施形態に係る計算機システム１０によれば、新規タスクと類似度の高いタスクが割り当てられていたタスク処理ノード２００を新規タスクの割当先とするようにしているので、新規タスクを実行する際に必要なデータがこのタスク処理ノード２００のキャッシュ２１５に存在する可能性が高く、このタスク処理ノード２００の記憶装置２０３からメモリ２０２にデータを読み出したり、或いは、別のタスク処理ノード２００の記憶装置２０３からノード間通信によりデータを取得したりすることが低減され、ノード間通信の通信量を低減することができる。また、ノード間通信の通信量を低減することができるので、データを受信する時間が低減されてタスク処理の実行時間を短縮することができ、タスク処理の結果を得るまでのユーザの待機時間を短縮することができる。
【００９９】
次に、本発明の第２実施形態に係る計算機システムについて説明する。なお、以下においては、第１実施形態に係る計算機システムとの相違点を主に説明し、共通点については、説明を省略または簡略する。
【０１００】
図９は、第２実施形態に係る計算機システムの全体構成図である。
【０１０１】
第２実施形態に係る計算機システム１０Ａは、第１実施形態に係る計算機システム１０におけるタスク処理ノード２００の記憶装置２０３及びデータ管理モジュール２１３に相当する構成を含む１以上のデータ管理ノード５００をタスク処理ノード４００と別体とし、このデータ管理ノード５００をネットワーク３００に接続するようにしたものである。なお、図９に示すタスク処理ノード４００は、第１実施形態に係るタスク処理ノード２００から記憶装置２０３及びデータ管理モジュール２１３を除いた構成となっているが、本発明はこれに限られず、タスク処理ノード２００を同じ構成としてもよい。
【０１０２】
データ管理ノード５００は、ＣＰＵ５０１と、メモリ５０２と、記憶装置２０３と、ネットワークインターフェース５０３とを備える。
【０１０３】
ネットワークインターフェース５０３は、例えば、有線ＬＡＮカードや無線ＬＡＮカードなどのインターフェースであり、ネットワーク３００を介して他の装置（例えば、クライアント５０、タスク管理ノード１００、タスク処理ノード４００、データ管理ノード５００等）と通信する。
【０１０４】
ＣＰＵ５０１は、メモリ５０２に格納されたプログラム（モジュール）を実行することにより、各種処理を実行する。
【０１０５】
メモリ５０２は、例えば、ＲＡＭであり、ＣＰＵ５０１で実行されるプログラムや、必要な情報を記憶する。
【０１０６】
メモリ５０２は、データ管理モジュール２１３を格納する。
【０１０７】
データ管理モジュール２１３は、ＣＰＵ５０１に、複数のデータ管理ノード５００で管理された記憶装置２０３内のデータ２３１の配置状況を管理させるプログラムモジュールである。
【０１０８】
第２実施形態に係る計算機システム１０Ａは、計算機システム１０との構成の違いにより各処理を実行するノードが異なる場合があるが、図４〜図８と同様な処理を実行することができる。
【０１０９】
上記した第２実施形態によると、第１実施形態と同様な効果が得られる。また、第２実施形態によると、タスク処理及びキャッシュ管理を行うノード（タスク処理ノード４００）と、データの管理を行うノード（データ管理ノード５００）とを分離して備えるようにしているので、例えば、タスク処理ノード４００のみを拡張したり、データ管理ノード５００のみを拡張したりすることができるので、低コストで必要な性能を実現することができる。
【０１１０】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１１１】
例えば、上記実施形態に係るタスク管理処理では、タスクを割り当てるノードを決定する際に、図４のステップＳ１０２及びＳ１０５に示すように、空きノードがある場合には、空きノードを対象にタスクを割り当てるノードを決定するようにしていたが、本発明はこれに限られず、空きノードがあるか否かに関わらず、全てのノードを対象にタスクを割り当てるノードを決定するようにしてもよい。
【０１１２】
また、上記実施形態では、類似度が最も高いタスクのデータをキャッシュしているノード（タスク処理ノード）をタスクの割当先のノードに決定していたが、本発明はこれに限られず、例えば、割り当てられているタスクの数が所定範囲内であるノードのなかで、類似度が最も高いタスクのデータをキャッシュしているノードをタスクの割当先のノードに決定してもよく、類似度が所定値以上であるタスクのデータをキャッシュしているノードをタスクの割当先のノードに決定してもよく、要は、類似度に基づいてタスクを割り当てるノードを決定すればよい。
【符号の説明】
【０１１３】
１０，１０Ａ…計算機システム、１００…タスク管理ノード、１０１…ＣＰＵ、１０２…メモリ、１１２…タスク割当履歴情報、２００，４００…タスク処理ノード、２０１…ＣＰＵ、２０２…メモリ、２０３…記憶装置、２１４…キャッシュ管理情報、２１５…キャッシュ、３００…ネットワーク、５００…データ管理ノード
【図１】
2019087039.tif 000003
【図２】
2019087039.tif 000004
【図３】
2019087039.tif 000005
【図４】
2019087039.tif 000006
【図５】
2019087039.tif 000007
【図６】
2019087039.tif 000008
【図７】
2019087039.tif 000009
【図８】
2019087039.tif 000010
【図９】
2019087039.tif 000011