(57)【特許請求の範囲】
【請求項１】
監視対象のロックについて、ロック区間内の平均キャッシュミス回数とロック頻度を取得し、システムに接続されているプロセッサについてＣＰＵ使用率を取得すると共に、汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を取得するインターバル情報採取手段と、
前記監視対象のロックについて、前記平均キャッシュミス回数、前記ロック頻度、前記ＣＰＵ使用率、及び前記プロセスの待ち時間の合計時間に基づいて、排他処理専用プロセッサを割り当てるロックを決定する負荷状況分析手段と、
前記排他処理専用プロセッサの割り当てに従って、前記排他処理専用プロセッサに割り当てるロックの切り替えを行う専用プロセッサ切替手段と、を備えたマルチプロセッサ。
【請求項２】
請求項１に記載のマルチプロセッサにおいて、
前記負荷状況分析手段は、前記プロセスの待ち時間の合計時間が閾値を上回った場合に、前記排他処理専用プロセッサの少なくとも１つを汎用プロセッサに切り替えるように決定する、マルチプロセッサ。
【請求項３】
請求項１に記載のマルチプロセッサにおいて、
前記負荷状況分析手段は、前記ロック頻度と前記平均キャッシュミスヒット回数を乗じた値に基づいて、前記排他処理専用プロセッサに割り当てるロックを決定する、マルチプロセッサ。
【請求項４】
監視対象のロックについて、ロック区間内の平均キャッシュミス回数とロック頻度を取得し、システムに接続されているプロセッサについてＣＰＵ使用率を取得すると共に、汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を取得し、
前記監視対象のロックについて、前記平均キャッシュミス回数、前記ロック頻度、前記ＣＰＵ使用率、及び前記プロセスの待ち時間の合計時間に基づいて、排他処理専用プロセッサを割り当てるロックを決定し、
前記排他処理専用プロセッサの割り当てに従って、前記排他処理専用プロセッサに割り当てるロックの切り替えを行う、プロセッサ切り替え方法。
【請求項５】
コンピュータを、
監視対象のロックについて、ロック区間内の平均キャッシュミス回数とロック頻度を取得し、システムに接続されているプロセッサについてＣＰＵ使用率を取得すると共に、汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を取得するインターバル情報採取手段と、
前記監視対象のロックについて、前記平均キャッシュミス回数、前記ロック頻度、前記ＣＰＵ使用率、及び前記プロセスの待ち時間の合計時間に基づいて、排他処理専用プロセッサを割り当てるロックを決定する負荷状況分析手段と、
前記排他処理専用プロセッサの割り当てに従って、前記排他処理専用プロセッサに割り当てるロックの切り替えを行う専用プロセッサ切替手段と、して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム、プロセッサ切り替え方法、及びプログラムに関するものである。
【背景技術】
【０００２】
従来の繁忙ロックに排他処理専用プロセッサを割り当てるマルチプロセッサシステムの例が特許文献１に記載されている。特許文献１には、プロセッサ毎にキャッシュメモリを備える複数のプロセッサからなるマルチプロセッサシステムにおいて、プロセス毎に特定のプロセッサで実行させるという制御を行うのではなく、繁忙ロック対象資源利用処理を特定のプロセッサだけで実行するように制御することを特徴とするマルチプロセッサシステムが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２４８６６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に記載のマルチプロセッサシステムは、システムの立ち上げ時に繁忙ロックアドレスと排他処理専用プロセッサ番号を設定し、システム運用中に設定を解除することは行っていない。このため、運用時間帯によって当該ロックのロック頻度が少ない場合に、ロック区間を排他処理専用プロセッサで実行することによるキャッシュヒット率の向上の効果よりも、ロック区間の開始／終了時に、当該プロセスが汎用プロセッサと排他処理専用プロセッサ間を移動する時間の方が上回り、逆にシステムのスループットが低下する。また、当該ロック区間以外の処理が増加した場合に、汎用プロセッサのＣＰＵネックによりシステムのスループットが低下する。
【０００５】
そこで、本発明の目的は、システムのスループットを低下させずに、繁忙ロックに排他処理専用プロセッサを割り当てるマルチプロセッサシステムを得ることである。
【課題を解決するための手段】
【０００６】
本発明に係るマルチプロセッサシステムは、監視対象のロックについて、ロック区間内の平均キャッシュミス回数とロック頻度を取得し、システムに接続されているプロセッサについてＣＰＵ使用率を取得すると共に、汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を取得するインターバル情報採取手段と、前記監視対象のロックについて、前記平均キャッシュミス回数、前記ロック頻度、前記ＣＰＵ使用率、及び前記プロセスの待ち時間の合計時間に基づいて、排他処理専用プロセッサを割り当てるロックを決定する負荷状況分析手段と、前記排他処理専用プロセッサの割り当てに従って、前記排他処理専用プロセッサに割り当てるロックの切り替えを行う専用プロセッサ切替手段と、を備えたものである。
【発明の効果】
【０００７】
本発明によれば、システムのスループットを低下させずに、繁忙ロックに排他処理専用プロセッサを割り当てるマルチプロセッサシステムを得ることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態による、コンピュータの構成を示す図である。
【図２】繁忙ロック情報格納領域に格納される情報を示す図である。
【図３】監視ロック情報格納領域に格納される情報を示す図である。
【図４】プロセッサ情報格納領域に格納される情報を示す図である。
【図５】システム情報格納領域に格納される情報を示す図である。
【図６】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図７】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図８】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図９】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１０】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１１】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１２】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１３】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１４】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１５】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１６】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１７】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【図１８】本発明の実施の形態による、コンピュータの動作のフローチャートである。
【発明を実施するための形態】
【０００９】
次に、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。
図１は、実施の形態１による、コンピュータ（マルチプロセッサシステム）１の構成を示す図である。図に示すように、コンピュータ１は、ＨＷ（hardware）２とＯＳ（Operating System）３を備えている。ＨＷ２は、ＣＰＵ（Central Processing Unit）４と、キャッシュメモリ５を備えている。
【００１０】
ＯＳ３は、汎用プロセスキュー１０、繁忙ロック専用プロセスキュー２０、繁忙ロック情報格納領域３０、監視ロック情報格納領域４０、プロセッサ情報格納領域５０、システム情報格納領域６０、初期設定手段１００、プロセス開始手段１１０、実行処理選択手段１２０、汎用プロセス実行手段１３０、繁忙ロック実行手段１４０、監視手段１５０、インターバル情報採取手段１６０、負荷状況分析手段１７０、専用プロセッサ切替手段１８０、専用プロセッサ解除手段１９０、及び専用プロセッサ設定手段２００を備えている。
【００１１】
汎用プロセスキュー１０には、繁忙ロック対象資源利用処理以外の処理の実行を待機しているプロセスに関する情報（当該プロセスのプロセス番号と当該プロセスが割り当てられているプログラム中の次に実行すべき命令の命令アドレスとの組）である汎用プロセス情報がキュー形式で登録されている。
【００１２】
繁忙ロック専用プロセスキュー２０には、排他処理専用プロセッサが割り当てられているロック毎に存在し、繁忙ロック対象資源利用処理の実行を待機しているプロセスに関する情報（当該プロセスのプロセス番号と当該プロセスが割り当てられているプログラム中の次に実行すべき命令の命令アドレスとの組）である繁忙ロック専用プロセス情報がキュー形式で登録されている。
【００１３】
繁忙ロック情報格納領域３０には、図２に示すように、排他処理専用プロセッサが割り当てられているロック毎に、当該ロックのロックアドレスと、当該ロック区間を専用に実行する排他処理専用プロセッサのプロセッサ番号と、当該ロックの繁忙ロック専用プロセスキューのアドレスが格納される。
【００１４】
監視ロック情報格納領域４０には、図３に示すように、監視対象のロック毎に、当該ロックのロックアドレスと、排他処理専用プロセッサが割り当てられているか否かを示す専用ロックフラグと、排他処理専用プロセッサが割り当てられている場合に、当該ロック区間を専用に実行する排他処理専用プロセッサのプロセッサ番号と、当該ロックに排他処理専用プロセッサが割り当てられていない場合に、当該ロック区間実行中にアクセスしたメモリが他プロセッサのキャッシュ上に存在しキャッシュミスヒットが発生した場合のロック区間内平均キャッシュミスヒット回数と、当該ロックのロック頻度と、監視を行った結果、排他処理専用プロセッサに割り当てるロックであるか否かを示す新専用ロックフラグが格納される。
【００１５】
プロセッサ情報格納領域５０には、図４に示すように、システムに接続されているプロセッサ毎に、当該プロセッサのプロセッサ番号と、当該プロセッサのＣＰＵ使用率と、当該プロセッサが排他処理専用プロセッサであるか否かを示す専用プロセッサフラグと、当該プロセッサが排他処理専用プロセッサである場合に、当該プロセッサが排他処理を専用に実行するロックの監視ロック情報格納領域４０中の何番目のロックであるかを示すロック番号が格納される。
【００１６】
システム情報格納領域６０には、図５に示すように、システム内の排他処理専用プロセッサの台数と、汎用プロセスキュー上でＣＰＵ待ちのプロセスの待ち時間の合計が格納される。
【００１７】
初期設定手段１００は、システム立ち上げ時に、汎用プロセスキュー１０を空に設定し、監視ロック情報格納領域４０に監視対象のロックのロックアドレスを設定し、プロセッサ情報格納領域５０にシステムに接続されているプロセッサのプロセッサ番号を設定し、システム情報格納領域６０と繁忙ロック情報格納領域３０を初期化（クリア）する。
【００１８】
プロセス開始手段１１０は、ユーザからプログラムの開始が指示された時に、当該プログラムにプロセス番号を割り当て、当該プロセス番号と当該プログラムの開始命令アドレス（ここでいう"開始命令アドレス"とは、プログラムの先頭アドレス、または、プログラムの実行を再開するアドレス（例えばアンロック命令の次の命令）の両方の意味をもつ）との組からなる汎用プロセス情報を汎用プロセスキュー１０に登録する。
【００１９】
実行処理選択手段１２０は、繁忙ロック情報格納領域３０を参照し、自プロセッサが繁忙ロック専用プロセッサであるか否かを判定し、自プロセッサが繁忙ロック専用プロセッサである場合には繁忙ロック実行手段１４０に制御を渡し、自プロセッサが繁忙ロック専用プロセッサでない場合には汎用プロセス実行手段１３０に制御を渡す。
【００２０】
汎用プロセス実行手段１３０は、汎用プロセスキュー１０が空であれば、実行処理選択手段１２０に制御を渡し、汎用プロセスキュー１０が空でなければ、汎用プロセスキュー１０から汎用プロセス情報を取り出し、当該汎用プロセス情報で特定される開始命令アドレスの命令から順に当該汎用プロセス情報で特定されるプロセスが割り当てられているプログラム中の各命令を実行し、各命令の実行時に、当該命令が繁忙ロック情報格納領域３０内の繁忙ロックアドレスで特定される繁忙ロックに対するロック命令であれば当該命令を実行せずに当該プロセス番号と当該命令の命令アドレスとの組を繁忙ロック専用プロセス情報として当該繁忙ロックの繁忙ロック専用プロセスキュー２０に登録する。
【００２１】
繁忙ロック実行手段１４０は、当該プロセッサに設定されている繁忙ロックの繁忙ロック専用プロセスキュー２０が空であれば、実行処理選択手段１２０に制御を渡し、繁忙ロック専用プロセスキュー２０が空でなければ、繁忙ロック専用プロセスキュー２０から繁忙ロック専用プロセス情報を取り出し、当該繁忙ロック専用プロセス情報で特定される開始命令アドレスの命令から順に当該繁忙ロック専用プロセス情報で特定されるプロセスが割り当てられているプログラム中の各命令を実行し、各命令の実行時に、当該命令が繁忙ロック情報格納領域３０内の当該プロセッサに設定されている繁忙ロックに対するアンロック命令であれば当該命令を実行後に当該プロセス番号と当該命令の次の命令アドレスとの組を汎用プロセス情報として汎用プロセスキュー１０に登録する。
【００２２】
監視手段１５０は、一定のインターバルで起動され、インターバル情報採取手段１６０、負荷状況分析手段１７０、専用プロセッサ切替手段１８０を順に呼び出す。
【００２３】
インターバル情報採取手段１６０は、監視手段１５０から呼び出され、監視ロック情報格納領域４０に格納されている監視ロックについて、ＣＰＵ命令によりロック区間内の平均キャッシュミス回数とロック頻度を読み出し、読み出した情報を監視ロック情報格納領域４０に格納し、ＣＰＵ命令によりシステムに接続されているプロセッサのＣＰＵ使用率を読み出し、読み出した情報をプロセッサ情報格納領域５０に格納し、ＣＰＵ命令により汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計を読み出し、読み出した情報をシステム情報格納領域６０に格納する。
【００２４】
負荷状況分析手段１７０は、監視手段１５０から呼び出され、監視ロック情報格納領域４０に格納されている平均キャッシュミス回数とロック頻度、プロセッサ情報格納領域５０に格納されているＣＰＵ使用率、及び、システム情報格納領域６０に格納されている汎用プロセスキュー上でＣＰＵ待ちのプロセスの待ち時間の合計をもとに、排他処理専用プロセッサを割り当てるロックを決定し、監視ロック情報格納領域４０に格納する。
【００２５】
専用プロセッサ切替手段１８０は、監視手段１５０から呼び出され、監視ロック情報格納領域４０を参照し、排他処理専用プロセッサの割り当てを解除するロックがある場合、専用プロセッサ解除手段１９０を呼び出し、排他処理専用プロセッサを新たに割り当てるロックがある場合、専用プロセッサ設定手段２００を呼び出し、排他処理専用プロセッサの解除／設定に従って、監視ロック情報格納領域４０、プロセッサ情報格納領域５０、システム情報格納領域６０を更新する。
【００２６】
専用プロセッサ解除手段１９０は、専用プロセッサ切替手段１８０から呼び出され、排他処理専用プロセッサの割り当てを解除するロックの繁忙ロック専用プロセスキュー２０にキューイングされている繁忙ロック専用プロセス情報に格納されているプロセス番号と命令アドレスとの組を汎用プロセス情報として汎用プロセスキュー１０に登録し、排他処理専用プロセッサの割り当てを解除するロックの繁忙ロック専用プロセスキュー２０を空に設定し、繁忙ロック情報格納領域３０に格納されている当該ロックの情報を削除する。
【００２７】
専用プロセッサ設定手段２００は、専用プロセッサ切替手段１８０から呼び出され、新たに排他処理専用プロセッサの割り当てを行うロックの繁忙ロック専用プロセスキュー２０を空に設定し、繁忙ロック情報格納領域３０に当該ロックの情報を追加する。
【００２８】
次に、図６〜図１６のフローチャートを参照して本実施の形態の動作について詳細に説明する。
まず、図６を用いて初期設定手段１００の動作について説明する。
初期設定手段１００は、システム立ち上げ時に、汎用プロセスキュー１０を空に設定する（ステップ１０１）。
【００２９】
次に、初期設定手段１００は、監視ロック情報格納領域４０を初期化（クリア）した後、ロックアドレスに、監視対象のロックのロックアドレスを設定する（ステップ１０２）。
【００３０】
次に、初期設定手段１００は、プロセッサ情報格納領域５０を初期化（クリア）した後、プロセッサ番号に、システムに接続されているプロセッサのプロセッサ番号を設定する（ステップ１０３）。
【００３１】
次に、初期設定手段１００は、システム情報格納領域６０を初期化（クリア）する（ステップ１０４）。さらに、 繁忙ロック情報格納領域３０を初期化（クリア）する（ステップ１０５）。
【００３２】
次に、図７を用いてプロセス開始手段１１０の動作について説明する。
プロセス開始手段１１０は、ユーザからプログラムの開始が指示されたら、当該プログラムにプロセス番号を割り当てる（ステップ１１１）。
【００３３】
次に、プロセス開始手段１１０は、当該プロセス番号と当該プログラムの開始命令アドレスとの組からなる汎用プロセス情報を汎用プロセスキュー１０に登録する（ステップ１１２）。
【００３４】
次に、図８を用いて実行処理選択手段１２０の動作について説明する。
実行処理選択手段１２０は、繁忙ロック情報格納領域３０中の各エントリのプロセッサ番号を参照し、自プロセッサのプロセッサ番号と同一のプロセッサ番号が存在する場合には（ステップ１２１：Ｙｅｓ）、ステップ１２２に移行して繁忙ロック実行手段１４０に制御を渡す。一方、自プロセッサのプロセッサ番号と同一のプロセッサ番号が存在しない場合には（ステップ１２１：Ｎｏ）、ステップ１２３に移行して汎用プロセス実行手段１３０に制御を渡す。
【００３５】
次に、図９を用いて汎用プロセス実行手段１３０の動作について説明する。
汎用プロセス実行手段１３０は、汎用プロセスキュー１０が空であれば（ステップ１３１：Ｙｅｓ）、ステップ１３８に移行し、汎用プロセスキュー１０が空でなければ（ステップ１３１：Ｎｏ）、ステップ１３２に移行する。
【００３６】
汎用プロセス実行手段１３０は、汎用プロセスキュー１０から汎用プロセス情報を取り出し、当該汎用プロセス情報で特定されるプロセス番号と開始命令アドレスを取り出す（ステップ１３２)。
【００３７】
汎用プロセス実行手段１３０は、ステップ１３２またはステップ１３６で取り出した命令が、ロック命令、かつ、繁忙ロック情報格納領域３０中の各エントリの繁忙ロックアドレスの中に、当該命令のロックアドレスと同一のロックアドレスが存在する場合は（ステップ１３３：Ｙｅｓ）、ステップ１３７に移行し、存在しない場合は（ステップ１３３：Ｎｏ）、ステップ１３４に移行する。
【００３８】
ステップ１３４では、汎用プロセス実行手段１３０は、ステップ１３２またはステップ１３６で取り出した命令を実行する。
さらに、プログラムの最後の命令であれば（ステップ１３５：Ｙｅｓ）、ステップ１３８に移行し、最後の命令でなければ（ステップ１３５：Ｎｏ）、ステップ１３６に移行する。
【００３９】
ステップ１３６では、命令アドレスを次の命令に進めて、命令を取り出し、判断ステップ１３３に移行する。
【００４０】
ステップ１３７では、プロセス番号と開始命令アドレスの組を繁忙ロック専用プロセス情報として、繁忙ロック情報格納領域３０中の当該ロックアドレスのエントリの繁忙ロック専用プロセスキューアドレスで示される繁忙ロック専用プロセスキュー２０に登録し、ステップ１３８に移行する。ステップ１３８において、実行処理選択手段１２０に制御を渡す。
【００４１】
次に、図１０を用いて繁忙ロック実行手段１４０の動作について説明する。
繁忙ロック実行手段１４０は、当該プロセッサに設定されている繁忙ロックの繁忙ロック専用プロセスキュー２０が空であれば（ステップ１４１：Ｙｅｓ）、ステップ１４９に移行し、繁忙ロック専用プロセスキュー２０が空でなければ（ステップ１４１：Ｎｏ）、ステップ１４２に移行する。
【００４２】
ステップ１４２では、当該プロセッサに設定されている繁忙ロックの繁忙ロック専用プロセスキュー２０から繁忙ロック専用プロセス情報を取り出し、当該繁忙ロック専用プロセス情報で特定されるプロセス番号と開始命令アドレスを取り出す。
【００４３】
次に、ステップ１４２またはステップ１４６で取り出した命令が、アンロック命令、かつ、アンロックを行うロックアドレスが繁忙ロック情報格納領域３０内の当該プロセッサに設定されている繁忙ロックの繁忙ロックアドレスと一致している場合は（ステップ１４３：Ｙｅｓ）、ステップ１４７に移行し、一致しない場合は（ステップ１４３：Ｎｏ）、ステップ１４４に移行する。
【００４４】
ステップ１４４では、ステップ１４２またはステップ１４６で取り出した命令を実行する。
次に、ステップ１４４で実行した命令がプログラムの最後の命令であれば（ステップ１４５：Ｙｅｓ）、ステップ１４９に移行し、最後の命令でなければ（ステップ１４５：Ｎｏ）、ステップ１４６に移行する。
【００４５】
ステップ１４６では、命令アドレスを次の命令に進めて、命令を取り出し、判断ステップ１４３に移行する。
【００４６】
ステップ１４７では、ステップ１４２またはステップ１４６で取り出した命令（アンロック命令）を実行する。
次に、プロセス番号とアンロック命令の次の命令アドレスの組を汎用プロセス情報として、汎用プロセスキュー１０に登録し、ステップ１４９に移行する（ステップ１４８）。
ステップ１４９では、実行処理選択手段１２０に制御を渡す。
【００４７】
次に、図１１を用いて監視手段１５０の動作について説明する。
監視手段１５０は、インターバル情報採取手段１６０を呼び出す（ステップ１５１）。
次に、負荷状況分析手段１７０を呼び出す（ステップ１５２）。
次に、専用プロセッサ切替手段１８０を呼び出す（ステップ１５３）。
さらに、監視手段１５０は、監視インターバル時間ウェイトした後、ステップ１５１に制御を渡す（ステップ１５４）。
【００４８】
次に、図１２を用いてインターバル情報採取手段１６０の動作について説明する。
インターバル情報採取手段１６０は、監視ロック情報格納領域４０に格納されている監視ロックのうち、専用ロックフラグがＯＦＦの各ロックについて、ＣＰＵ命令で、ロック区間内平均キャッシュミスヒット回数とロック頻度を取得し、監視ロック情報格納領域４０中の当該ロックのロック区間内平均キャッシュミスヒット回数とロック頻度に格納する（ステップ１６１）。
【００４９】
次に、監視ロック情報格納領域４０に格納されている監視ロックのうち、専用ロックフラグがＯＮの各ロックについて、ＣＰＵ命令でロック頻度を取得し、監視ロック情報格納領域４０中の当該ロックのロック頻度に格納する（ステップ１６２）。
【００５０】
次に、プロセッサ情報格納領域５０に格納されている各プロセッサについて、ＣＰＵ命令によりＣＰＵ使用率を読み出し、プロセッサ情報格納領域５０中の当該プロセッサのＣＰＵ使用率として格納する（ステップ１６３）。
【００５１】
さらに、ＣＰＵ命令により汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計を読み出し、読み出した情報をシステム情報格納領域６０に格納し、監視手段１５０へ戻る（ステップ１６４）。
【００５２】
次に、図１３、１４を用いて負荷状況分析手段１７０の動作について説明する。
負荷状況分析手段１７０は、システム情報格納領域６０中の汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計が閾値αより大きい場合（ステップ１７１：Ｙｅｓ）、ステップ１７５に移行し、待ち時間の合計が閾値α以下の場合は（ステップ１７１：Ｎｏ）、ステップ１７２に移行する。
【００５３】
ステップ１７２において、負荷状況分析手段１７０は、プロセッサ情報格納領域５０中の専用プロセッサフラグがＯＦＦのプロセッサのプロセッサ台数を、変数ｒにセットする。
【００５４】
次に、負荷状況分析手段１７０は、プロセッサ情報格納領域５０中の専用プロセッサフラグがＯＦＦのプロセッサのＣＰＵ使用率の平均を、変数ｓにセットする（ステップ１７３）。
【００５５】
次に、負荷状況分析手段１７０は、システム情報格納領域６０中の専用プロセッサ台数に、変数（ｒ×（１−変数ｓ））を加算し、小数点以下を切り捨てした値を、変数pにセットする（ステップ１７４）。
【００５６】
ステップ１７５では、負荷状況分析手段１７０は、システム情報格納領域６０中の専用プロセッサ台数を１減算した値を変数ｐにセットし、ステップ１７６に移行する。
ステップ１７６では、監視ロック情報格納領域４０中の全ロックについて、新専用ロックフラグをＯＦＦに設定し、さらにステップ１７７で変数ｍに１をセットする。
【００５７】
負荷状況分析手段１７０は、変数ｍが変数ｐ以下の場合には（ステップ１７８：Ｙｅｓ）、ステップ１７９に移行し、変数ｍが変数ｐより大きい場合には（ステップ１７８：Ｎｏ）、処理を終了する。
【００５８】
ステップ１７９では、変数ｔ、変数ｕ、変数ｎにそれぞれ０をセットする。
次に、ステップ１７Ａにおいて変数ｎの値を１加算する。
【００５９】
次に、負荷状況分析手段１７０は、監視ロック情報格納領域４０中のｎ番目のロックについて、新専用ロックフラグがＯＦＦ、かつロック区間内平均キャッシュミスヒット回数が閾値βより大きい、かつロック区間内平均キャッシュミスヒット回数にロック頻度を乗じた値が閾値γ以上、かつロック区間内平均キャッシュミスヒット回数にロック頻度を乗じた値が変数ｔより大きい場合に（ステップ１７Ｂ：Ｙｅｓ）、ステップ１７Ｃに移行し、それ以外の場合は（ステップ１７Ｂ：Ｎｏ）、ステップ１７Ｄに移行する。
【００６０】
ステップ１７Ｃにおいて、負荷状況分析手段１７０は、変数ｕに変数ｎの値をセットし、変数ｔに、監視ロック情報格納領域４０中のｎ番目のロックのロック区間内平均キャッシュミスヒット回数にロック頻度を乗じた値をセットする。
【００６１】
次に、監視ロック情報格納領域４０中のｎ番目のロックが最後の監視ロックの場合（ステップ１７Ｄ：Ｙｅｓ）、判断ステップ１７Ｅに移行し、最後の監視ロックでない場合は（ステップ１７Ｄ：Ｎｏ）、ステップ１７Ａに移行する。
【００６２】
ステップ１７Ｅにおいて、変数ｕの値が０場合（Ｙｅｓ）、ステップ１７Ｇに移行し、それ以外の場合は（Ｎｏ）、ステップ１７Ｆに移行する。
ステップ１７Ｆでは、監視ロック情報格納領域４０中の、変数ｕ番目のロックの新専用ロックフラグをＯＮにする。さらに、ステップ１７Ｇにおいて、変数ｍの値を１加算する。
【００６３】
なお、閾値αは、汎用プロセッサのＣＰＵ待ちで、プロセスが待たされる時間の最大許容時間もとに決定する。閾値βは、キャッシュミスヒット解決時間と、ロック区間の開始／終了時に、当該プロセスが汎用プロセッサと排他処理専用プロセッサ間を移動する移動時間をもとに決定する。閾値γは、キャッシュミスヒット解決時間と、ロック区間の開始／終了時に、当該プロセスが汎用プロセッサと排他処理専用プロセッサ間を移動する移動時間と、繁忙ロックの目安となるロックの頻度をもとに決定する。
【００６４】
次に、図１５、１６を用いて専用プロセッサ切替手段１８０の動作について説明する。
専用プロセッサ切替手段１８０は、変数ｎに０をセットする（ステップ１８１）。
次に、変数ｎの値を１加算する（ステップ１８２）。
【００６５】
次に、専用プロセッサ切替手段１８０は、監視ロック情報格納領域４０中のｎ番目のロックについて、専用ロックフラグがＯＮ、かつ新専用ロックフラグがＯＦＦであれば（ステップ１８３：Ｙｅｓ）、ステップ１８４に移行し、それ以外の場合は、ステップ１８７に移行する。
【００６６】
ステップ１８４では、専用プロセッサ切替手段１８０は、監視ロック情報格納領域４０中のｎ番目のロックのロックアドレスを指定して、専用プロセッサ解除手段１９０を呼び出す（ステップ１８４）。
【００６７】
次に、監視ロック情報格納領域４０中のｎ番目のロックのプロセッサ番号と一致するプロセッサ情報格納領域５０中のプロセッサの専用プロセッサフラグをＯＦＦに設定する（ステップ１８５）。
【００６８】
次に、監視ロック情報格納領域４０中のｎ番目のロックの専用ロックフラグをＯＦＦに設定する（ステップ１８６）。
【００６９】
次に、監視ロック情報格納領域４０中のｎ番目のロックが、最後の監視ロックの場合（ステップ１８７：Ｙｅｓ）、ステップ１８８に移行し、最後の監視ロックでない場合は（ステップ１８７：Ｎｏ）、ステップ１８２に移行する。
【００７０】
ステップ１８８において、専用プロセッサ切替手段１８０は変数ｎに０をセットし、次にステップ１８９で変数ｎの値を１加算する。
【００７１】
次に、監視ロック情報格納領域４０中のｎ番目のロックについて、専用ロックフラグがＯＦＦ、かつ新専用ロックフラグがＯＮであれば（ステップ１８Ａ：Ｙｅｓ）、ステップ１８Ｂに移行し、それ以外の場合は（ステップ１８Ａ：Ｎｏ）、判断ステップ１８Ｅに移行する。
【００７２】
ステップ１８Ｂにおいて、専用プロセッサ切替手段１８０は、監視ロック情報格納領域４０中のｎ番目のロックのロックアドレスと、プロセッサ情報格納領域５０中の専用プロセッサフラグがＯＦＦのプロセッサのプロセッサ番号を指定して、専用プロセッサ設定手段２００を呼び出す。
【００７３】
次に、専用プロセッサ設定手段２００呼び出し時に指定したプロセッサのプロセッサ情報格納領域５０中のプロセッサの専用プロセッサフラグをＯＮにセットし、ロック番号にｎをセットする（ステップ１８Ｃ）。
【００７４】
次に、監視ロック情報格納領域４０中のｎ番目のロックの専用ロックフラグをＯＮにセットし、プロセッサ番号に専用プロセッサ設定手段２００呼び出し時に指定したプロセッサ番号をセットする（ステップ１８Ｄ）。
【００７５】
次に、監視ロック情報格納領域４０中のｎ番目のロックが、最後の監視ロックの場合（ステップ１８Ｅ：Ｙｅｓ）、ステップ１８Ｆに移行し、最後の監視ロックでない場合は（ステップ１８Ｅ：Ｎｏ）、ステップ１８９に移行する。
【００７６】
ステップ１８Ｆにおいて、プロセッサ情報格納領域５０中の専用プロセッサフラグがＯＮのプロセッサ台数を、システム情報格納領域６０の専用プロセッサ台数にセットする（ステップ１８Ｆ）。
【００７７】
次に、図１７を用いて専用プロセッサ解除手段１９０の動作について説明する。
専用プロセッサ解除手段１９０は、指定されたロックアドレスと一致する繁忙ロック情報格納領域３０中のエントリの繁忙ロック専用プロセスキューアドレスからキューイングされている繁忙ロック専用プロセス情報に格納されているプロセス番号と開始命令アドレスとの組を汎用プロセス情報として汎用プロセスキュー１０に登録しなおす（ステップ１９１）。
【００７８】
次に、専用プロセッサ解除手段１９０は、指定されたロックアドレスと一致する繁忙ロック情報格納領域３０中のエントリの繁忙ロック専用プロセスキューアドレスからキューイングされている繁忙ロック専用プロセス情報をデキューする（ステップ１９２）。
【００７９】
次に、デキューした繁忙ロック専用プロセスキュー２０を解放する（ステップ１９３）。
さらに、指定されたロックアドレスと一致する繁忙ロック情報格納領域３０中のエントリを削除し、専用プロセッサ切替手段１８０へ処理を戻す（ステップ１９４）。
【００８０】
次に、図１８を用いて専用プロセッサ設定手段２００の動作について説明する。
専用プロセッサ設定手段２００は、繁忙ロック専用プロセスキュー２０を新たに確保する（ステップ２０１）。
【００８１】
次に、繁忙ロック情報格納領域３０の空きエントリに、指定されたロックアドレスと、プロセッサ番号と、ステップ２０１で確保した繁忙ロック専用プロセスキュー２０のアドレスをセットする（ステップ２０２）。
【００８２】
次に、専用プロセッサ設定手段２００は、ステップ２０１で確保した繁忙ロック専用プロセスキュー２０を空にし、専用プロセッサ切替手段１８０へ処理を戻す（ステップ２０３）。
【００８３】
以上のように、本実施の形態によれば、一定のインターバル毎に繁忙ロックのロック頻度を監視し、ロック頻度が閾値より下がった場合に、排他処理専用プロセッサから汎用プロセッサに切り替えを行うようにしたので、運用時間帯によって繁忙ロックのロック頻度が少ない場合に、ロック区間を排他処理専用プロセッサで実行することによるキャッシュヒット率の向上の効果よりも、ロック区間の開始／終了時に、当該プロセスが汎用プロセッサと排他処理専用プロセッサ間を移動する時間の方が上回り、逆にシステムのスループットが低下することを防止することができる。
【００８４】
また、一定のインターバル毎に汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を監視し、合計時間が閾値を上回った場合に、排他処理専用プロセッサのうちの１台を、汎用プロセッサに切り替えるようにしたので、繁忙ロック区間以外の処理が増加した場合に、汎用プロセッサのＣＰＵネックによりシステムのスループットが低下することを防止することができる。
【００８５】
また、一定のインターバル毎に監視対象のロックについて、ロック頻度やキャッシュミスヒット回数を監視し、ロック頻度とキャッシュミスヒット回数を乗じた値をもとに、より効果があるロックを排他処理専用プロセッサに割り当てるようにしたので、排他処理専用プロセッサを割り当てている繁忙ロックよりも、ロック頻度やキャッシュミスヒット回数が多いロックが現れた場合に、排他処理専用プロセッサを割り当てているロックを切り替えることができる。
【００８６】
また、一定のインターバル毎に汎用プロセッサのＣＰＵ使用率を監視し、汎用プロセッサに１台分以上のＣＰＵ資源の空きがある場合に、ＣＰＵ資源の空きがある台数分、排他処理専用プロセッサに割り当てるようにしたので、汎用プロセッサのＣＰＵ負荷が下がった場合に、排他処理専用プロセッサを追加することができる。
【００８７】
本発明は、プロセッサ毎にキャッシュメモリを備える複数のプロセッサからなるマルチプロセッサシステムにおいて、特に汎用プロセッサを特定のロック区間のみ排他処理専用プロセッサに切り替える場合に適用できる。
【００８８】
上記の実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）監視対象のロックについて、ロック区間内の平均キャッシュミス回数とロック頻度を取得し、システムに接続されているプロセッサについてＣＰＵ使用率を取得すると共に、汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を取得するインターバル情報採取手段と、
前記監視対象のロックについて、前記平均キャッシュミス回数、前記ロック頻度、前記ＣＰＵ使用率、及び前記プロセスの待ち時間の合計時間に基づいて、排他処理専用プロセッサを割り当てるロックを決定する負荷状況分析手段と、
前記排他処理専用プロセッサの割り当てに従って、前記排他処理専用プロセッサに割り当てるロックの切り替えを行う専用プロセッサ切替手段と、を備えたマルチプロセッサ。
【００８９】
（付記２）付記１に記載のマルチプロセッサにおいて、
前記負荷状況分析手段は、前記プロセスの待ち時間の合計時間が閾値を上回った場合に、前記排他処理専用プロセッサの少なくとも１つを汎用プロセッサに切り替えるように決定する、マルチプロセッサ。
【００９０】
（付記３）付記１に記載のマルチプロセッサにおいて、
前記負荷状況分析手段は、前記ロック頻度と前記平均キャッシュミスヒット回数を乗じた値に基づいて、前記排他処理専用プロセッサに割り当てるロックを決定する、マルチプロセッサ。
【００９１】
（付記４）監視対象のロックについて、ロック区間内の平均キャッシュミス回数とロック頻度を取得し、システムに接続されているプロセッサについてＣＰＵ使用率を取得すると共に、汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を取得し、
前記監視対象のロックについて、前記平均キャッシュミス回数、前記ロック頻度、前記ＣＰＵ使用率、及び前記プロセスの待ち時間の合計時間に基づいて、排他処理専用プロセッサを割り当てるロックを決定し、
前記排他処理専用プロセッサの割り当てに従って、前記排他処理専用プロセッサに割り当てるロックの切り替えを行う、プロセッサ切り替え方法。
（付記５）コンピュータを、
監視対象のロックについて、ロック区間内の平均キャッシュミス回数とロック頻度を取得し、システムに接続されているプロセッサについてＣＰＵ使用率を取得すると共に、汎用プロセスキュー上でＣＰＵ待ちとなったプロセスの待ち時間の合計時間を取得するインターバル情報採取手段と、
前記監視対象のロックについて、前記平均キャッシュミス回数、前記ロック頻度、前記ＣＰＵ使用率、及び前記プロセスの待ち時間の合計時間に基づいて、排他処理専用プロセッサを割り当てるロックを決定する負荷状況分析手段と、
前記排他処理専用プロセッサの割り当てに従って、前記排他処理専用プロセッサに割り当てるロックの切り替えを行う専用プロセッサ切替手段と、して機能させるプログラム。
【符号の説明】
【００９２】
１  コンピュータ、２  ＨＷ、３  ＯＳ、４  ＣＰＵ、５  キャッシュメモリ、１０  汎用プロセスキュー、２０  繁忙ロック専用プロセスキュー、３０  繁忙ロック情報格納領域、４０  監視ロック情報格納領域、５０  プロセッサ情報格納領域、６０  システム情報格納領域、１００  初期設定手段、１１０  プロセス開始手段、１２０  実行処理選択手段、１３０  汎用プロセス実行手段、１４０  繁忙ロック実行手段、１５０  監視手段、１６０  インターバル情報採取手段、１７０  負荷状況分析手段、１８０  専用プロセッサ切替手段、１９０  専用プロセッサ解除手段、２００  専用プロセッサ設定手段
【図１】
0005477775.tif 000002
【図２】
0005477775.tif 000003
【図３】
0005477775.tif 000004
【図４】
0005477775.tif 000005
【図５】
0005477775.tif 000006
【図６】
0005477775.tif 000007
【図７】
0005477775.tif 000008
【図８】
0005477775.tif 000009
【図９】
0005477775.tif 000010
【図１０】
0005477775.tif 000011
【図１１】
0005477775.tif 000012
【図１２】
0005477775.tif 000013
【図１３】
0005477775.tif 000014
【図１４】
0005477775.tif 000015
【図１５】
0005477775.tif 000016
【図１６】
0005477775.tif 000017
【図１７】
0005477775.tif 000018
【図１８】
0005477775.tif 000019