(57)【要約】【課題】プロセスが有する複数の特徴を用いたプロセススケジューリングを可能とする。【解決手段】本開示のプロセススケジューリング装置１０は、プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成するパターン生成部１１と、複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定する評価部１２と、決定された評価値に基づいて、複数のプロセスに対する分類パターンを決定する決定部１３と、を備える。【選択図】図１
2019106120.tif 000002
【特許請求の範囲】
【請求項１】
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成するパターン生成部と、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定する評価部と、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定する決定部と、を備えるプロセススケジューリング装置。
【請求項２】
前記パターン生成部は、所定の条件を満たすまで、前記決定された評価値に基づいて新たな複数の前記分類パターンを繰り返し生成する、請求項１に記載のプロセススケジューリング装置。
【請求項３】
前記分類パターンに含まれるプロセスタイプの各々に重み付けを行う重み変数の集合である重み変数セットを複数生成する変数生成部をさらに備え、
前記評価部は、前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記評価値を決定し、
前記決定部は、前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンおよび重み変数セットを決定する、請求項１または２に記載のプロセススケジューリング装置。
【請求項４】
前記変数生成部は、所定の条件を満たすまで、前記決定された評価値に基づいて新たな複数の前記重み変数セットを繰り返し生成する、請求項３に記載のプロセススケジューリング装置。
【請求項５】
前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記分類パターンに含まれるプロセスタイプ毎の数と前記重み変数セットとを用いて、プロセスタイプ毎の優先度を算出する算出部をさらに備え、
前記評価部は、前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記算出されたプロセスタイプ毎の優先度に基づいて、前記複数のプロセスを実行し、前記評価値を決定する、請求項３または４のいずれか１項に記載のプロセススケジューリング装置。
【請求項６】
前記複数のプロセスを表すプロセス群を複数生成するプロセス生成部をさらに備え、
前記パターン生成部は、前記複数のプロセス群の各々に対して、前記複数の分類パターンを適用し、
前記変数生成部は、前記プロセス群と前記分類パターンとの組み合わせ毎に、前記複数の重み変数セットを生成し、
前記評価部は、前記プロセス群と前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記評価値を決定し、各プロセス群の前記評価値の総和を、前記分類パターンと前記重み変数セットとの組み合わせに対する評価値と決定し、
前記決定部は、前記決定された評価値に基づいて、前記複数のプロセス群に対する分類パターンおよび重み変数セットを決定する、請求項３〜５のいずれか１項に記載のプロセススケジューリング装置。
【請求項７】
前記性能項目は、スループット、消費電力および割り当てられたリソースの平等性の少なくとも１つを含む、請求項１〜６のいずれか１項に記載のプロセススケジューリング装置。
【請求項８】
前記プロセスが有する少なくとも１つの特徴は、フォアグランドプロセスまたはバックグラウンドプロセスであること、プロセス実行順、プロセス発生順、過去に割り当てられたプロセスのＣＰＵ時間、プロセス名、ユーザ情報およびプロセスに入力された入力情報のうち、少なくとも１つを含む、請求項１〜７のいずれか１項に記載のプロセススケジューリング装置。
【請求項９】
プロセスが有する少なくとも１つの特徴を用いて、複数の第１のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成し、前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定し、前記決定された評価値に基づいて決定された分類パターンを用いて、アプリケーションプログラムが生成する複数の第２のプロセスを実行するプロセス実行部を備える、プロセス実行装置。
【請求項１０】
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成することと、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定することと、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定することと、を含むプロセススケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プロセススケジューリング装置、プロセス実行装置およびプロセススケジューリング方法に関する。
【背景技術】
【０００２】
典型的なコンピュータシステムでは、タスクを実行するアプリケーションが１または複数のプロセスを生成し、ＣＰＵ（Central Processing Unit）が、生成されたプロセスを実行する。プロセスを実行するために、コンピュータシステムのリソースを必要とする。しかし、一般的に、割り当てられるリソースは限られているため、同時に全てのプロセスを実行することは出来ない。
【０００３】
そのため、典型的なコンピュータシステムにおいては、複数のプロセスが共有のリソースを交互に利用することにより、限られたリソースを用いて、より多くのプロセスを実行するマルチタスキングを実現している。これにより、コンピュータシステムにおいて、複数のプロセスを同時に処理するようにみせている。
【０００４】
ここで、より多くのプロセスを処理するためには、各プロセスをどの順番で実行するかを決定するプロセススケジューラが必要になる。プロセススケジューラは、プロセス実行時の性能項目値が高くなるように、複数のプロセスの実行順序を決定する。そのため、プロセススケジューラをどのように設計するかにより、プロセス実行時の性能項目値が左右される。そこで、実行されるプロセスの最適な優先度を決定する技術が検討されている（例えば、特許文献１）。
【０００５】
特許文献１には、システム内時間を入力とし、遅延コストまたは優先順位を出力とする遅延コスト関数を定義し、多層ニューラルネットワークによって実施されることにより、プロセス実行優先度を決定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−１７５６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１においては、遅延コスト関数は、システム内時間を入力とする関数となっている。換言すると、特許文献１においては、システム内時間であるプロセスが有する１つの特徴に基づいてプロセス実行優先度を決定している。しかしながら、プロセスが有する特徴は１つでは無いことから、特許文献１に開示された技術では、最適なプロセス実行優先度となっているとは限らない。また、特許文献１には、遅延コスト関数を、複数の変数の関数とした場合についても言及しているが、具体的な内容が開示されていない。したがって、プロセスが有する複数の特徴を用いたプロセススケジューラを提供することが望まれる。
【０００８】
本開示の目的は、このような問題を解決するためになされたものであり、プロセスが有する複数の特徴を用いたプロセススケジューリングを可能とする、プロセススケジューリング装置、プロセス実行装置およびプロセススケジューリング方法を提供することである。
【課題を解決するための手段】
【０００９】
第１の態様にかかるプロセススケジューリング装置は、
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成するパターン生成部と、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定する評価部と、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定する決定部と、を備える。
【００１０】
第２の態様にかかるプロセス実行装置は、
プロセスが有する少なくとも１つの特徴を用いて、複数の第１のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成し、前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定し、前記決定された評価値に基づいて決定された分類パターンを用いて、アプリケーションプログラムが生成する複数の第２のプロセスを実行するプロセス実行部を備える。
【００１１】
第３の態様にかかるプロセススケジューリング方法は、
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成することと、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定することと、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定することと、を含む。
【発明の効果】
【００１２】
上述した態様によれば、プロセスが有する複数の特徴を用いたプロセススケジューリングが可能となる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１にかかるプロセススケジューリング装置の構成例を示すブロック図である。
【図２】実施の形態２にかかるプロセス実行システムの構成例を示すブロック図である。
【図３】学習ケースを説明するための図である。
【図４】モデリングおよびモデリングパターンを説明するための図である。
【図５】実施の形態２にかかるプロセススケジューリング装置の全体動作を説明するフローチャートである。
【図６】最適重み変数セットの決定動作について説明するフローチャートである。
【図７】最適モデリングパターンおよび最適重み変数セットの決定動作について説明するフローチャートである。
【図８】実施の形態２にかかるプロセス実行装置の動作例を説明するフローチャートである。
【図９】実施の形態２の変形例にかかるプロセススケジューリング装置２０の構成例を示すブロック図である。
【図１０】実施の形態２の変形例にかかるプロセス実行装置の構成例を示すブロック図である。
【図１１】他の実施の形態にかかるプロセススケジューリング装置およびプロセス実行装置の構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しつつ、本開示の実施の形態について説明する。なお、実施の形態において、同一の要素には、同一の符号を付し、重複する説明は省略される。
（実施の形態１）
まず、図１を用いて、実施の形態１にかかるプロセススケジューリング装置１０について説明する。図１は、実施の形態１にかかるプロセススケジューリング装置の構成例を示すブロック図である。
【００１５】
プロセススケジューリング装置１０は、例えば、サーバ、パーソナルコンピュータ等の情報処理装置である。プロセススケジューリング装置１０は、複数のプロセスの実行時の優先度を決定する情報処理装置である。プロセススケジューリング装置１０は、パターン生成部１１と、評価部１２と、決定部１３とを備える。
【００１６】
パターン生成部１１は、プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成する。換言すると、パターン生成部１１は、分類パターンを生成する際に用いる特徴の全てが重複する分類パターンを生成しないように複数の分類パターンを生成する。
【００１７】
プロセスが有する特徴は、フォアグランドプロセスまたはバックグラウンドプロセスであること、プロセス実行順、プロセス発生順であってもよい。もしくは、プロセスが有する特徴は、過去に割り当てられたプロセスのＣＰＵ時間、プロセス名、ユーザ情報およびプロセスに入力された入力情報であってもよい。
【００１８】
評価部１２は、パターン生成部１１が生成した複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定する。評価部１２は、パターン生成部１１が生成した複数の分類パターンに含まれるプロセスタイプを実行することによって、性能項目に対する評価値を決定する。
【００１９】
性能項目は、スループット、消費電力、割り当てられたリソースの平等性であってもよい。もしくは、性能項目は、上記のうちの少なくとも１つを含む組み合わせであってもよい。
【００２０】
性能項目がスループット、消費電力、リソース割り当て率の少なくとも１つを含む性能項目である場合、評価部１２は、各性能項目の評価値の総和を評価値と決定してもよい。
【００２１】
決定部１３は、評価部１２によって決定された評価値に基づいて、複数のプロセスに対する分類パターンを決定する。
【００２２】
以上説明した様に、パターン生成部１１が、プロセスが有する複数の特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、複数生成する。評価部１２は、パターン生成部１１が生成した複数の分類パターンの各々に対して、性能項目に対する評価値を決定し、決定部１３は、決定された評価値に基づいて、分類パターンを決定する。プロセスを実行する場合、決定された分類パターンを用いてプロセスを実行することにより最適なプロセススケジューリングを行うことが可能となる。したがって、実施の形態１にかかるプロセススケジューリング装置１０によれば、プロセスが有する複数の特徴を用いたプロセススケジューリングが可能となる。
【００２３】
（実施の形態２）
続いて、実施の形態２について説明する。実施の形態２は、実施の形態１を詳細にした実施の形態である。具体的には、実施の形態１においては、複数の分類パターンに対する評価値を決定して、決定された評価値に基づいて分類パターンを決定した。本実施の形態においては、複数のプロセスを表すプロセス群を複数生成する。さらに、複数の分類パターンにより、プロセスをプロセスタイプに分類し、分類されたプロセスタイプの各々に重み付けを行う重み変数セットを導入する。またさらに、最適な分類パターンと、最適な重み変数セットとを、機械学習によって決定する。本実施の形態の詳細を以下に説明する。
【００２４】
＜プロセス実行システムの構成例＞
まず、図２を用いて、実施の形態２にかかるプロセス実行システム１００の構成例について説明する。図２は、実施の形態２にかかるプロセス実行システムの構成例を示すブロック図である。
【００２５】
プロセス実行システム１００は、プロセスを実行する装置と、プロセスを実行する装置において生成されたプロセスをスケジューリングする装置と、を含む情報処理システムである。プロセス実行システム１００は、プロセススケジューリング装置２０と、プロセス実行装置３０とを備える。
【００２６】
プロセススケジューリング装置２０は、実施の形態１にかかるプロセススケジューリング装置１０に対応する情報処理装置である。プロセススケジューリング装置２０は、プロセス実行装置３０において生成されたプロセスをスケジューリングする情報処理装置である。なお、説明を行う上で便宜的に、プロセス実行装置３０において生成されたプロセスを「実プロセス」と称して記載をすることがある。
【００２７】
プロセス実行装置３０は、プロセス実行装置３０にインストールされているアプリケーションプログラムが生成する実プロセスを実行する情報処理装置である。プロセス実行装置３０は、例えば、サーバ、パーソナルコンピュータ等の情報処理装置であってもよい。
【００２８】
＜プロセススケジューリング装置の構成例＞
続いて、プロセススケジューリング装置２０の構成例について説明する。図２に示す様に、プロセススケジューリング装置２０は、プロセス生成部２１、パターン生成部２２、変数生成部２３、記憶部２４、算出部２５、評価部２６、決定部２７および送信部２８を備える。
【００２９】
プロセス生成部２１は、プロセス実行装置３０において生成される実プロセスの実行順序を決定するための複数の評価用プロセスを生成する。つまり、プロセス生成部２１は、プロセス実行装置３０において生成されると想定される複数の仮想プロセスを生成する。
【００３０】
プロセス生成部２１は、プロセス実行装置３０において生成される実プロセス数に応じて、評価用のプロセスを生成してもよい。例えば、プロセス実行装置３０においてインストールされているアプリケーションプログラムが１万プロセスを生成すると予め分かっている場合、プロセス生成部２１は、１万プロセスを生成してもよい。もしくは、プロセス生成部２１は、プロセス実行システム１００の管理者または運用者が、任意に決めた数の評価用プロセスを生成してもよい。
【００３１】
プロセス生成部２１は、生成した複数の評価用プロセスのうち、ランダムに２つ以上の評価用プロセスを抽出して、評価用のプロセスの集合を表す評価用プロセス群を複数生成する。プロセス生成部２１は、プロセス実行装置３０において、同時に実行される可能性がある評価用プロセスの集合である評価用プロセス群を複数生成する。つまり、プロセススケジューリング装置２０は、プロセス実行装置３０において生成されると想定される複数の仮想プロセスのうち、同時に実行されると想定される仮想プロセスの集合を複数生成して評価を行う。なお、以降の説明では、プロセス生成部２１が生成する評価用プロセス群を「学習ケース」と称して記載することがある。また、説明を行う上で便宜的に、プロセス生成部２１は、複数の学習ケースａ１，ａ２，．．．，ａｍ（ｍ：１以上の整数）を生成したと仮定して説明を行う。
【００３２】
プロセス生成部２１は、生成した学習ケースａ１，ａ２，．．．，ａｍを、記憶部２４の学習ケース保存領域２４１に記憶する。
【００３３】
ここで、図３を用いて、学習ケースの一例について説明する。図３は、学習ケースを説明するための図である。図３に示す様に、例えば、プロセス生成部２１がプロセス１〜５の評価用プロセスを生成したとする。プロセス生成部２１は、生成したプロセス１〜５のうち、２つ以上の評価用プロセスを抽出して学習ケースを生成する。
【００３４】
図３に示す一例では、プロセス１とプロセス２とを抽出して生成した学習ケースをａ１とし、プロセス１とプロセス３とを抽出して生成した学習ケースをａ２としたことを示している。また、学習ケースは、２つのプロセスのみに限られないため、図３の学習ケースａ５のように３つのプロセスによって生成された学習ケースが存在してもよい。学習ケースは、多ければ多いほど最適な評価結果を導けるため、プロセス数が４つにより生成された学習ケースが存在してもよいし、プロセス数が５つにより生成された学習ケースが存在してもよい。
【００３５】
図２に戻り、パターン生成部２２について説明する。パターン生成部２２は、実施の形態１にかかるパターン生成部１１に対応する。パターン生成部２２は、プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成する。換言すると、パターン生成部１１は、分類パターンを生成する際に用いる特徴の全てが重複する分類パターンを生成しないように複数の分類パターンを生成する。
【００３６】
なお、以降の説明では、複数のプロセスを複数のプロセスタイプに分類することを「モデリング」と称して記載することがある。また、パターン生成部２２が生成した複数の分類パターンを「モデリングパターン」と称して記載することがある。また、説明を行う上で便宜的に、パターン生成部２２は、複数のモデリングパターンｂ１，ｂ２，．．．，ｂｎ（ｎ：１以上の整数）を生成したと仮定して説明を行う。なお、ｍとｎは、同じ整数であってもよいし、異なる整数であってもよい。
【００３７】
パターン生成部２２は、生成したモデリングパターンｂ１，ｂ２，．．．，ｂｎを、記憶部２４のモデリングパターン保存領域２４２に記憶する。
【００３８】
ここで、図４を用いて、モデリングおよびモデリングパターンについて説明する。図４は、モデリングおよびモデリングパターンを説明するための図である。まず、図４の上図を用いてモデリングについて説明する。図４の上図には、プロセス１〜３を含む、ある学習ケースが示されている。プロセス１〜３は２つの特徴を有しており、１つ目の特徴は、フォアグラウンドプロセスまたはバックグラウンドプロセスのいずれであるかを示す属性情報であるとする。また、２つ目の特徴は、プロセスの生成順であるとする。プロセス１は、フォアグラウンドのプロセスであって、１番目に生成されたプロセスであることを示している。プロセス２は、バックグラウンドのプロセスであって、２番目に生成されたプロセスであることを示している。プロセス３は、フォアグラウンドのプロセスであって、３番目に生成されたプロセスであることを示している。
【００３９】
この状態で、２つの特徴のうち、少なくとも１つの特徴を用いて、プロセスをプロセスタイプに分類することをモデリングと言う。図４の上図では、フォアグラウンドプロセスまたはバックグラウンドプロセスのいずれであるかを示す属性情報を用いて、プロセスをプロセスタイプに分類した場合を示している。つまり、フォアグラウンドプロセスであるプロセス１および３はプロセスタイプＴＹＰＥ  １に分類され、バックグラウンドプロセスであるプロセス２はプロセスタイプＴＹＰＥ  ２に分類されることを示している。このように、複数のプロセスを複数のプロセスタイプに分類することをモデリングと言う。
【００４０】
次に、モデリングパターンについて説明する。図４の下図は、２つ目の特徴であるプロセスの生成順を用いてモデリングを行ったことを示している。図４の下図では、１番目に生成されるプロセスをプロセスタイプＴＹＰＥ  １とし、２番目以降に生成されるプロセスをプロセスタイプＴＹＰＥ  ２とするモデリングが行われていることを示している。ここで、図４の上図、下図のように、異なる特徴を用いてモデリングされた分類パターン（パターンＸまたはパターンＹ）をそれぞれモデリングパターンとする。
【００４１】
図２に戻り説明を続ける。パターン生成部２２は、後述する評価部２６が決定した評価値に基づいて、所定の条件を満たすまで、新たな複数のモデリングパターンを繰り返し生成する。詳細は動作例において説明を行うが、パターン生成部２２は、モデリングパターンを個体とし、評価部２６が決定した評価値を適応度とした、遺伝的アルゴリズムを適用して、新たな複数のモデリングパターンを繰り返し生成する。
【００４２】
所定の条件は、遺伝的アルゴリズムを適用して、学習を行う全体の経過時間が所定の閾値を超過した場合であってもよい。もしくは、所定の条件は、遺伝的アルゴリズムを適用して世代交代をしたときの所定の世代数となった場合であってもよい。もしくは、所定の条件は、遺伝的アルゴリズムを適用して生成された複数のモデリングパターンに対する評価部２６が決定した評価値が全て同じ値となる場合であってもよい。
【００４３】
パターン生成部２２は、新たな複数のモデリングパターンを生成した場合、記憶部２４のモデリングパターン保存領域２４２に記憶されているモデリングパターンを更新する。
【００４４】
また、パターン生成部２２は、学習ケースａ１，ａ２，．．．，ａｍの各々に、モデリングパターンｂ１，ｂ２，．．．，ｂｎを適用する。なお、以降の説明では、学習ケースにモデリングパターンを適用して生成されたものを「学習モデル」と称して記載することがある。
【００４５】
ここで、学習ケースａｉ（ｉ＝０〜ｍの整数）に対して、モデリングパターンｂｊ（ｊ＝０〜ｎの整数）を適用して生成された学習モデルをｃｉｊとすると、学習モデルｃｉｊは、ｃｉｊ＝ａｉｂｊとして表すこととする。つまり、パターン生成部２２は、ｃ１１＝ａ１ｂ１，ｃ１２＝ａ１ｂ２，．．．，ｃ１ｎ＝ａ１ｂｎ，ｃ２１＝ａ２ｂ１，ｃ２２＝ａ２ｂ２，．．．，ｃ２ｎ＝ａ２ｂｎ，．．．，ｃｍ１＝ａｍｂ１，ｃｍ２＝ａｍｂ２，ｃｍｎ＝ａｍｂｎを生成する。
【００４６】
パターン生成部２２が生成した学習モデルｃ１１〜ｃｍｎを記憶部２４の学習モデル保存領域２４３に記憶する。
【００４７】
ここで、学習モデルｃｉｊ＝ａｉｂｊは、学習ケースａｉに含まれている評価用プロセスが、モデリングパターンｂｊによってプロセスタイプに分類されている。学習モデルｃｉｊに含まれているプロセスタイプ毎の数を学習モデルｃｉｊの特徴とし、プロセスタイプ毎にいくつ含まれているかを特徴量とする。
【００４８】
例えば、学習モデルｃｉｊが、プロセスタイプＴＹＰＥ  １とＴＹＰＥ  ２とを含んでいるとすると、プロセスタイプＴＹＰＥ  １の特徴量はｍ１で表され、プロセスタイプＴＹＰＥ  ２の特徴量はｍ２で表される。一般化して表すと、プロセスタイプＴＹＰＥ  Ｆの特徴量は、ｍｆとして定義出来る。
【００４９】
次に、変数生成部２３について説明する。変数生成部２３は、各学習モデルに含まれるプロセスタイプの各々に重み付けを行う重み変数の集合である重み変数セットを複数生成する。変数生成部２３が生成する重み変数セットは、プロセスタイプ毎の優先度を決定する関数を構成する変数の集合である。
【００５０】
ここで、プロセスタイプ毎の優先度を決定する関数について説明を行った上で、変数生成部２３が生成する重み変数セットについて説明する。
プロセスタイプ毎の優先度を決定する関数は、以下の数式（１）のように定義される。
【数１】
2019106120.tif 000003
ここで、ｎａ：プロセスタイプＴＹＰＥ  ａの優先度、ｄａ：プロセスタイプＴＹＰＥ  ａの重み変数、ｄｋ：プロセスタイプＴＹＰＥ  ｋの重み変数ｍｋ：プロセスタイプＴＹＰＥ  ｋの特徴（プロセスタイプＴＹＰＥ  ｋの数）、ｑ：１〜プロセスタイプ数。
【００５１】
変数生成部２３は、上記数式（１）において、プロセスタイプ毎の重み変数の集合であるｄ１＝（ｄ１１，ｄ１２，．．．，ｄ１ｑ）を重み変数セットとして生成する。また、変数生成部２３は、複数の重み変数セットをランダムに生成する。変数生成部２３が、ｄ１，ｄ２，．．．，ｄｏ（ｏ：１以上の整数）を生成したとする。具体的には、各重み変数セットは、ｄ１＝（ｄ１１，ｄ１２，．．．，ｄ１ｑ），ｄ２＝（ｄ２１，ｄ２２，．．．，ｄ２ｑ），．．．，ｄｏ＝（ｄｏ１，ｄｏ２，．．．，ｄｏｑ）である。
【００５２】
なお、適用するモデリングパターンによって、学習モデルに含まれるプロセスタイプ数が異なる場合も想定される。具体的には、ある学習モデルの場合、プロセスタイプを２つ（ＴＹＰＥ  １およびＴＹＰＥ  ２）含み、別の学習モデルの場合、プロセスタイプを３つ（ＴＹＰＥ  １、ＴＹＰＥ  ２およびＴＹＰＥ３）含むことが想定される。そのため、変数生成部２３は、重み変数セットを生成する際に、全ての学習モデルに含まれるプロセスタイプ数を確認し、プロセスタイプ数が最も多い学習モデルのプロセスタイプ数に応じた重み変数を集合とする重み変数セットを生成する。
【００５３】
また、変数生成部２３は、後述する評価部２６が決定した評価値に基づいて、所定の条件を満たすまで、新たな複数の重み変数セットを繰り返し生成する。詳細は動作例において説明を行うが、変数生成部２３は、重み変数セットを個体とし、評価部２６が決定した評価値を適応度として、遺伝的アルゴリズムを適用して、新たな複数の重み変数セットを繰り返し生成する。
【００５４】
所定の条件は、遺伝的アルゴリズムを適用して、学習を行う全体の経過時間が所定の閾値を超過した場合であってもよい。もしくは、所定の条件は、遺伝的アルゴリズムを適用して世代交代をしたときの所定の世代数となった場合であってもよい。もしくは、所定の条件は、遺伝的アルゴリズムを適用して生成された複数の重み変数セットに対する評価部２６が決定した評価値が全て同じ値となる場合であってもよい。
【００５５】
変数生成部２３は、新たな複数の重み変数セットを生成した場合、記憶部２４の重み変数セット保存領域２４４に記憶されている重み変数セットを更新する。
【００５６】
次に、記憶部２４について説明する。記憶部２４には、学習ケース保存領域２４１、モデリングパターン保存領域２４２、学習モデル保存領域２４３および重み変数セット保存領域２４４が設けられている。
【００５７】
学習ケース保存領域２４１は、プロセス生成部２１が生成した学習ケースが保存される領域である。
モデリングパターン保存領域２４２は、パターン生成部２２が生成したモデリングパターンが保存される領域である。
学習モデル保存領域２４３は、パターン生成部２２が生成した学習モデルが保存される領域である。
重み変数セット保存領域２４４は、変数生成部２３が生成した重み変数セットが保存される領域である。
【００５８】
次に、算出部２５について説明する。算出部２５は、学習モデルと重み変数セットとの組み合わせ毎に、学習モデルに含まれるプロセスタイプ毎の特徴量、つまり、プロセスタイプ毎の数と、前記重み変数セットとを用いて、プロセスタイプ毎の優先度を算出する。具体的には、算出部２５は、学習モデルと重み変数セットとの組み合わせ毎に、学習モデルに含まれるプロセスタイプ毎の特徴量を求め、重み変数セットを用いて、上記数式（１）からプロセスタイプ毎の優先度を算出する。
【００５９】
次に、評価部２６について説明する。評価部２６は、実施の形態１における評価部１２に対応する。評価部２６は、学習モデルと重み変数セットとの組み合わせ毎に、算出部２５が算出したプロセスタイプ毎の優先度に基づいて、学習モデルに含まれるプロセス（プロセスタイプ）を実行し、予め定められた性能項目の評価値を決定する。具体的には、評価部２６は、算出されたプロセスタイプ毎の優先度が高いプロセスタイプから実行し、性能項目の評価値を決定する。
【００６０】
性能項目は、例えば、スループット、消費電力、割り当てられたリソースの平等性であってもよい。もしくは、予め定められた性能項目は、例えば、スループットおよび消費電力などのように複数の性能項目の組み合わせであってもよい。
【００６１】
性能項目がスループットである場合、プロセスタイプ毎の優先度に基づいて、学習モデルに含まれるプロセス（プロセスタイプ）を実行したときの実行開始から全プロセス（全プロセスタイプ）の終了までの時間を計測する。そして、その計測時間に応じて評価値を決定する。評価値は、例えば、計測されたスループットを所定の閾値と比較し、所定の閾値以上の場合、評価値を１として、所定の閾値未満である場合、評価値を０としてもよい。もしくは、評価値は、計測されたスループットを所定の閾値と比較し、所定の閾値との差分に応じた評価値としてもよい。
【００６２】
性能項目が消費電力である場合、プロセスタイプ毎の優先度に基づいて、学習モデルに含まれるプロセス（プロセスタイプ）を実行したときの消費電力を監視し、消費電力の大小に応じて評価値を決定する。評価値は、例えば、計測された消費電力を所定の閾値と比較し、所定の閾値未満の場合、評価値を１として、所定の閾値以上である場合、評価値を０としてもよい。もしくは、評価値は、計測された消費電力を所定の閾値と比較し、所定の閾値との差分に応じた評価値としてもよい。なお、消費電力は小さい程、良い性能を発揮していると考えられるため、計測された消費電力の逆数を用いて評価値を決定してもよい。
【００６３】
性能項目が、割り当てられたリソースの平等性である場合、プロセスタイプ毎の優先度に基づいて、学習モデルに含まれるプロセス（プロセスタイプ）を実行したときの各プロセスに割り当てられたリソースを監視する。そして、割り当てられたリソースのプロセス間のばらつき（分散）に基づいて評価値を決定する。評価値は、例えば、割り当てられたリソースのプロセス間のばらつきを所定の閾値と比較し、所定の閾値未満の場合、評価値を１として、所定の閾値以上である場合、評価値を０としてもよい。もしくは、評価値は、割り当てられたリソースのプロセス間のばらつきを所定の閾値と比較し、所定の閾値との差分に応じた評価値としてもよい。なお、割り当てられたリソースのプロセス間のばらつきは小さい程、良い性能を発揮していると考えられるため、割り当てられたリソースのプロセス間のばらつきの逆数を用いて評価値を決定してもよい。
【００６４】
性能項目が、例えば、スループットおよび消費電力のように、複数の性能項目の組み合わせである場合、各性能項目に対して、上記のように決定した評価値を総和することにより決定してもよい。なお、説明を行う上で便宜的に、性能項目は、スループットとして以降の説明を行う。
【００６５】
詳細は後述するが、プロセススケジューリング装置２０は、最適なモデリングパターンと最適な重み変数セットとを決定することを目的とする。そのため、評価部２６は、モデリングパターンと重み変数セットとの組み合わせ毎に評価値を決定する。ここで、各学習モデルは、学習ケースのそれぞれに、モデリングパターンを適用して生成されている。つまり、同一のモデリングパターンによって生成された学習モデルは、学習ケース分存在する。そのため、モデリングパターンを評価する際、重み変数セットを評価する際、各学習ケースの評価値を決定して、決定した評価値を総和した値を、モデリングパターンに対する評価値、重み変数セットに対する評価値として決定する。
【００６６】
次に、決定部２７について説明する。決定部２７は、実施の形態１にかかる決定部１３に対応する。決定部２７は、評価部２６において決定された評価値に基づいて、最適なモデリングパターンと最適な重み変数セットとを決定する。パターン生成部２２および変数生成部２３は、所定の条件を満たすまで、新たな複数のモデリングパターンおよび新たな複数の重み変数セットを繰り返し生成する。決定部２７は、所定の条件を満たした場合、最も高い評価値に対応する、モデリングパターンおよび重み変数セットを決定する。なお、説明を行う上で便宜的に、最も良い評価値のモデリングパターンを「最適モデリングパターン」と称して記載し、最も良い評価値の重み変数セットを「最適重み変数セット」と称して記載することがある。
【００６７】
次に、送信部２８について説明する。送信部２８は、最適モデリングパターンと、最適重み変数セットとをプロセス実行装置３０に送信する。
【００６８】
＜プロセスス実行装置の構成例＞
続いて、プロセス実行装置３０について説明する。プロセス実行装置３０は、受信部３１、記憶部３２およびプロセス実行部３３を備える。
【００６９】
受信部３１は、最適モデリングパターンと、最適重み変数セットとを送信部２８から受信する。受信部３１は、最適モデリングパターンと、最適重み変数セットとを受信すると、記憶部３２に記憶する。
【００７０】
記憶部３２は、モデリングパターン保存領域３２１と、重み変数セット保存領域３２２と、を備える。
モデリングパターン保存領域３２１は、受信部３１が受信した最適モデリングパターンが保存される保存領域である。
重み変数セット保存領域３２２は、受信部３１が受信した最適重み変数セットが保存される保存領域である。
【００７１】
次に、プロセス実行部３３について説明する。プロセス実行部３３は、プロセス実行装置にインストールされたアプリケーションプログラムが生成した複数の実プロセスを実行する。具体的には、プロセス実行部３３は、複数の実プロセスを最適モデリングパターンに基づいて、複数のプロセスタイプに分類する。そして、プロセス実行部３３は、プロセスタイプ毎の数を算出し、最適重み変数セットを用いて、上記数式（１）に代入してプロセスタイプ毎の優先度を算出する。プロセス実行部３３は、算出されたプロセスタイプ毎の優先度が高いプロセスタイプに分類された実プロセスから実行する。ただし、同じ優先度のプロセスタイプに対応する実プロセスが複数存在する場合は、プロセス実行部３３は、各プロセスに既に割り振ったリソースの量が少ないものを先に実行する。優先度が等しく、かつ、既に割り振ったリソースの量も等しい場合は、プロセス実行部３３は、先に生成されたプロセスから順に実行する。
【００７２】
＜プロセススケジューリング装置の動作例＞
続いて、図５〜図７を用いて、プロセススケジューリング装置２０の動作例を説明する。
まず、図５を用いて、プロセススケジューリング装置２０の全体動作を説明する。図５は、実施の形態２にかかるプロセススケジューリング装置の全体動作を説明するフローチャートである。
【００７３】
プロセス生成部２１は、複数の学習ケースを生成する（ステップＳ１）。具体的には、プロセス生成部２１は、複数の評価用プロセスを生成する。そして、プロセス生成部２１は、生成した複数の評価用プロセスのうち、ランダムに２つ以上の評価用プロセスを抽出して、学習ケースを複数生成する。プロセス生成部２１は、複数の学習ケースａ１，ａ２，．．．，ａｍを生成したとする。プロセス生成部２１は、生成した複数の学習ケースａ１，ａ２，．．．，ａｍを学習ケース保存領域２４１に記憶する。
【００７４】
次に、パターン生成部２２は、複数のモデリングパターンを生成する（ステップＳ２）。具体的には、パターン生成部２２は、プロセスが有する複数の特徴のうち、それぞれ異なる少なくとも１つの特徴をランダムに抽出して、複数のプロセスを複数のプロセスタイプに分類する分類パターンを表すモデリングパターンを複数生成する。パターン生成部２２は、複数のモデリングパターンｂ１，ｂ２，．．．，ｂｎを生成したとする。なお、ｍとｎは、同じ整数であってもよいし、異なる整数であってもよい。パターン生成部２２は、生成した複数のモデリングパターンｂ１，ｂ２，．．．，ｂｎをモデリングパターン保存領域２４２に記憶する。
【００７５】
次に、パターン生成部２２は、複数の学習モデルを生成する（ステップＳ３）。具体的には、パターン生成部２２は、学習ケースａ１，ａ２，．．．，ａｍの各々に、モデリングパターンｂ１，ｂ２，．．．，ｂｎを適用して、複数の学習ケースを生成する。パターン生成部２２は、ｃ１１＝ａ１ｂ１，ｃ１２＝ａ１ｂ２，．．．，ｃ１ｎ＝ａ１ｂｎ，ｃ２１＝ａ２ｂ１，ｃ２２＝ａ２ｂ２，．．．，ｃ２ｎ＝ａ２ｂｎ，．．．，ｃｍ１＝ａｍｂ１，ｃｍ２＝ａｍｂ２，ｃｍｎ＝ａｍｂｎを生成したとする。パターン生成部２２は、生成した学習モデルｃ１１，ｃ１２，．．．，ｃ１ｎ，ｃ２１，ｃ２２，．．．，ｃ２ｎ，．．．，ｃｍ１，ｃｍ２，ｃｍｎを学習モデル保存領域２４３に記憶する。
【００７６】
次に、変数生成部２３は、複数の重み変数セットを生成する（ステップＳ４）。具体的には、変数生成部２３は、複数の学習モデルのうち、最も多いプロセスタイプ数の学習モデルを特定する。変数生成部２３は、特定したプロセスタイプ数分（最も多いプロセスタイプ数の学習モデルのプロセスタイプ数分）の重み変数の集合を１つの重み変数セットとして、複数の重み変数セットをランダムに生成する。変数生成部２３は、ｄ１，ｄ２，．．．，ｄｏを生成したとする。なお、各重み変数セットは、ｄ１＝（ｄ１１，ｄ１２，．．．，ｄ１ｑ），ｄ２＝（ｄ２１，ｄ２２，．．．，ｄ２ｑ），．．．，ｄｏ＝（ｄｏ１，ｄｏ２，．．．，ｄｏｑ）となっている。変数生成部２３は、生成した複数の重み変数セットを重み変数セット保存領域２４４に記憶する。
【００７７】
次に、最適重み変数セットと最適モデリングパターンとを決定する（ステップＳ５）。詳細は後述するが、ステップＳ５は、具体的には、図６に示す動作例と、図７に示す動作例と、を含む動作となっている。また、ステップＳ５は、図６の動作例を実施した後に、図７の動作例を実施することにより構成される。具体的には、図６の動作例を実施することにより、ステップＳ２において生成した各モデリングパターンに対する最適重み変数セットを決定する。そして、図７の動作例を実施することにより、最適モデリングパターンと最適重み変数セットとを決定する。
【００７８】
次に、送信部２８は、決定部２７が決定した最適重み変数セットと最適モデリングパターンとをプロセス実行装置３０に送信する（ステップＳ６）。
【００７９】
続いて、図６を用いて、最適重み変数セットの決定動作について説明する。図６は、最適重み変数セットの決定動作について説明するフローチャートである。上述したように、図６に示すフローチャートは、図５におけるステップＳ５において実施される動作例である。
【００８０】
図６に示す様に、ステップＳ１１〜Ｓ１８は、モデリングパターン数分繰り返し行われる。ステップＳ１２〜Ｓ１５は、モデリングパターン数分かつ重み変数セット数分、繰り返し行われる。ステップＳ１２〜Ｓ１４は、モデリングパターン数分かつ重み変数セット数分かつ学習ケース数分、繰り返し行われる。
【００８１】
まず、算出部２５は、複数の学習モデルのうち、モデリングパターンｓにより生成された学習モデルを抽出する（ステップＳ１１）。ここで、抽出された学習モデルはｃ１ｓ，ｃ２ｓ，．．．，ｃｍｓである。
【００８２】
次に、算出部２５は、抽出した学習モデルｃ１ｓ，ｃ２ｓ，．．．，ｃｍｓのそれぞれに対して、プロセスタイプ毎の優先度を算出する（ステップＳ１２）。算出部２５は、抽出した学習モデルｃ１ｓ，ｃ２ｓ，．．．，ｃｍｓのそれぞれに対して、プロセスタイプ毎の数を求め、プロセスタイプ毎の数と、重み変数セットとを、上述した数式（１）に代入することによりプロセスタイプ毎の優先度を算出する。
【００８３】
次に、評価部２６は、ステップＳ１２において算出されたプロセスタイプ毎の優先度を用いて、処理対象の学習モデルを実行し（ステップＳ１３）、処理対象の学習モデルの性能項目の評価値を決定する（ステップＳ１４）。評価部２６は、プロセス実行時の実行開始から全プロセス（全プロセスタイプ）の終了までの時間を計測し、その計測時間に応じて、スループットによる評価値を決定する。
【００８４】
次に、評価部２６は、抽出した学習モデルに対して評価値が決定されると、各評価値の総和を、重み変数セットｔに対する評価値と決定する（ステップＳ１５）。
【００８５】
ここで、上記のステップＳ１２〜Ｓ１５の処理内容について、具体例を用いて説明する。例えば、学習ケースａ１，ａ２が存在し、プロセスをプロセスタイプＴＹＰＥ  １とＴＹＰＥ  ２との２つに分類するモデリングパターンｂ１が存在すると仮定する。そうすると、学習モデルｃ１１＝ａ１ｂ１とｃ２１＝ａ２ｂ１とが生成される。学習モデルｃ１１は、プロセスタイプＴＹＰＥ  １がｍ１１個、ＴＹＰＥ  ２がｍ１２個を含んでいたとする。学習モデルｃ２１は、プロセスタイプＴＹＰＥ  １がｍ２１個、ＴＹＰＥ  ２がｍ２２個を含んでいたとする。さらに、重み変数セットｄ１＝（ｄ１１，ｄ１２）、ｄ２＝（ｄ２１，ｄ２２）が生成されているとする。
【００８６】
重み変数セットｄ１の評価値は、上記数式（１）に、ｍ１１とｍ１２と、ｄ１＝（ｄ１１，ｄ１２）と、を代入し、プロセスタイプＴＹＰＥ  １とＴＹＰＥ  ２との優先度を算出する。算出した優先度に基づいて、学習モデルｃ１１＝ａ１ｂ１を実行し、プロセス実行時の実行開始から全プロセス（全プロセスタイプ）の終了までの時間を計測する。そして、その計測時間に応じて、スループットによる評価値を決定する。同様に、ｃ２１＝ａ２ｂ１に対しても評価値を決定する。算出されたｃ１１の評価値とｃ２１の評価値との和が重み変数セットｄ１に対する評価値として決定される。重み変数セットｄ２に対しても上記と同様のことを行い、算出されたｃ１１の評価値とｃ２１の評価値との和が重み変数セットｄ２に対する評価値として決定される。
【００８７】
全ての重み変数セットに対して評価値が決定されると、終了条件となったかを判定する（ステップＳ１６）。終了条件は、学習を行う全体の経過時間が所定の閾値を超過した場合であるとする。つまり、図６のステップＳ１１からの処理の経過時間が所定の閾値を超過した場合（ステップＳ１６のＹＥＳ）、決定部２７は、決定した評価値の中から最も高い評価値に対応する重み変数セットを最適重み変数セットと決定する（ステップＳ１７）。
【００８８】
一方、図６のステップＳ１１からの処理の経過時間が所定の閾値を超過していない場合（ステップＳ１６のＮＯ）、変数生成部２３は、新たな複数の重み変数セットを生成する（ステップＳ１８）。
【００８９】
具体的には、変数生成部２３は、遺伝的アルゴリズムを用いて、新たな複数の重み変数セットを生成する。この際、遺伝的アルゴリズムにおける、初期集団は図５のステップＳ４において生成した複数の重み変数セットとなる。また、個体を重み変数セットとし、ステップＳ１５において決定された評価値を適応度とする。終了条件は、学習を行う全体の経過時間が所定の閾値を超過したこととする。つまり、終了条件を満たした場合とは、図６のステップＳ１１開始からの経過時間が所定の閾値を超過した場合である。
【００９０】
選択は、例えば、複数の重み変数セットのうち、評価値が高い方から一定量選び、次の世代に残すことにより行う。交叉は、選択によって残った重み変数セットのうち、２つを選択して、各重み変数セットの平均を取ることにより行う。例えば、重み変数セットがｄ１＝（ｄ１１，ｄ１２）、ｄ２＝（ｄ２１，ｄ２２）である場合、交叉により、ｄ３＝（（ｄ１１＋ｄ２１）／２，（ｄ１２＋ｄ２２）／２）が生成される。
【００９１】
突然変異は、図５のステップＳ４において生成した重み変数セットのように、完全にランダムな重み変数セットを低確率で生成することにより行う。なお、選択、交叉および突然変異については、まず、選択を行い、その後に、交叉および突然変異を行うようにする。以上のような条件である遺伝的アルゴリズムを適用して、新たな複数の重み変数セットを生成する。
【００９２】
ステップＳ１８において、新たな複数の重み変数セットを生成すると、ステップＳ１１以降の処理を、終了条件（所定の条件）を満たすまで繰り返し行う。終了条件を満たした場合、決定部２７は、決定した評価値の中から最も高い評価値に対応する重み変数セットを最適重み変数セットと決定する（ステップＳ１７）。
【００９３】
続いて、図７を用いて、最適モデリングパターンおよび最適重み変数セットの決定動作について説明する。図７は、最適モデリングパターンおよび最適重み変数セットの決定動作について説明するフローチャートである。上述したように、図７に示す動作例は、図５のステップＳ５において行われる動作であって、図６に示した動作の後に行われる。なお、前提として、図６が実行されると、各モデリングパターンに対して、最適重み変数セットが決定されている。
【００９４】
図７に示す様に、ステップＳ２１〜Ｓ２５は、モデリングパターン数分繰り返し行われる。ステップＳ２２〜Ｓ２４は、モデリングパターン数分かつ学習ケース分、繰り返し行われる。
【００９５】
まず、算出部２５は、複数の学習モデルのうち、モデリングパターンｖにより生成された学習モデルを抽出する（ステップＳ２１）。ここで、抽出された学習モデルはｃ１ｖ，ｃ２ｖ，．．．，ｃｍｖである。
【００９６】
次に、算出部２５は、抽出した学習モデルｃ１ｖ，ｃ２ｖ，．．．，ｃｍｖのそれぞれに対して、プロセスタイプ毎の優先度を算出する（ステップＳ２２）。算出部２５は、抽出した学習モデルｃ１ｖ，ｃ２ｖ，．．．，ｃｍｖのそれぞれに対して、プロセスタイプ毎の数を求め、求めたプロセスタイプ毎の数と、重み変数セットとを、上述した数式（１）に代入してプロセスタイプ毎の優先度を算出する。
【００９７】
次に、評価部２６は、ステップＳ２２において算出されたプロセスタイプ毎の優先度を用いて、処理対象の学習モデルを実行し（ステップＳ２３）、処理対象の学習モデルの性能項目の評価値を決定する（ステップＳ２４）。評価値の決定については、図６のステップＳ１４と同様とする。
【００９８】
次に、評価部２６は、抽出した学習モデルに対して評価値が決定されると、各評価値の総和を、モデリングパターンｖに対する評価値と決定する（ステップＳ２５）。全てのモデリングパターンに対して評価値が決定されると、終了条件となったかを判定する（ステップＳ２６）。終了条件は、学習を行う全体の経過時間が所定の閾値を超過した場合であるとする。つまり、図７のステップＳ２１からの処理の経過時間が所定の閾値を超過した場合（ステップＳ２６のＹＥＳ）、決定部２７は、決定した評価値の中から最も高い評価値に対応するモデリングパターンおよび重み変数セットを決定する。決定部２７は、決定したモデリングパターンおよび重み変数セットを、最適モデリングパターンおよび最適重み変数セットと決定する（ステップＳ２７）。
【００９９】
一方、図７のステップＳ２１からの処理の経過時間が所定の閾値を超過していない場合（ステップＳ２６のＮＯ）、パターン生成部２２は、新たな複数のモデリングパターンを生成する（ステップＳ２８）。
【０１００】
具体的には、パターン生成部２２は、遺伝的アルゴリズムを用いて、新たな複数のモデリングパターンを生成する。この際、遺伝的アルゴリズムにおける、初期集団は図５のステップＳ２において生成した複数のモデリングパターンとなる。また、個体をモデリングパターンとし、ステップＳ２５において決定された評価値を適応度とする。終了条件は、学習を行う全体の経過時間が所定の閾値を超過したこととする。つまり、終了条件を満たした場合とは、図７のステップＳ２１開始からの経過時間が所定の閾値を超過した場合である。
【０１０１】
選択は、例えば、複数のモデリングパターンの評価値が高い方から一定量選び、次の世代に残すことにより行う。交叉は、選択によって残った重み変数セットのうち、２つを選択して、各重み変数セットの平均を取ることにより行う。例えば、モデリングパターンｂ１とｂ２とが、プロセスの特徴ｙとｚを元に、３種類のプロセスをプロセスタイプに分類するモデリングであると仮定する。また、モデリングパターンｂ１とｂ２の関数が以下のようになっていたとする。
【数２】
2019106120.tif 000004
この場合、交叉によって新たに生成されるモデリングパターンをｂ３とすると、以下のような関数が生成される。
【数３】
2019106120.tif 000005
【０１０２】
突然変異は、図５のステップＳ２において生成したモデリングパターンのように、ランダムなモデリングパターンを低確率で生成することにより行う。なお、選択、交叉および突然変異については、まず、選択を行い、その後に、交叉および突然変異を行うようにする。以上のような条件である遺伝的アルゴリズムを適用して、新たな複数のモデリングパターンを生成する。
【０１０３】
ステップＳ２８において、新たな複数のモデリングパターンを生成すると、新たな複数のモデリングパターンを学習ケースａ１，ａ２，．．．，ａｍに適用して、新たな複数の学習モデルを生成する（ステップＳ２９）。ステップＳ２９で行うことは、図５のステップＳ３と同じである。
【０１０４】
次に、新たな複数の学習モデルに対して最適重み変数セットを決定する（ステップＳ３０）。新たな学習モデルが生成された場合は、当然ながら既に存在する重み変数セットのいずれかが、新たな学習モデルに対する最適重み変数セットになるとは限らない。そのため、ステップＳ３０において、新たな学習モデルに対して、最適重み変数セットを決定する。ステップＳ３０において実施される内容は、図６に示した動作と同じである。つまり、ステップＳ３０においても、図６が実施され、最適重み変数セットを決定する。なお、図６においては、全ての学習モデルに対して実施されるが、ステップＳ３０においては、新たなモデリングパターンにより生成された新たな学習モデルに対してのみ、図６の動作が実施される。
【０１０５】
以降、ステップＳ２１以降の処理を、終了条件（所定の条件）を満たすまで繰り返し行う。終了条件を満たした場合、決定部２７は、決定した評価値の中から最も高い評価値に対応するモデリングパターンおよび重み変数セットを決定する。決定部２７は、決定したモデリングパターンおよび重み変数セットを、最適モデリングパターンおよび最適重み変数セットと決定する（ステップＳ２７）。
【０１０６】
＜プロセス実行装置の動作例＞
続いて、図８を用いて、プロセス実行装置３０の動作例について説明する。図８は、実施の形態２にかかるプロセス実行装置の動作例を説明するフローチャートである。
【０１０７】
まず、受信部３１は、最適モデリングパターンおよび最適重み変数セットをプロセススケジューリング装置２０の送信部２８から受信する（ステップＳ３１）。受信部３１は、最適モデリングパターンおよび最適重み変数セットを、それぞれモデリングパターン保存領域３２１および重み変数セット保存領域３２２に記憶する。
【０１０８】
次に、プロセス実行部３３は、プロセス実行装置３０にインストールされているアプリケーションプログラムが生成した実プロセスを、最適モデリングパターンを用いてプロセスタイプに分類する（ステップＳ３２）。
【０１０９】
次に、プロセス実行部３３は、最適重み変数セットを用いて、プロセスタイプ毎の優先度を算出する（ステップＳ３３）。プロセス実行部３３は、ステップＳ３２において分類されたプロセスタイプ毎の数を求め、求めたプロセスタイプ毎の数と最適重み変数セットとを、上述した数式（１）に代入して、プロセスタイプ毎の優先度を算出する。
【０１１０】
次に、プロセス実行部３３は、算出したプロセスタイプ毎の優先度に基づいて、実プロセスを実行する（ステップＳ３３）。プロセス実行部３３は、複数の実プロセスを最適モデリングパターンに基づいて、複数のプロセスタイプに分類している。また、プロセス実行部３３は、プロセスタイプ毎の優先度を算出しているので、分類したプロセスタイプを、プロセスタイプ毎の優先度が高いプロセスタイプから実行する。同じ優先度のプロセスタイプが複数存在する場合は、プロセス実行部３３は、各プロセスに既に割り振ったリソースの量が少ないプロセスを先に実行する。優先度が等しく、かつ、既に割り振ったリソースの量も等しい場合は、プロセス実行部３３は、先に生成されたプロセスから順に実行する。
【０１１１】
続いて、実施の形態２の効果について説明する。１つ目は、プロセスが有する複数の特徴を用いたプロセススケジューリングが可能となる。実施の形態２においても、パターン生成部２２が、プロセスが有する複数の特徴を用いて、複数のモデリングパターンを生成する。評価部２６は、複数のモデリングパターンの各々に対して、評価値を決定し、決定部２７は、決定された評価値に基づいて、最適な分類パターンを決定する。したがって、実施の形態２にかかるプロセススケジューリング装置１０によれば、プロセスが有する複数の特徴を用いたプロセススケジューリングが可能となる。
【０１１２】
２つ目は、プロセスが有する特徴を用いたモデリングを行うことにより、プロセスが有する特徴を入力とした機械学習を行う場合と比較して情報量を削減することが可能となる。最適なプロセススケジューリングとなる解を導くために、機械学習を用いることが考えられる。機械学習を行う際に、プロセスが有する複数の特徴を、そのまま入力値とすることも想定される。しかしながら、この場合、プロセスの実行優先度は絶対的なものではなく、他に存在するプロセスにより決定される相対的なものとなる。つまり、全てのプロセスに関する情報も機械学習の入力情報とする必要が生じてしまう。しかし、各プロセスの特徴だけでなく、他のプロセスの特徴も考慮した機械学習を行う場合、全てのプロセスの特徴情報を保持しなければならないため、情報量が膨大になるという課題が生じてしまう。そこで、本実施の形態では、複数の特徴を用いて、プロセスをプロセスタイプに分類することによって、適切に情報量を削減することが可能となる。また、このようにすることで、容易に、かつ有用な学習結果を得ることが出来る。つまり、最適なモデリングパターンおよび最適な重み変数セットを容易に求めることが出来、最適なプロセススケジューリングを行うことが可能となる。
【０１１３】
３つ目は、プロセスが有する複数の特徴のうち、最適な特徴を決定して、最適なプロセススケジューリングとすることが可能となる。最適なプロセススケジューリングとなるような特徴を決定する場合、人間が１つ１つの特徴に対して評価を行うことも想定される。しかしながら、例えば、ある特徴は、プロセススケジューリングに関係が無いとして評価を行わないと言う場合も考えられる。本実施の形態にかかるプロセススケジューリング装置２０は、プロセスが有する複数の特徴を用いて、最適なモデリングパターンと最適な重み変数セットとを決定する。そのため、プロセスが有する複数の特徴を反映したプロセススケジューリングを可能とする。つまり、人為的に発見することの難しい特徴を用いたプロセススケジューリングを行うことが可能となる。したがって、本実施の形態にかかるプロセススケジューリング装置２０によれば、人為的に発見することの難しい特徴を用いた最適なプロセススケジューリングとなる関数を発見できるという利点がある。
【０１１４】
４つ目は、機械学習に適したプロセスのモデリングパターンを導出する手法を確立できる。関連する技術では、機械学習に適したプロセスをプロセスタイプにモデリングすることは検討されていない。また、複数のモデリングパターンを生成することも検討されていない。仮に、人間が機械学習に適したプロセスのモデリングパターンを作成することも想定されるが、人間が作成するのは容易ではない。一方、上述した本実施の形態によれば、複数のモデリングパターンによりモデル化された学習モデルを学習することより、任意の機械学習手法に適したモデリングパターンを導出することが可能となる。これにより人間がモデリングパターンを作成する必要がなくなるという効果を有する。
【０１１５】
５つ目は、最適な重み変数セットを導出することが可能となるので、より最適なプロセススケジューリングを可能とする。本実施の形態によれば、最適なモデリングパターンだけでなく、最適なモデリングパターンにより分類された各プロセスタイプに対して最適な重み付けを行うことが可能となる。つまり、本実施の形態によれば、最適なモデリングパターンと、最適な重み変数セットと、によって、最適なバランスとなるプロセススケジューリングとすることが可能となる。上述したように、人間が最適なモデリングパターンを決定することは容易ではないが、仮に、人間が最適なモデリングパターンを作成出来たとしても、各プロセスタイプを最適に重み付けする変数を決定することも容易ではない。本実施の形態によれば、最適なモデリングパターンだけでなく、最適なモデリングパターンにより分類された各プロセスタイプに対して最適な重み付けを行うことが可能となる。
【０１１６】
（変形例）
上述した実施の形態において、以下のような変形を施してもよい。
＜１＞上述した実施の形態では、プロセススケジューリング装置２０において決定した最適モデリングパターンおよび最適重み変数セットを用いて、プロセス実行装置３０が実プロセスを実行する構成として説明した。例えば、上述した実施の形態２を変形して、プロセススケジューリング装置２０が最適モデリングパターンおよび最適重み変数セットを用いて、実プロセスを実行するようにしてもよい。
【０１１７】
図９は、実施の形態２の変形例にかかるプロセススケジューリング装置２０の構成例を示すブロック図である。この場合、図９に示す様に、プロセススケジューリング装置２０において、実施の形態２における送信部２８を設けなくてよい。また、プロセススケジューリング装置２０において、プロセス実行部２９を設け、実施の形態２におけるプロセス実行部３３と同様の構成とすればよい。さらに、モデリングパターン保存領域２４２および重み変数セット保存領域２４４において、最適モデリングパターンおよび最適重み変数セットが特定出来るように変更すればよい。このようにすることで、プロセス実行部２９は、最適モデリングパターンおよび最適重み変数セットを特定することができ、実施の形態２と同様の効果を得ることが可能となる。
【０１１８】
＜２＞上述した実施の形態２において、プロセス実行装置３０は、プロセススケジューリング装置２０から決定した最適モデリングパターンと最適重み変数セットとを受信した。例えば、プロセス実行装置３０の記憶部３２に、予め最適モデリングパターンと最適重み変数セットとを記憶しておいてもよい。つまり、受信部３１を設けない構成であってもよい。図１０は、実施の形態２の変形例にかかるプロセス実行装置の構成例を示すブロック図である。図１０に示す様に、プロセス実行装置３０は、記憶部３２と、プロセス実行部３３とを備える構成であってもよい。
【０１１９】
（他の実施の形態）
図１１は、上述した実施の形態において説明したプロセススケジューリング装置１０、２０（以下、プロセススケジューリング装置１０等と称する）およびプロセス実行装置３０の構成例を示すブロック図である。図１１を参照すると、プロセススケジューリング装置１０等およびプロセス実行装置３０は、ネットワーク・インターフェース１２０１、プロセッサ１２０２、及びメモリ１２０３を含む。ネットワーク・インターフェース１２０１は、通信システムを構成する他のネットワークノード装置と通信するために使用される。ネットワーク・インターフェース１２０１は、例えば、IEEE 802.3 seriesに準拠したネットワークインターフェースカード（NIC）を含んでもよい。
【０１２０】
プロセッサ１２０２は、メモリ１２０３からソフトウェア（コンピュータプログラム）を読み出して実行することで、上述の実施形態においてフローチャートを用いて説明されたプロセススケジューリング装置１０等およびプロセス実行装置３０の処理を行う。プロセッサ１２０２は、例えば、マイクロプロセッサ、MPU（Micro Processing Unit）、又はCPU（Central Processing Unit）であってもよい。プロセッサ１２０２は、複数のプロセッサを含んでもよい。
【０１２１】
メモリ１２０３は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ１２０３は、プロセッサ１２０２から離れて配置されたストレージを含んでもよい。この場合、プロセッサ１２０２は、図示されていないI/Oインタフェースを介してメモリ１２０３にアクセスしてもよい。
【０１２２】
図１１の例では、メモリ１２０３は、ソフトウェアモジュール群を格納するために使用される。プロセッサ１２０２は、これらのソフトウェアモジュール群をメモリ１２０３から読み出して実行することで、上述の実施形態において説明されたプロセススケジューリング装置１０等およびプロセス実行装置３０の処理を行うことができる。
【０１２３】
図１１を用いて説明したように、プロセススケジューリング装置１０等およびプロセス実行装置３０が有するプロセッサの各々は、図面を用いて説明されたアルゴリズムをコンピュータに行わせるための命令群を含む１または複数のプログラムを実行する。
【０１２４】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）を含む。さらに、非一時的なコンピュータ可読媒体の例は、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗを含む。さらに、非一時的なコンピュータ可読媒体の例は、半導体メモリを含む。半導体メモリは、例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１２５】
なお、本開示は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、本開示は、それぞれの実施の形態を適宜組み合わせて実施されてもよい。
【０１２６】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成するパターン生成部と、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定する評価部と、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定する決定部と、を備えるプロセススケジューリング装置。
【０１２７】
（付記２）
前記パターン生成部は、所定の条件を満たすまで、前記決定された評価値に基づいて新たな複数の前記分類パターンを繰り返し生成する、付記１に記載のプロセススケジューリング装置。
【０１２８】
（付記３）
前記分類パターンに含まれるプロセスタイプの各々に重み付けを行う重み変数の集合である重み変数セットを複数生成する変数生成部をさらに備え、
前記評価部は、前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記評価値を決定し、
前記決定部は、前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンおよび重み変数セットを決定する、付記１または２に記載のプロセススケジューリング装置。
【０１２９】
（付記４）
前記変数生成部は、所定の条件を満たすまで、前記決定された評価値に基づいて新たな複数の前記重み変数セットを繰り返し生成する、付記３に記載のプロセススケジューリング装置。
【０１３０】
（付記５）
前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記分類パターンに含まれるプロセスタイプ毎の数と前記重み変数セットとを用いて、プロセスタイプ毎の優先度を算出する算出部をさらに備え、
前記評価部は、前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記算出されたプロセスタイプ毎の優先度に基づいて、前記複数のプロセスを実行し、前記評価値を決定する、付記３または４のいずれか１項に記載のプロセススケジューリング装置。
【０１３１】
（付記６）
前記複数のプロセスを表すプロセス群を複数生成するプロセス生成部をさらに備え、
前記パターン生成部は、前記複数のプロセス群の各々に対して、前記複数の分類パターンを適用し、
前記変数生成部は、前記プロセス群と前記分類パターンとの組み合わせ毎に、前記複数の重み変数セットを生成し、
前記評価部は、前記プロセス群と前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記評価値を決定し、各プロセス群の前記評価値の総和を、前記分類パターンと前記重み変数セットとの組み合わせに対する評価値と決定し、
前記決定部は、前記決定された評価値に基づいて、前記複数のプロセス群に対する分類パターンおよび重み変数セットを決定する、付記３〜５のいずれか１項に記載のプロセススケジューリング装置。
【０１３２】
（付記７）
前記パターン生成部は、遺伝的アルゴリズムを適用して、新たな複数の前記分類パターンを生成する、付記２に記載のプロセススケジューリング装置。
【０１３３】
（付記８）
前記変数生成部は、遺伝的アルゴリズムを適用して、新たな複数の前記重み変数セットを生成する、付記４に記載のプロセススケジューリング装置。
【０１３４】
（付記９）
前記性能項目は、スループット、消費電力および割り当てられたリソースの平等性の少なくとも１つを含む、付記１〜８のいずれか１項に記載のプロセススケジューリング装置。
【０１３５】
（付記１０）
前記プロセスが有する少なくとも１つの特徴は、フォアグランドプロセスまたはバックグラウンドプロセスであること、プロセス実行順、プロセス発生順、過去に割り当てられたプロセスのＣＰＵ時間、プロセス名、ユーザ情報およびプロセスに入力された入力情報のうち、少なくとも１つを含む、付記１〜９のいずれか１項に記載のプロセススケジューリング装置。
【０１３６】
（付記１１）
前記決定部が決定した分類パターンおよび重み変数セットの少なくとも１つに基づいて、アプリケーションプログラムが生成する複数のプロセスを実行するプロセス実行部をさらに備える、付記１〜１０のいずれか１項に記載のプロセススケジューリング装置。
【０１３７】
（付記１２）
プロセスが有する少なくとも１つの特徴を用いて、複数の第１のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成し、前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定し、前記決定された評価値に基づいて決定された分類パターンを用いて、アプリケーションプログラムが生成する複数の第２のプロセスを実行するプロセス実行部を備える、プロセス実行装置。
【０１３８】
（付記１３）
前記プロセス実行部は、前記決定された分類パターンを用いて、前記複数の第２のプロセスを複数のプロセスタイプに分類し、前記分類されたプロセスタイプ毎の優先度を算出し、前記算出されたプロセスタイプ毎の優先度に基づいて、前記複数の第２のプロセスを実行する、付記１２に記載のプロセス実行装置。
【０１３９】
（付記１４）
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成することと、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定することと、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定することと、を含むプロセススケジューリング方法。
【０１４０】
（付記１５）
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成することと、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定することと、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定することと、をコンピュータに実行させるプログラム。
【０１４１】
（付記１６）
前記分類パターンに含まれるプロセスタイプの各々に重み付けを行う重み変数の集合である重み変数セットを複数生成することをさらに含み、
前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記評価値を決定し、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンおよび重み変数セットを決定する、付記１５に記載のプログラム。
【０１４２】
（付記１７）
プロセス実行時のプロセス優先度を決定するプロセススケジューリング装置と、
アプリケーションプログラムが生成した実プロセスを実行するプロセス実行装置と、を備え、
前記プロセススケジューリング装置は、
プロセスが有する少なくとも１つの特徴を用いて、複数のプロセスを複数のプロセスタイプに分類する分類パターンを、それぞれ異なる少なくとも１つの特徴を用いて複数生成するパターン生成部と、
前記複数の分類パターンの各々に対して、予め定められた性能項目に対する評価値を決定する評価部と、
前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンを決定する決定部と、
前記決定された分類パターンを前記プロセス実行装置に送信する送信部と、を備え、
前記プロセス実行装置は、
前記決定された分類パターンを前記プロセススケジューリング装置から受信する受信部と、
前記受信した分類パターンに基づいて、アプリケーションプログラムが生成する複数のプロセスを実行するプロセス実行部と、を備える、プロセス実行システム。
【０１４３】
（付記１８）
前記プロセススケジューリング装置は、
前記分類パターンに含まれるプロセスタイプの各々に重み付けを行う重み変数の集合である重み変数セットを複数生成する変数生成部をさらに備え、
前記評価部は、前記分類パターンと前記重み変数セットとの組み合わせ毎に、前記評価値を決定し、
前記決定部は、前記決定された評価値に基づいて、前記複数のプロセスに対する分類パターンおよび重み変数セットを決定し、
前記送信部は、前記決定された分類パターンおよび重み変数セットを送信し、
前記受信部は、前記決定された分類パターンおよび重み変数セットを受信し、
前記プロセス実行部は、前記受信した分類パターンおよび重み変数セットに基づいて、前記アプリケーションプログラムが生成する複数のプロセスを実行する、付記１７に記載のプロセス実行システム。
【符号の説明】
【０１４４】
１０、２０  プロセススケジューリング装置
１１、２２  パターン生成部
１２、２６  評価部
１３、２７  決定部
２１  プロセス生成部
２３  変数生成部
２４、３２  記憶部
２５  算出部
２８  送信部
２９、３３  プロセス実行部
３０  プロセス実行装置
３１  受信部
３３  プロセス実行部
１００  プロセス実行システム
【図１】
2019106120.tif 000006
【図２】
2019106120.tif 000007
【図３】
2019106120.tif 000008
【図４】
2019106120.tif 000009
【図５】
2019106120.tif 000010
【図６】
2019106120.tif 000011
【図７】
2019106120.tif 000012
【図８】
2019106120.tif 000013
【図９】
2019106120.tif 000014
【図１０】
2019106120.tif 000015
【図１１】
2019106120.tif 000016