(57)【要約】【課題】複数のＤＭＡ装置のいずれかにＤＭＡ依頼を自動的に振り分けること。【解決手段】管理情報記憶部２４が依頼元番号とＤＭＡ装置３を紐づける情報を記憶する。そして、ＤＭＡ依頼があると、振り分け部２６が、管理情報記憶部２４を参照し、管理情報記憶部２４に依頼元番号が記憶されている場合には、依頼元番号に紐づけられたＤＭＡ装置３にＤＭＡ依頼を振り分ける。一方、依頼元番号が記憶されていない場合には、振り分け部２６は、管理情報記憶部２４がＤＭＡ装置３に紐づけて記憶する依頼元番号の数に基づいて、依頼を振り分けるＤＭＡ装置３を決定する。そして、振り分け部２６は、決定したＤＭＡ装置３に紐づけて管理情報記憶部２４に依頼元番号を追加する。【選択図】図３
2020095416.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡ装置に紐づけてＤＭＡの依頼元を識別する識別子を記憶する管理情報記憶部と、
ＤＭＡの依頼があると、前記管理情報記憶部を参照し、依頼元の識別子を前記管理情報記憶部がＤＭＡ装置に紐づけて記憶する場合には、該ＤＭＡ装置に前記依頼を振り分け、依頼元の識別子を前記管理情報記憶部が記憶しない場合には、前記管理情報記憶部が該ＤＭＡ装置に紐づけて記憶する識別子の数に基づいて、前記依頼を振り分けるＤＭＡ装置を決定し、決定したＤＭＡ装置に紐づけて前記管理情報記憶部に依頼元の識別子を追加する振り分け部
を有することを特徴とする情報処理装置。
【請求項２】
前記管理情報記憶部は、前記識別子とともにＤＭＡのタイムアウト時間を記憶し、
前記振り分け部は、前記タイムアウト時間にさらに基づいて、前記依頼を振り分けるＤＭＡ装置を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
ＤＭＡ装置を振り分けた依頼に前記タイムアウト時間に基づくタイムアウトが発生した場合に、依頼元の振り分け先を他のＤＭＡ装置に変更して前記管理情報記憶部を更新する更新部をさらに有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記管理情報記憶部の更新を行うか否かを示す情報を更新フラグ記憶部に記憶し、
前記更新部は、前記更新フラグ記憶部が更新を行うことを示す情報を記憶する場合に、タイムアウトが発生すると、依頼元の振り分け先を他のＤＭＡ装置に変更して前記管理情報記憶部を更新することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記更新部は、前記更新フラグ記憶部が更新を行わないことを示す情報に変更された場合に、ＤＭＡ装置に振り分けられている依頼がない依頼元の識別子及びタイムアウト時間を前記管理情報記憶部から削除することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記タイムアウト時間に関する倍率を倍率記憶部に記憶し、
前記更新部は、前記タイムアウト時間に前記倍率を乗じた時間に基づくタイムアウトが発生した場合に、依頼元の振り分け先を他のＤＭＡ装置に変更して前記管理情報記憶部を更新することを特徴とする請求項３、４又は５に記載の情報処理装置。
【請求項７】
前記更新部は、前記管理情報記憶部に同じ更新が繰り返されるときに前記管理情報記憶部が記憶する情報を最適振り分け情報として特定することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
自装置が有するＣＰＵの周波数の低下を検出して前記倍率を変更する設定部をさらに有することを特徴とする請求項６又は７に記載の情報処理装置。
【請求項９】
コンピュータに、
ＤＭＡ装置に紐づけてＤＭＡの依頼元を識別する識別子を管理情報記憶部に記憶し、
ＤＭＡの依頼があると、前記管理情報記憶部を参照し、依頼元の識別子を前記管理情報記憶部がＤＭＡ装置に紐づけて記憶する場合には、該ＤＭＡ装置に前記依頼を振り分け、依頼元の識別子を前記管理情報記憶部が記憶しない場合には、前記管理情報記憶部が該ＤＭＡ装置に紐づけて記憶する識別子の数に基づいて、前記依頼を振り分けるＤＭＡ装置を決定し、決定したＤＭＡ装置に紐づけて前記管理情報記憶部に依頼元の識別子を追加する
処理を実行させることを特徴とするＤＭＡ装置のドライバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びＤＭＡ装置のドライバプログラムに関する。
【背景技術】
【０００２】
ＣＰＵ（Central  Processing  Unit）を使わずにバスを通じて周辺機器とメモリ間のデータ転送を直接行うＤＭＡ（Direct  Memory  Access）装置は、情報処理を行う情報処理装置、あるいは、データを記憶するストレージ装置等で広く使われている。なお、ストレージ装置は情報処理装置により実現される場合もあるので、以下では、情報処理装置及びストレージ装置の総称として、「情報処理装置」という用語を用いる。
【０００３】
各プログラムレイヤは、ＤＭＡ装置を利用してデータを転送する際、ＤＭＡ装置を動作させるＤＭＡ装置のデバイスドライバ（ＤＭＡドライバ）に処理を依頼する。ここで、「プログラムレイヤ」とは、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）機能、ＬＡＮ（Local  Area  Network）機能等の特定の機能を実現するプログラムのグループである。
【０００４】
情報処理装置は複数のＤＭＡ装置を備えるため、ＤＭＡドライバは、各プログラムレイヤからの依頼をいずれかのＤＭＡ装置に振り分ける。図８は、従来の振り分けを説明するための図である。図８において、「１−１」、「２−１」等はプログラムレイヤからのＤＭＡ依頼を識別する識別子である。「−」の前の値は依頼元のプログラムレイヤを示す番号であり、「−」の後の値は順番を示す。例えば、「１−１」は、「１」で識別されるプログラムレイヤからの１番目の依頼である。
【０００５】
「Ｔ１」、「Ｔ２」等はタイムアウト時間である。タイムアウト時間はプログラムレイヤで指定される。ディスクリプタテーブル９５は、転送に必要な転送先及び転送元のアドレス、転送サイズ等を含むディスクリプタが登録されるテーブルである。なお、図８では説明の便宜上、ディスクリプタをＤＭＡ依頼の識別子で表している。ＤＭＡ＃１〜ＤＭＡ＃３は、ＤＭＡ装置３である。ディスクリプタテーブル９５は、ＤＭＡ装置３毎にある。ＤＭＡ装置３は、ディスクリプタテーブル９５からディスクリプタを順番に取り出して実行する。
【０００６】
図８に示すように、ＤＭＡドライバは、最初のＤＭＡ依頼である「１−１」をＤＭＡ＃１に振り分け、次のＤＭＡ依頼である「２−１」をＤＭＡ＃２に振り分け、３番目のＤＭＡ依頼である「３−１」をＤＭＡ＃３に振り分ける。そして、ＤＭＡドライバは、４番目のＤＭＡ依頼である「４−１」をＤＭＡ＃１に振り分ける。
【０００７】
そして、ＤＭＡドライバは、５番目のＤＭＡ依頼である「１−２」をＤＭＡ＃２ではなく、ＤＭＡ＃１に振り分ける。ＤＭＡドライバは、追い越しが発生しないように、同じ依頼元からの依頼を同じＤＭＡ装置３に振り分ける。
【０００８】
図８に示した方法では、同じ依頼元からの依頼を同じＤＭＡ装置３に振り分けるので、依頼元毎に振り分け先のＤＭＡ装置３を記憶する必要があり、振り分け処理に時間がかかる。このため、依頼元番号にＤＭＡ装置３を括りつけて振り分けることが行われる。
【０００９】
図９は、依頼元番号にＤＭＡ装置３を括りつけた振り分けを説明するための図である。図９に示すように、ＤＭＡドライバは、依頼元番号が「１」であるＤＭＡ依頼「１−１」及び「１−２」をＤＭＡ＃１に振り分け、依頼元番号が「２」であるＤＭＡ依頼「２−１」をＤＭＡ＃２に振り分ける。また、ＤＭＡドライバは、依頼元番号が「３」及び「４」であるＤＭＡ依頼「３−１」、「３−２」、「４−１」及び「４−２」をＤＭＡ＃３に振り分ける。このように、振り分け処理を単純にすることで、振り分け処理を高速化することができる。
【００１０】
なお、ＤＭＡに関する従来技術として、メモリアクセスするＤＭＡ依頼を複数のＤＭＡキューから選択するアービタが、ＤＭＡキュー内のＤＭＡ依頼の数、ＤＭＡによるデータの移動量等を示す値と、タイムアウトの発生に基づき、ＤＭＡ依頼を選択する技術がある。この従来技術によれば、ＤＭＡによるメモリアクセスのレイテンシを低減することができる。
【００１１】
また、複数のＤＭＡ転送要求に対して予め規定された優先順位に応じてＤＭＡ転送を割り当て制御するＤＭＡ転送制御回路において、ＤＭＡ転送要求を受け付けてからＤＭＡ転送が割り当てられるまでの時間に基づいて優先順位を変更する従来技術がある。この従来技術によれば、ＤＭＡ転送の待ち時間を少なくして効率的なＤＭＡ転送を行うことができる。
【００１２】
また、複数のユーザ端末に映像及び音声をＤＭＡ転送する際に、ユーザ端末別に管理しておいたＤＭＡ処理情報を、ＤＭＡ実行順序を管理するためのＤＭＡ待ちキューに追加する従来技術がある。この従来技術によれば、ＤＭＡ待ちキューのＤＭＡ処理情報に基づいて、ユーザ端末間でＤＭＡ転送の開始タイミングを調整できるので、ＤＭＡ転送の遅れに起因して、ユーザ端末側で映像又は音声が途切れる、という問題を回避することができる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特表２００７−５２５８７６号公報
【特許文献２】特開２００３−１４１０５７号公報
【特許文献３】特開２００１−４５４５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
図９に示した従来技術には、複数のＤＭＡ装置３による処理ができるだけ均等になるようにプログラムレイヤ毎に振り分けるＤＭＡ装置３を決めることが困難であるという問題がある。また、プログラムレイヤの動作が変わるとＤＭＡ依頼も変わり、プログラムレイヤ毎のＤＭＡ装置３の振り分けも変える必要が生じる。
【００１５】
本発明は、１つの側面では、複数のＤＭＡ装置３のいずれかにＤＭＡ依頼を自動的に振り分けることを目的とする。
【課題を解決するための手段】
【００１６】
１つの態様では、情報処理装置は、管理情報記憶部と振り分け部とを有する。管理情報記憶部は、ＤＭＡ装置に紐づけてＤＭＡの依頼元を識別する識別子を記憶する。前記振り分け部は、ＤＭＡの依頼があると、前記管理情報記憶部を参照し、依頼元の識別子を前記管理情報記憶部がＤＭＡ装置に紐づけて記憶する場合には、該ＤＭＡ装置に前記依頼を振り分ける。一方、依頼元の識別子を前記管理情報記憶部が記憶しない場合には、前記振り分け部は、前記管理情報記憶部が該ＤＭＡ装置に紐づけて記憶する識別子の数に基づいて、前記依頼を振り分けるＤＭＡ装置を決定する。そして、前記振り分け部は、決定したＤＭＡ装置に紐づけて前記管理情報記憶部に依頼元の識別子を追加する。
【発明の効果】
【００１７】
１つの側面では、本発明は、複数のＤＭＡ装置３のいずれかにＤＭＡ依頼を自動的に振り分けることができる。
【図面の簡単な説明】
【００１８】
【図１Ａ】図１Ａは、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けを説明するための第１の図である。
【図１Ｂ】図１Ｂは、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けを説明するための第２の図である。
【図１Ｃ】図１Ｃは、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けを説明するための第３の図である。
【図１Ｄ】図１Ｄは、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けを説明するための第４の図である。
【図１Ｅ】図１Ｅは、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けを説明するための第５の図である。
【図１Ｆ】図１Ｆは、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けを説明するための第６の図である。
【図２】図２は、実施例に係るＮＡＳ装置の構成を示す図である。
【図３】図３は、ＤＭＡドライブ部の機能構成を示す図である。
【図４】図４は、管理テーブルの一例を示す図である。
【図５Ａ】図５Ａは、メーカー出荷時の管理テーブルの調整を説明するための図である。
【図５Ｂ】図５Ｂは、ユーザによる管理テーブルの調整を説明するための図である。
【図５Ｃ】図５Ｃは、エコ対応のＴＯ倍率７の調整を説明するための図である。
【図６】図６は、ＤＭＡ処理のフローを示すフローチャートである。
【図７】図７は、タイムアウト処理のフローを示すフローチャートである。
【図８】図８は、従来の振り分けを説明するための図である。
【図９】図９は、依頼元番号にＤＭＡ装置を括りつけた振り分けを説明するための図である。
【発明を実施するための形態】
【００１９】
以下に、本願の開示する情報処理装置及びＤＭＡ装置のドライバプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００２０】
まず、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けについて図１Ａ〜図１Ｆを用いて説明する。図１Ａ〜図１Ｆは、実施例に係るＤＭＡドライバによるＤＭＡ依頼の振り分けを説明するための図である。実施例に係るＤＭＡドライバは、管理テーブル４を用いてＤＭＡ依頼の振り分けを行う。図１Ａに示すように、管理テーブル４には、ＤＭＡ依頼元番号とタイムアウト時間がＤＭＡ装置３毎に登録される。タイムアウト時間は、転送ブロック数に基づいて依頼元によって指定される。
【００２１】
実施例に係るＤＭＡドライバは、依頼元番号が管理テーブル４に登録されている場合には、依頼元番号に紐づくＤＭＡ装置３のディスクリプタテーブル５にＤＭＡ依頼を積む。ここで、「ディスクリプタテーブル５にＤＭＡ依頼を積む」とは、ディスクリプタテーブル５にＤＭＡ依頼に含まれるディスクリプタを積むことである。一方、依頼元番号が管理テーブル４に登録されていない場合には、実施例に係るＤＭＡドライバは、管理テーブル４において依頼元番号が最も少ないＤＭＡ装置３を選択し、選択したＤＭＡ装置３のディスクリプタテーブル５にＤＭＡ依頼を積む。そして、実施例に係るＤＭＡドライバは、ＤＭＡ依頼の依頼元番号とタイムアウト時間を、選択したＤＭＡ装置３に紐づけて管理テーブル４に登録する。
【００２２】
図１Ａでは、最初のＤＭＡ依頼「１−１」がＤＭＡ＃１のディスクリプタテーブル５に積まれ、依頼元番号の「１」とタイムアウト時間「Ｔ１」がＤＭＡ＃１に紐づけられて管理テーブル４に登録される。次に、２番目のＤＭＡ依頼「２−１」がＤＭＡ＃２のディスクリプタテーブル５に積まれ、依頼元番号の「２」とタイムアウト時間「Ｔ１」がＤＭＡ＃２に紐づけられて管理テーブル４に登録される。次に、３番目のＤＭＡ依頼「３−１」がＤＭＡ＃３のディスクリプタテーブル５に積まれ、依頼元番号の「３」とタイムアウト時間「Ｔ３」がＤＭＡ＃３に紐づけられて管理テーブル４に登録される。
【００２３】
なお、図１Ａにおいて、更新ＦＬＧ６は、依頼元番号とＤＭＡ装置３との紐づけを変更するか否かを示すフラグである。実施例に係るＤＭＡドライバは、更新ＦＬＧ６の値が「０」の場合には、依頼元番号とＤＭＡ装置３との紐づけを変更せず、更新ＦＬＧ６の値が「１」の場合には、依頼元番号とＤＭＡ装置３との紐づけを変更する。
【００２４】
そして、図１Ｂに示すように、４番目のＤＭＡ依頼「４−１」がＤＭＡ＃１のディスクリプタテーブル５に積まれ、依頼元番号の「４」とタイムアウト時間「Ｔ２」がＤＭＡ＃１に紐づけられて管理テーブル４に登録される。次に、５番目のＤＭＡ依頼「１−２」は、管理テーブル４に依頼元番号「１」が登録されているので、ＤＭＡ＃１のディスクリプタテーブル５に積まれ、管理テーブル４は変更されない。
【００２５】
次に、６番目のＤＭＡ依頼「５−１」がＤＭＡ＃２のディスクリプタテーブル５に積まれ、依頼元番号の「５」とタイムアウト時間「Ｔ３」がＤＭＡ＃２に紐づけられて管理テーブル４に登録される。次に、７番目のＤＭＡ依頼「６−１」がＤＭＡ＃３のディスクリプタテーブル５に積まれ、依頼元番号の「６」とタイムアウト時間「Ｔ２」がＤＭＡ＃３に紐づけられて管理テーブル４に登録される。
【００２６】
次に、８番目のＤＭＡ依頼「７−１」については、ＤＭＡ＃１のＤＭＡ依頼の数が「３」であり、ＤＭＡ＃２及びＤＭＡ＃３のＤＭＡ依頼の数が「２」であるので、ＤＭＡ＃２のディスクリプタテーブル５に積まれる。そして、依頼元番号の「７」とタイムアウト時間「Ｔ４」がＤＭＡ＃２に紐づけられて管理テーブル４に登録される。
【００２７】
その後、「３−２」、「４−２」、「１−３」、「５−２」、「２−２」がディスクリプタテーブル５に積まれる。そして、「４−１」についてタイムアウトが発生すると、更新ＦＬＧ６が「１」であるので、図１Ｃに示すように、実施例に係るＤＭＡドライバは、依頼元番号「４」を依頼数の最も少ない別のＤＭＡ装置３であるＤＭＡ＃３に紐づけし、管理テーブル４を更新する。その後、依頼元番号が「４」のＤＭＡ依頼（「４−３」）は、ＤＭＡ＃３のディスクリプタテーブル５に積まれる。
【００２８】
このように、実施例に係るＤＭＡドライバは、ＤＭＡ依頼に基づいて管理テーブル４の情報を生成するので、生成した情報に基づいて、ＤＭＡ依頼を自動的に振り分けることができる。
【００２９】
なお、図１Ｂにおいて、ＴＯ倍率７は、タイムアウト時間に乗じる倍率を指定する。消費電力低減等のエコ（Eco）対応のために、ＣＰＵの周波数低下による性能抑制が行われた場合、実施例に係るＤＭＡドライバは、ＴＯ倍率７を変更することで、性能低下にともなうタイムアウトの発生を防ぐことができる。例えば、ＤＭＡ装置３の周波数が１／ｎになると、ＴＯ倍率７は、ｎ倍される。
【００３０】
また、実施例に係るＤＭＡドライバは、一旦、管理テーブル４の情報の生成を完了した後、ＴＯ倍率７を小さくしてＤＭＡ処理を実施させ、管理テーブル４の最適化を図る。ＴＯ倍率７があるところまで小さくなると、収束しないパターンが発生する。ここで、収束しないパターンとは、依頼元番号のＤＭＡ装置３への紐づけが、ＤＭＡ＃１→ＤＭＡ＃３、ＤＭＡ＃３→ＤＭＡ＃１、ＤＭＡ＃１→ＤＭＡ＃３のように繰り返されることを示す。そこで、実施例に係るＤＭＡドライバは、収束しないパターンが発生する前の管理テーブル４の情報を最適解として保持する。
【００３１】
また、図１Ｄに示すように、実施例に係るＤＭＡドライバは、更新ＦＬＧ６がセットされていない場合でも、依頼元番号が管理テーブル４に存在しないときは、依頼元番号を管理テーブル４に登録する。ここで、更新ＦＬＧ６がセットされていない場合とは、更新ＦＬＧ６が「０」の場合である。
【００３２】
また、図１Ｅに示すように、実施例に係るＤＭＡドライバは、更新ＦＬＧ６がセットされていない場合には、依頼元番号のＤＭＡ装置３への紐づけを変更しない。図１Ｅでは、依頼元＃４の処理がタイムアウトしたが、依頼元＃４のＤＭＡ＃１への紐づけは変更されず、ＤＭＡ装置３の不具合等のタイムアウトと認識され、エラー処理のみが行われる。管理テーブル４のテストが完了した場合には、ＮＡＳ装置１の評価者及び運用者は、更新ＦＬＧ６を「０」にすることで、管理テーブル４を固定することができる。
【００３３】
また、図１Ｆに示すように、実施例に係るＤＭＡドライバは、更新ＦＬＧ６がセットされている場合にＤＭＡ依頼がディスクリプタテーブル５に存在しない依頼元番号を、更新ＦＬＧ６のオフの際に管理テーブル４から削除する。ここで、更新ＦＬＧ６がセットされている場合とは、更新ＦＬＧ６が「１」の場合であり、更新ＦＬＧ６のオフとは、更新ＦＬＧ６を「１」から「０」に変更することである。図１Ｆでは、依頼元番号が「７」のＤＭＡ依頼がディスクリプタテーブル５に存在しないので、依頼元番号の「７」が更新ＦＬＧ６のオフの際に管理テーブル４から削除される。
【００３４】
次に、実施例に係るＮＡＳ（Network  Attached  Storage）装置の構成について説明する。ＮＡＳ装置は、ＬＡＮ接続のストレージ装置である。図２は、実施例に係るＮＡＳ装置の構成を示す図である。図２に示すように、実施例に係るＮＡＳ装置１は、ＣＰＵ１１と、メインメモリ１２と、ＤＭＡ＃１〜ＤＭＡ＃３で表される３台のＤＭＡ装置３とを有する。また、ＮＡＳ装置１は、電源制御部１３と、バッテリ１４と、ディスク制御部１５と、ディスクアレイ１６と、ＬＡＮ制御部１７と、ＵＳＢ制御部１８と、外付ＨＤＤ（Hard  Disk  Drive）１９とを有する。なお、ここでは、３台のＤＭＡ装置３を有する場合を示すが、ＮＡＳ装置１は、３台以外の複数のＤＭＡ装置３を有してもよい。
【００３５】
ＣＰＵ１１は、メインメモリ１２からプログラムを読み出して実行する中央処理装置である。メインメモリ１２は、プログラムやプログラムの実行途中結果等を記憶するＲＡＭ（Random  Access  Memory）である。電源制御部１３は、ＮＡＳ装置１への電力の供給を制御する。電源制御部１３は、停電時にはバッテリ１４から電力を供給する。ディスク制御部１５は、ＣＰＵ１１の指示に基づいて、ディスクアレイ１６からのデータの読み出し、ディスクアレイ１６へのデータの書き込みを制御する。ディスクアレイ１６は、データを記憶するＲＡＩＤ装置である。
【００３６】
ＬＡＮ制御部１７は、ＬＡＮを介した通信を制御する。ＵＳＢ制御部１８は、ＵＳＢ接続された外付ＨＤＤ１９からのデータの読み出し、外付ＨＤＤ１９へのデータの書き込みを行う。外付ＨＤＤ１９は、バックアップデータを記憶するディスク装置である。
【００３７】
ディスクアレイ１６は、ＤＭＡドライバ、ＬＡＮドライバ、ディスクドライバ、ＵＳＢドライバ、ＲＡＩＤドライバ等を記憶する。これらのドライバはメインメモリ１２にロードされ、ＣＰＵ１１によって実行される。また、図１Ｂに示した管理テーブル４のデータ、更新ＦＬＧ６、ＴＯ倍率７は、ディスクアレイ１６の一部を使用するユーザ環境ファイルに記憶され、メインメモリ１２にロードされてＣＰＵ１１によって使用される。
【００３８】
次に、ＤＭＡドライブ部の機能構成について説明する。ここで、ＤＭＡドライブ部とは、実施例に係るＤＭＡドライバがＣＰＵ１１で実行されることで実現される機能部である。図３は、ＤＭＡドライブ部の機能構成を示す図である。図３に示すように、ＤＭＡドライブ部２は、受付部２１と、受付キュー２２と、ディスクリプタ記憶部２３と、管理情報記憶部２４と、倍率記憶部２５と、振り分け部２６と、更新フラグ記憶部２７と、更新部２８と、設定部２９とを有する。
【００３９】
受付部２１は、複数のプログラムレイヤからＤＭＡ依頼を受け付けて受付キュー２２に格納する。受付キュー２２は、ＤＭＡ依頼を記憶するキューである。ディスクリプタ記憶部２３は、ＤＭＡ装置３毎にディスクリプタテーブル５のデータを記憶する。
【００４０】
管理情報記憶部２４は、管理テーブル４のデータを記憶する。図４は、管理テーブル４の一例を示す図である。図４に示すように、管理テーブル４には、ＤＭＡ装置３毎に依頼元番号とタイムアウト時間が登録される。倍率記憶部２５は、ＴＯ倍率７を記憶する。
【００４１】
振り分け部２６は、受付キュー２２からＤＭＡ依頼を取り出し、管理テーブル４に基づいてＤＭＡ依頼をＤＭＡ装置３のいずれかに振り分ける。振り分け部２６は、管理テーブル４にＤＭＡ依頼の依頼元番号が登録されている場合には、依頼元番号に紐づけられたＤＭＡ装置３のディスクリプタテーブル５にＤＭＡ依頼を積む。
【００４２】
一方、管理テーブル４にＤＭＡ依頼の依頼元番号が登録されていない場合には、振り分け部２６は、ＤＭＡ依頼の数が最も少ないＤＭＡ装置３を選択し、選択したＤＭＡ装置３のディスクリプタテーブル５にＤＭＡ依頼を積む。ＤＭＡ依頼の数が最も少ないＤＭＡ装置３が複数ある場合には、振り分け部２６は、ＤＭＡ依頼の数が最も少ないＤＭＡ装置３の中から、ＤＭＡ依頼のタイムアウト時間の合計が最も少ないＤＭＡ装置３を選択する。そして、振り分け部２６は、選択したＤＭＡ装置３に紐づけて依頼元番号とタイムアウト時間を管理テーブル４に登録する。
【００４３】
また、振り分け部２６は、ディスクリプタテーブル５にＤＭＡ依頼を積んだときに、タイムアウト時間にＴＯ倍率７を乗じた時間でタイマを起動する。タイマは、タイムアウトが発生すると更新部２８に通知する。
【００４４】
また、振り分け部２６は、ＤＭＡ装置３から完了通知を受けとると、依頼元にＤＭＡ処理の完了を通知するとともに、完了通知に対応するタイマを停止する。
【００４５】
更新フラグ記憶部２７は、更新ＦＬＧ６を記憶する。更新部２８は、タイムアウト処理を行う。
【００４６】
具体的には、更新部２８は、ディスクリプタテーブル５に積まれたいずれかのＤＭＡ依頼にタイムアウトが発生すると、依頼元にタイムアウトの発生を通知する。そして、更新部２８は、更新ＦＬＧ６がセットされている場合には、タイムアウトが発生した依頼元のＤＭＡ依頼をディスクリプタテーブル５から削除し、タイムアウトが発生した依頼元の依頼元番号とＤＭＡ装置３の紐づけを変更して、管理テーブル４を更新する。
【００４７】
変更にあたって、更新部２８は、ＤＭＡ依頼の数が最も少ないＤＭＡ装置３を変更先として選択する。ＤＭＡ依頼の数が最も少ないＤＭＡ装置３が複数ある場合には、更新部２８は、ＤＭＡ依頼の数が最も少ないＤＭＡ装置３の中から、ＤＭＡ依頼のタイムアウト時間の合計が最も少ないＤＭＡ装置３を選択する。
【００４８】
そして、更新部２８は、管理テーブル４の更新により収束しないパターンが発生したか否かを判定し、収束しないパターンが発生した場合には、管理テーブル４が最適化されたと判定し、収束しないパターンの発生通知を出力する。更新部２８は、例えば、変更先として選択されたＤＭＡ装置３が以前に紐づけられたＤＭＡ装置３である場合に、収束しないパターンが発生したと判定する。
【００４９】
また、更新部２８は、更新ＦＬＧ６がクリアされた場合に、ＤＭＡ装置３に振り分けられているＤＭＡ依頼がない依頼元の依頼元番号及びタイムアウト時間を管理テーブル４から削除する。ここで、更新ＦＬＧ６をクリアするとは、更新ＦＬＧ６を「１」から「０」にすることである。
【００５０】
設定部２９は、管理テーブル４の調整者による指定を受け付けて、倍率記憶部２５を更新する。また、設定部２９は、ＣＰＵ１１の周波数変化を検出して、倍率記憶部２５を更新する。
【００５１】
次に、管理テーブル４の調整について図５Ａ〜図５Ｃを用いて説明する。図５Ａは、メーカー出荷時の管理テーブル４の調整を説明するための図であり、図５Ｂは、ユーザによる管理テーブル４の調整を説明するための図であり、図５Ｃは、エコ対応のＴＯ倍率７の調整を説明するための図である。
【００５２】
図５Ａに示すように、メーカーの開発評価プロセスでは、管理テーブル４のデフォルトが作成される。具体的には、更新ＦＬＧ６がセットされ、ｎ回の出荷テストが行われ、管理テーブル４の参照が行われる。更新ＦＬＧ６がセットされているため、タイムアウトに応じ更新機能が働き、管理テーブル４に関して、デフォルトのテーブルデータが作成される。なお、タイムアウトが発生した場合には、ＨＷ（ハードウェア）のエラーが確認される。
【００５３】
また、評価者は、更新ＦＬＧ６がセットされている間タイムアウトのチューニングのためＴＯ倍率７をテスト毎に落としてテストする。例えば、ＴＯ倍率７は１→０．９→０．８のように設定される。開発評価プロセスの終了時には、更新ＦＬＧ６はクリアされる。
【００５４】
出荷試験プロセスでは、開発評価プロセスで作成されたデフォルトのテーブルデータが登録された管理テーブル４を用いた出荷テストが行われ、動作確認が行われる。
【００５５】
また、図５Ｂに示すように、ユーザの運用プロセスでは、デフォルトのテーブルデータが登録された管理テーブル４を用いたユーザの運用が行われる。そして、ＨＷのエラーではないタイムアウトが頻繁に発生するような場合、更新ＦＬＧ６がセットされる。あるいは、管理テーブル４に関して新しいテーブルデータが生成されるときに更新ＦＬＧ６がセットされる。
【００５６】
チューニングプロセスでは、ユーザ毎のテーブルデータが生成される。更新ＦＬＧ６がセットされ、ユーザの運用が行われると、ユーザに最適化されたテーブルデータが生成される。そして、一定期間（例えば１か月）でＴＯ倍率７を変化させることで、テーブルデータの再ユーザ最適化が行われる。そして、管理テーブル４の収束が発生するか、又は、一定期間（例えば３か月）の運用後に、更新ＦＬＧ６がクリアされる。
【００５７】
チューニングプロセス後の運用プロセスでは、再ユーザ最適化が行われたテーブルデータを用いた運用が行われる。
【００５８】
また、図５Ｃに示すように、エコモードのチューニングでは、ＣＰＵ１１の省電力技術であるスピードステップ（SpeedStep）によるＣＰＵ１１の周波数低下が検出され、タイムアウトが発生しないようにＴＯ倍率７が変更される。
【００５９】
次に、ＤＭＡ処理のフローについて説明する。図６は、ＤＭＡ処理のフローを示すフローチャートである。図６に示すように、振り分け部２６は、ＤＭＡ依頼を受け付ける（ステップＳ１）。ＤＭＡ依頼には、ディスクリプタ、依頼元番号、タイムアウト時間が含まれる。
【００６０】
そして、振り分け部２６は、管理テーブル４を参照し（ステップＳ２）、管理テーブル４内に依頼元番号があるか否かを判定する（ステップＳ３）。そして、管理テーブル４内に依頼元番号がない場合には、振り分け部２６は、管理テーブル４への登録処理を行い（ステップＳ４）、依頼元番号をＤＭＡ装置３に紐づける。そして、振り分け部２６は、管理テーブル４で依頼元番号に紐づけられたＤＭＡ装置３のディスクリプタテーブル５にディスクリプタを積む（ステップＳ５）。
【００６１】
ＤＭＡ装置３は、ディスクリプタテーブル５にディスクリプタがあるか否かを判定し（ステップＳ６）、ディスクリプタがある場合には、ディスクリプタに基づいてＤＭＡを実行する（ステップＳ７）。そして、ＤＭＡ装置３は、ＤＭＡ完了か否かを判定し（ステップＳ８）、ＤＭＡ完了である場合には、振り分け部２６に完了を通知し（ステップＳ９）、ステップＳ６に戻る。
【００６２】
また、振り分け部２６は、スレッドにより（ステップＳ１〜ステップＳ５）の振り分け処理を行い、ステップＳ５でディスクリプタをディスクリプタテーブル５に積んだ際に、別スレッドを作成する。そして、振り分け部２６は、作成した別スレッドで、積んだディスクリプタについてタイマを起動する（ステップＳ１０）。そして、タイムアウトが発生すると、当該別スレッドにより、タイムアウト発生処理（ステップＳ１１）が行われる。
【００６３】
また、ＤＭＡ装置３の完了通知を受け取ると、振り分け部２６は、また別のスレッドにより、完了内容を確認し（ステップＳ１２）、完了したディスクリプタのタイマを停止して（ステップＳ１３）、依頼元に完了を通知する（ステップＳ１４）。
【００６４】
このように、振り分け部２６は、管理テーブル４内に依頼元番号がない場合には、管理テーブル４への登録処理を行って依頼元番号をＤＭＡ装置３に紐づけるので、複数のＤＭＡ装置３のいずれかにＤＭＡ依頼を自動的に振り分けることができる。
【００６５】
次に、更新部２８によるタイムアウト処理のフローについて説明する。図７は、更新部２８によるタイムアウト処理のフローを示すフローチャートである。図７に示すように、更新部２８は、依頼元へタイムアウト発生を通知し（ステップＳ３１）、依頼元でタイムアウト処理を実施させる。
【００６６】
そして、更新部２８は、更新ＦＬＧ６はセットされているか否かを判定し（ステップＳ３２）、更新ＦＬＧ６がセットされていない場合には、タイムアウト処理を終了する。一方、更新ＦＬＧ６がセットされている場合には、更新部２８は、タイムアウトが発生した依頼元の他のＤＭＡ依頼をディスクリプタテーブル５から削除する（ステップＳ３３）。そして、更新部２８は、タイムアウトが発生した依頼元の依頼元番号とＤＭＡ装置３の紐づけを変更し、管理テーブル４を更新する（ステップＳ３４）。
【００６７】
そして、更新部２８は、収束しないパターンが発生したか否かを判定し（ステップＳ３５）、収束しないパターンが発生していない場合には、タイムアウト処理を終了する。一方、収束しないパターンが発生した場合には、更新部２８は、更新ＦＬＧ６をクリアし、収束しないパターンの発生通知を出力する（ステップＳ３６）。
【００６８】
このように、タイムアウトが発生すると、更新部２８が、依頼元番号とＤＭＡ装置３の紐づけを変更し、管理テーブル４を更新するので、ＤＭＡドライブ部２は、管理テーブル４を最適化することができる。
【００６９】
上述してきたように、実施例では、管理情報記憶部２４が依頼元番号とＤＭＡ装置３を紐づける情報を記憶する。そして、ＤＭＡ依頼があると、振り分け部２６が、管理情報記憶部２４を参照し、管理情報記憶部２４に依頼元番号が記憶されている場合には、依頼元番号に紐づけられたＤＭＡ装置３にＤＭＡ依頼を振り分ける。一方、依頼元番号が記憶されていない場合には、振り分け部２６は、管理情報記憶部２４がＤＭＡ装置３に紐づけて記憶する依頼元番号の数に基づいて、依頼を振り分けるＤＭＡ装置３を決定する。そして、振り分け部２６は、決定したＤＭＡ装置３に紐づけて管理情報記憶部２４に依頼元番号を追加する。したがって、ＤＭＡドライブ部２は、複数のＤＭＡ装置３のいずれかにＤＭＡ依頼を自動的に振り分けることできる。
【００７０】
また、実施例では、振り分け部２６は、さらにタイムアウト時間に基づいて、依頼を振り分けるＤＭＡ装置３を決定するので、依頼元番号の数が等しい場合にも、振り分け先のＤＭＡ装置３を決定することができる。
【００７１】
また、実施例では、更新部２８は、タイムアウトが発生すると、依頼元番号を紐づけるＤＭＡ装置３を他のＤＭＡ装置３に変更して管理情報記憶部２４を更新するので、管理情報記憶部２４が記憶する情報を最適化することができる。
【００７２】
また、実施例では、更新フラグ記憶部２７が更新ＦＬＧ６を記憶し、更新部２８は、更新ＦＬＧ６がセットされている場合に、タイムアウトが発生すると、依頼元番号を紐づけるＤＭＡ装置３を他のＤＭＡ装置３に変更して管理情報記憶部２４を更新する。したがって、ＮＡＳ装置１の評価者及び運用者は、更新ＦＬＧ６を変更することで、管理情報記憶部２４が記憶する情報を必要なときだけ最適化することができる。
【００７３】
また、実施例では、更新部２８は、更新ＦＬＧ６がクリアされる際に、ＤＭＡ装置３に振り分けられている依頼がない依頼元の依頼元番号とタイムアウト時間を管理情報記憶部２４から削除するので、管理情報記憶部２４による無駄な情報の記憶を防ぐことができる。
【００７４】
また、実施例では、ＴＯ倍率７を倍率記憶部２５が記憶し、更新部２８は、タイムアウト時間にＴＯ倍率７を乗じた時間に基づくタイムアウトが発生した場合に、依頼元番号を紐づけるＤＭＡ装置３を他のＤＭＡ装置３に変更して管理情報記憶部２４を更新する。したがって、ＮＡＳ装置１の評価者及び運用者は、ＴＯ倍率７を徐々に小さくすることで、管理情報記憶部２４に収束しないパターンを発生させ、管理情報記憶部２４が記憶する情報が最適化されたことを知ることができる。
【００７５】
また、実施例では、設定部２９が、ＣＰＵ１１の周波数の低下を検出してＴＯ倍率７を変更するので、ＤＭＡドライブ部２は、エコモードに対応することができる。
【００７６】
なお、実施例では、ＮＡＳ装置１におけるＤＭＡ処理について説明したが、本発明はこれに限定されるものではなく、複数のＤＭＡ装置３を備える他の情報処理装置にも同様に適用することができる。
【符号の説明】
【００７７】
１    ＮＡＳ装置
２    ＤＭＡドライブ部
３    ＤＭＡ装置
４    管理テーブル
５，９５    ディスクリプタテーブル
６    更新ＦＬＧ
７    ＴＯ倍率
１１    ＣＰＵ
１２    メインメモリ
１３    電源制御部
１４    バッテリ
１５    ディスク制御部
１６    ディスクアレイ
１７    ＬＡＮ制御部
１８    ＵＳＢ制御部
１９    外付ＨＤＤ
２１    受付部
２２    受付キュー
２３    ディスクリプタ記憶部
２４    管理情報記憶部
２５    倍率記憶部
２６    振り分け部
２７    更新フラグ記憶部
２８    更新部
２９    設定部
【図１Ａ】
2020095416.tif 000003
【図１Ｂ】
2020095416.tif 000004
【図１Ｃ】
2020095416.tif 000005
【図１Ｄ】
2020095416.tif 000006
【図１Ｅ】
2020095416.tif 000007
【図１Ｆ】
2020095416.tif 000008
【図２】
2020095416.tif 000009
【図３】
2020095416.tif 000010
【図４】
2020095416.tif 000011
【図５Ａ】
2020095416.tif 000012
【図５Ｂ】
2020095416.tif 000013
【図５Ｃ】
2020095416.tif 000014
【図６】
2020095416.tif 000015
【図７】
2020095416.tif 000016
【図８】
2020095416.tif 000017
【図９】
2020095416.tif 000018