(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023173240
(43)【公開日】2023-12-07
(54)【発明の名称】計算機、メモリ制御方法およびメモリ制御プログラム
(51)【国際特許分類】
G06F 12/121 20160101AFI20231130BHJP
【FI】
G06F12/121 100
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022085362
(22)【出願日】2022-05-25
(71)【出願人】
【識別番号】000003562
【氏名又は名称】東芝テック株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100075672
【弁理士】
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【弁理士】
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】佐藤 直哉
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205QQ12
5B205QQ20
(57)【要約】
【課題】複数の補助記憶装置を用いる場合に、複数の補助記憶装置のスワップ領域の優先度を自動で設定する計算機を提供することである。
【解決手段】実施形態の計算機は、スワップ領域を持ち得る複数の補助記憶装置が接続され得る計算機である。計算機は、プロセッサと、主記憶装置を有する。プロセッサは、計算機に接続されている補助記憶装置を検索する。検索の結果、見つかった補助記憶装置が複数である場合には、プロセッサは、各補助記憶装置の書き込み速度を計測する。続いて、プロセッサは、書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるように優先度を設定する。プロセッサは、優先度に従ってスワップ領域を有効にする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
スワップ領域を持ち得る複数の補助記憶装置が接続され得る計算機であって、
プロセッサと、
主記憶装置を有し、
前記プロセッサは、
計算機に接続されている前記補助記憶装置を検索し、
検索の結果、見つかった前記補助記憶装置が複数である場合には、各補助記憶装置の書き込み速度を計測し、
書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるように優先度を設定し、
優先度に従ってスワップ領域を有効にする、
計算機。
【請求項2】
前記プロセッサは、書き込み速度の差が設定値の範囲内に少なくとも二つの補助記憶装置があり、その他に少なくとも一つの補助記憶装置がある場合には、前記少なくとも二つの補助記憶装置のスワップ領域を、ラウンド・ロビン方式でページ配分させる一つのスワップ領域として纏めて、前記少なくとも二つの補助記憶装置を一つの統合補助記憶装置とし、前記統合補助記憶装置の書き込み速度を計算し、前記統合補助記憶装置を一つの補助記憶装置として含めた複数の補助記憶装置の中から、書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるよう優先度を高く設定する、
請求項1に記載の計算機。
【請求項3】
前記少なくとも二つの補助記憶装置の空き領域を確認し、前記少なくとも二つの補助記憶装置の空き領域から取得できるスワップ領域のサイズを揃える、
請求項2に記載の計算機。
【請求項4】
スワップ領域を持ち得る複数の補助記憶装置が接続され得る計算機のメモリ制御方法であって、
計算機に接続されている前記補助記憶装置を検索し、
検索の結果、見つかった前記補助記憶装置が複数である場合には、各補助記憶装置の書き込み速度を計測し、
書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるように優先度を設定し、
優先度に従ってスワップ領域を有効にする、
メモリ制御方法。
【請求項5】
スワップ領域を持ち得る複数の補助記憶装置が接続され得る計算機のプロセッサに、
計算機に接続されている前記補助記憶装置を検索させ、
検索の結果、見つかった前記補助記憶装置が複数である場合には、各補助記憶装置の書き込み速度を計測させ、
書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるように優先度を設定させ、
優先度に従ってスワップ領域を有効にさせる、
メモリ制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、計算機、メモリ制御方法およびメモリ制御プログラムに関する。
【背景技術】
【0002】
一般に、CPUと主記憶装置(メインメモリ)を有する計算機は、OSとプログラムを記憶している補助記憶装置を用いる。複数のプログラムを同時に使用する場合に、主記憶装置の容量が不足することがある。その対処方として、補助記憶装置にスワップ領域を確保し、現在使用していない主記憶装置の内容を一時的に補助記憶装置のスワップ領域に待避させる手法がある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、複数の補助記憶装置を用いる場合に、複数の補助記憶装置のスワップ領域の優先度を自動で設定する計算機、メモリ制御方法およびメモリ制御プログラムを提供することである。
【課題を解決するための手段】
【0005】
実施形態の計算機は、スワップ領域を持ち得る複数の補助記憶装置が接続され得る計算機である。計算機は、プロセッサと、主記憶装置を有する。プロセッサは、計算機に接続されている補助記憶装置を検索する。検索の結果、見つかった補助記憶装置が複数である場合には、プロセッサは、各補助記憶装置の書き込み速度を計測する。続いて、プロセッサは、書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるように優先度を設定する。プロセッサは、優先度に従ってスワップ領域を有効にする。
【0006】
実施形態のメモリ制御方法は、スワップ領域を持ち得る複数の補助記憶装置が接続され得る計算機のメモリ制御方法である。メモリ制御方法は、まず、計算機に接続されている補助記憶装置を検索する。検索の結果、見つかった補助記憶装置が複数である場合には、メモリ制御方法は、各補助記憶装置の書き込み速度を計測する。続いて、メモリ制御方法は、書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるように優先度を設定する。メモリ制御方法は、優先度に従ってスワップ領域を有効にする。
【0007】
実施形態のメモリ制御プログラムは、スワップ領域を持ち得る複数の補助記憶装置が接続され得る計算機のプロセッサに、計算機に接続されている補助記憶装置を検索させる。検索の結果、見つかった補助記憶装置が複数である場合には、メモリ制御プログラムは、プロセッサに、各補助記憶装置の書き込み速度を計測させる。メモリ制御プログラムは、プロセッサに、書き込み速度が速い補助記憶装置からスワップ領域が優先的に利用されるように優先度を設定させる。メモリ制御プログラムは、プロセッサに、優先度に従ってスワップ領域を有効にさせる。
【図面の簡単な説明】
【0008】
【
図1】実施形態に係る計算機のハードウェア構成図である。
【
図2】実施形態に係る計算機のメモリ制御プログラムのソフトウェア構成図である。
【
図3】実施形態に係る計算機が実行するメモリ制御を示すフローチャートである。
【
図4】実施形態における各種設定ファイルの一例の内容を示す図である。
【
図5】実施の形態におけるスワップ統合判断基準テーブルの一例の内容を示す図である。
【
図6】実施形態におけるベンチマーク結果ファイルの一例の内容を示す図である。
【
図7】実施の形態における/etc/fstabファイルの一例のスワップ領域に関する内容を示す図である。
【発明を実施するための形態】
【0009】
[構成]
(ハードウェア構成)
まず、
図1を参照して、実施形態に係る計算機100のハードウェア構成に説明する。
図1は、実施形態に係る計算機100のハードウェア構成を示す図である。計算機100は、たとえば、コンピュータである。コンピュータは、パーソナルコンピュータやサーバコンピュータ等である。
【0010】
ここでは、計算機100は、複数の補助記憶装置が接続された状態にあるものとして説明する。言い換えれば、計算機100は、複数の補助記憶装置を含むものとして説明する。
【0011】
図1に示されるように、計算機100は、CPU101と、システムバス102と、RAM103と、SATAハードディスクドライブ(HDD)104と、SATAハードディスクドライブ(HDD)105と、USBハードディスクドライブ(HDD)106と、NVMeソリッドステートドライブ(HDD)107と、Ethernet(登録商標)インタフェース(I/F)108と、ディスプレイ109と、キーボード110を有する。計算機100は、これらに加えて、他の周辺装置を有していてもよい。
【0012】
CPU101とRAM103とSATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107とEthernetインタフェース108とディスプレイ109とキーボード110は、システムバス102を介して互いに電気的に接続されており、システムバス102を介してデータや命令のやりとりを行う。
【0013】
CPU101は、プロセッサであり、プログラムの実行、データの処理を行うハードウェアである。CPU101は、RAM103に記憶されている一連の命令(プログラム)を逐次実行する。これにより、CPU101は、たとえば、RAM103からデータを読み出して処理し、処理後のデータをRAM103に書き込む。
【0014】
RAM103は、プログラムとデータを一時的に記憶する主記憶装置(メインメモリ)である。RAM103は、CPU101が現在実行する処理に必要なプログラムとデータを一時的に記憶する。
【0015】
CPU101は、プログラムを実行することにより、RAM103とSATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107とEthernetインタフェース108とディスプレイ109とキーボード110を制御する。
【0016】
ディスプレイ109は、データを出力する出力装置である。ディスプレイ109は、種々の情報をユーザに提示する。
【0017】
キーボード110は、命令やデータを受け取る入力装置である。キーボード110は、ユーザの操作によって、命令やデータを受け取る。
【0018】
Ethernetインタフェース108は、ネットワークや他の計算機と接続するためのインタフェースである。たとえば、計算機100は、Ethernetインタフェース108を介して、ネットワークや他の計算機と接続可能である。
【0019】
SATAハードディスクドライブ104,105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107はいずれも、データを永続的に記憶する補助記憶装置である。SATAハードディスクドライブ104,105は、SATAの接続規格に従うハードディスクドライブである。USBハードディスクドライブ106は、USBの接続規格に従うハードディスクドライブである。NVMeソリッドステートドライブ107は、NVMeの接続規格に従うソリッドステートドライブである。SATAハードディスクドライブ104,105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107はいずれも、ブロックデバイスである。
【0020】
SATAハードディスクドライブ104,105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107はいずれも、スワップ領域を持ち得る補助記憶装置である。すなわち、SATAハードディスクドライブ104,105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107はいずれも、RAM103の容量不足時に、RAM103に現在記憶されているデータの一部を記憶する仮想メモリ領域を提供可能である。
【0021】
実施形態の計算機100は、Linux(登録商標)のOSで動作する。SATAハードディスクドライブ104は、プライマリドライブであり、LinuxのOSを記憶している。計算機100は、電源投入時に、CPU101が、SATAハードディスクドライブ104からLinuxのOSをRAM103に読み込み実行することにより動作する。
【0022】
また、SATAハードディスクドライブ104は、計算機100のためのメモリ制御プログラムを記憶している。LinuxのOSの起動後、CPU101は、SATAハードディスクドライブ104からメモリ制御プログラムをRAM103に読み込み実行する。メモリ制御プログラムは、SATAハードディスクドライブ104,105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107のスワップ領域を最適化する。
【0023】
(ソフトウェア構成)
次に、
図2を参照して、SATAハードディスクドライブ104が記憶しているメモリ制御プログラムのソフトウェア構成について説明する。
図2は、SATAハードディスクドライブ104が記憶しているメモリ制御プログラムのソフトウェア構成を模式的に示す図である。
【0024】
SATAハードディスクドライブ104が記憶しているメモリ制御プログラムは、コマンドと、データファイルを有する。
【0025】
コマンドは、fdiskコマンド201と、mountコマンド202、dfコマンド203、ddコマンド204、swaponコマンド205を有する。
【0026】
データファイルは、各種設定ファイル206と、/etc/fstabファイル207と、スワップ統合判断基準テーブル208と、ベンチマーク結果ファイル209を有する。
【0027】
[動作]
次に、
図3~
図7を参照して、計算機100におけるメモリ制御について説明する。
図3は、計算機100におけるメモリ制御を示すフローチャートである。メモリ制御は、CPU101が、RAM103に格納されたメモリ制御プログラムを実行することによって行われる。
【0028】
図4は、各種設定ファイル206の一例の内容を示す図である。
図5は、スワップ統合判断基準テーブル208の一例の内容を示す図である。
図6は、ベンチマーク結果ファイル209の一例の内容を示す図である。
図7は、/etc/fstabファイル207の一例のスワップ領域に関する内容を示す図である。
【0029】
ステップS101において、CPU101は、fdiskコマンドで、システムバス102から補助記憶装置を検索する。言い換えれば、CPU101は、システムバス102に接続されている周辺装置のうち、補助記憶装置を検索する。
【0030】
実施形態では、ステップS101の検索によって、具体的には、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107が見つかる。
【0031】
ステップS102において、CPU101は、mountコマンドで、見つかった各補助記憶装置をマウントする。次に、CPU101は、dfコマンドで、各補助記憶装置の容量と空き容量を確認する。続いて、CPU101は、各補助記憶装置の容量と空き容量をベンチマーク結果ファイル209に記録する。
【0032】
実施形態では、具体的には、CPU101は、ステップS101で見つかったSATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107をマウントする。
【0033】
次に、CPU101は、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の各々の容量と空き容量を確認し、ベンチマーク結果ファイル209に記録する。
【0034】
図6は、ベンチマーク結果ファイル209の一例の内容を表している。ベンチマーク結果ファイル209は、スワップ領域、書き込み速度、統合ID、統合速度、優先度、空き領域、最大サイズの項目を有する。書き込み速度と統合速度の値の単位は、MiB/sである。ベンチマーク結果ファイル209は容量の項目も有するが、
図6では容量の項目の図示は省略されている。
【0035】
スワップ領域は、/mnt1/swapfile、/mnt2/swapfile、/mnt3/swapfile、/mnt4/swapfileの項目を有する。/mnt1/swapfile、/mnt2/swapfile、/mnt3/swapfile、/mnt4/swapfileは、それぞれ、SATAハードディスクドライブ104、SATAハードディスクドライブ105、USBハードディスクドライブ106、NVMeソリッドステートドライブ107のスワップ領域を表している。
【0036】
/mnt1/swapfile、/mnt2/swapfile、/mnt3/swapfile、/mnt4/swapfileは、
図2の各種設定ファイル206に基づいて設定される。各種設定ファイル206は、設定名と、設定値を有する。設定名は、スワップサイズ上限割合値、性能見積もり補正値、スワップファイル名、スワップファイルパスを有する。
【0037】
スワップファイルパスの/mnt*は、/mnt1、/mnt2、/mnt3、/mnt4を表している。/mnt1、/mnt2、/mnt3、/mnt4は、それぞれ、SATAハードディスクドライブ104、SATAハードディスクドライブ105、USBハードディスクドライブ106、NVMeソリッドステートドライブ107のスワップファイルパスを表している。
【0038】
CPU101は、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の空き容量を、ベンチマーク結果ファイル209に記録する。
【0039】
図6のベンチマーク結果ファイル209の例では、SATAハードディスクドライブ104の空き容量は、125GBであり、SATAハードディスクドライブ105の空き容量は、100GBであり、USBハードディスクドライブ106の空き容量は、30GBであり、NVMeソリッドステートドライブ107の空き容量は、120GBである。
【0040】
CPU101はさらに、空き容量に、各種設定ファイル206のスワップサイズ上限割合値を乗算して最大サイズを算出し、ベンチマーク結果ファイル209に記録する。
【0041】
図6のベンチマーク結果ファイル209は、メモリ制御の処理において最終的に得られる内容を表している。ステップS102の処理後の時点では、各スワップ領域に対する項目の値は、空き領域と最大サイズの項目を除いて、すなわち、書き込み速度、統合ID、優先度の項目の値はすべて、ヌル値(たとえば0)である。
【0042】
図6のベンチマーク結果ファイル209では、SATAハードディスクドライブ104とSATAハードディスクドライブ105のスワップ領域(/mnt1/swapfileと/mnt2/swapfile)の最大サイズは共に、90GBであり、USBハードディスクドライブ106のスワップ領域(/mnt3/swapfile)の最大サイズは、27GBであり、NVMeソリッドステートドライブ107のスワップ領域(/mnt4/swapfile)の最大サイズは、108GBである。
【0043】
SATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の値は、各空き容量にスワップサイズ上限割合値を乗算した値と一致する。これに対して、SATAハードディスクドライブ104の値は、空き容量にスワップサイズ上限割合値を乗算した値とは相違する。これは、後述するように、SATAハードディスクドライブ104のスワップ領域とSATAハードディスクドライブ105のスワップ領域は、統合されるためである。統合に伴い、大きい方のSATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)の最大サイズが、小さい方のSATAハードディスクドライブ105のスワップ領域(/mnt2/swapfile)の最大サイズに合わせられるためである。付言すれば、この時点におけるベンチマーク結果ファイル209のSATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)の最大サイズは、112.5GBである。
【0044】
ステップS103において、CPU101は、
図2の各種設定ファイル206のスワップサイズ上限割合値の範囲内において、ddコマンドで、各補助記憶装置について、仮のスワップファイル(swapfile)を作成し、書き込み速度を計測する。
【0045】
実施形態では、具体的には、CPU101は、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の各々について仮のスワップファイル(swapfile)を作成する。SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の仮のスワップファイル(swapfile)は、それぞれ、
図6のベンチマーク結果ファイル209のスワップ領域の/mnt1/swapfile、/mnt2/swapfile、/mnt3/swapfile、/mnt4/swapfileに対応する。
【0046】
次いで、CPU101は、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の各々の仮のスワップファイル(swapfile)の書き込み速度を計測する。
【0047】
ステップS104において、CPU101は、ベンチマーク結果ファイル209に、計測した各補助記憶装置についての書き込み速度を記録する。
【0048】
実施形態では、
図6に示されるように、SATAハードディスクドライブ104の書き込み速度は、180(MiB/s)であり、SATAハードディスクドライブ105の書き込み速度は、196(MiB/s)であり、USBハードディスクドライブ106の書き込み速度は、80(MiB/s)であり、NVMeソリッドステートドライブ107の書き込み速度は、1500(MiB/s)である。
【0049】
ステップS105において、CPU101は、
図5のスワップ統合判断基準テーブル208の基準に沿って、スワップ領域を統合して、統合したスワップ領域の最大サイズでスワップファイル(swapfile)を上書きする。
【0050】
スワップ統合判断基準テーブル208は、デバイス転送速度、許容性能差、統合上限速度の項目を有する。デバイス転送速度の項目はさらに、下限と上限の項目を有する。また、スワップ統合判断基準テーブル208は、デバイス転送速度と許容性能差と統合上限速度の各項目に対して、基準1、基準2、基準3、基準4の項目を有する。基準1と基準2と基準3と基準4の各項目は、デバイス転送速度と許容性能差と統合上限速度の各項目についての値を有する。
【0051】
基準1ないし基準4の各値はいずれも、速度を示す数値である。基準1ないし基準4の各値の単位はいずれも、MiB/sである。デバイス転送速度の上限は、その値未満であるとする。
【0052】
スワップ統合判断基準テーブル208の基準1、基準2、基準3、基準4は、それぞれ、SATAハードディスクドライブ104、SATAハードディスクドライブ105、USBハードディスクドライブ106、NVMeソリッドステートドライブ107の基準を表している。
【0053】
CPU101は、
図5のスワップ統合判断基準テーブル208の基準に沿って、スワップ領域を統合する。スワップ領域を統合するとは、スワップ統合判断基準テーブル208の許容性能差の範囲内にある複数の補助記憶装置のスワップ領域を、ラウンド・ロビン方式でページ配分させる一つのスワップ領域として纏めて、一つの統合補助記憶装置として扱うことを意味する。許容性能差は、各補助記憶装置が他の補助記憶装置とスワップ領域の統合を許容する書き込み速度の差を意味する。
【0054】
実施形態では、前述したように、SATAハードディスクドライブ104の書き込み速度は、180(MiB/s)であり、SATAハードディスクドライブ105の書き込み速度は、196(MiB/s)であり、USBハードディスクドライブ106の書き込み速度は、80(MiB/s)であり、NVMeソリッドステートドライブ107の書き込み速度は、1500(MiB/s)である。
【0055】
図5のスワップ統合判断基準テーブル208に示されるように、SATAハードディスクドライブ104の許容性能差は、10(MiB/s)であり、SATAハードディスクドライブ105の許容性能差は、20(MiB/s)であり、USBハードディスクドライブ106の許容性能差は、50(MiB/s)であり、NVMeソリッドステートドライブ107の許容性能差は、100(MiB/s)である。
【0056】
これらの数値から、SATAハードディスクドライブ104のスワップ領域とSATAハードディスクドライブ105のスワップ領域は統合が可能である。一方、USBハードディスクドライブ106のスワップ領域は、SATAハードディスクドライブ104とSATAハードディスクドライブ105とNVMeソリッドステートドライブ107のいずれの補助記憶装置のスワップ領域との統合は不可である。同様に、NVMeソリッドステートドライブ107のスワップ領域も、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106のいずれの補助記憶装置のスワップ領域との統合は不可である。
【0057】
実施形態では、CPU101は、SATAハードディスクドライブ104のスワップ領域とSATAハードディスクドライブ105のスワップ領域を統合する。すなわち、CPU101は、SATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)とSATAハードディスクドライブ105のスワップ領域(/mnt2/swapfile)を、ラウンド・ロビン方式でページ配分させる一つのスワップ領域として纏める。言い換えれば、CPU101は、SATAハードディスクドライブ104とSATAハードディスクドライブ105を、一つの統合補助記憶装置として扱う。
【0058】
統合に伴い、CPU101は、ベンチマーク結果ファイル209の統合IDの項目に、SATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)とSATAハードディスクドライブ105のスワップ領域(/mnt2/swapfile)については共に、1を記録し、USBハードディスクドライブ106のスワップ領域(/mnt3/swapfile)については、2を記録し、NVMeソリッドステートドライブ107のスワップ領域(/mnt4/swapfile)については、3を記録する。
【0059】
統合後においては、CPU101は、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107を、統合IDに基づく個別の補助記憶装置として扱う。すなわち、CPU101は、SATAハードディスクドライブ104とSATAハードディスクドライブ105を一つの補助記憶装置として扱い、USBハードディスクドライブ106を一つの補助記憶装置として扱い、NVMeソリッドステートドライブ107を一つの補助記憶装置として扱う。
【0060】
また、CPU101は、スワップ領域を統合する複数の補助記憶装置の空き領域を確認し、それら複数の補助記憶装置の空き領域から取得できるスワップ領域の最大サイズを揃える。具体的には、最も小さい補助記憶装置のスワップ領域の最大サイズに、他の補助記憶装置のスワップ領域の最大サイズを合わせる。これは、ラウンド・ロビン方式でページ配分させる一つのスワップ領域として纏められる複数のスワップ領域の間おいて、スワップ領域の大きさを一致させるためである。これは、ラウンド・ロビン方式による良好なページ配分に貢献する。
【0061】
図6のベンチマーク結果ファイル209の例において、SATAハードディスクドライブ104の空き容量は、125GBであり、SATAハードディスクドライブ105の空き容量は、100GBである。スワップ領域の最大サイズは、空き容量に、
図4の各種設定ファイル206のスワップサイズ上限割合値を乗算した値である。したがって、SATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)の最大サイズは、112.5GBであり、SATAハードディスクドライブ105のスワップ領域(/mnt2/swapfile)の最大サイズは、90GBである。
【0062】
前述したように、ステップS102の処理時には、CPU101は、ベンチマーク結果ファイル209において、SATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)の最大サイズに、112.5GBを記録する。
【0063】
SATAハードディスクドライブ104とSATAハードディスクドライブ105を揃えるため、このステップS105において、CPU101は、大きい方のSATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)の最大サイズの112.5GBを、小さい方のSATAハードディスクドライブ105のスワップ領域(/mnt2/swapfile)の最大サイズの90GBで上書きする。
【0064】
ステップS106において、CPU101は、スワップ領域の統合後の各補助記憶装置について、書き込みの統合速度を算出し、ベンチマーク結果ファイル209に記録する。書き込みの統合速度は、スワップ領域を統合する複数の補助記憶装置については、それら複数の補助記憶装置の書き込み速度を加算し、加算結果に、
図4の各種設定ファイル206の性能見積もり補正値を乗算した値である。また、書き込みの統合速度は、スワップ領域を統合しない単独の補助記憶装置については、その補助記憶装置の書き込み速度の値そのものである。
【0065】
図6のベンチマーク結果ファイル209では、SATAハードディスクドライブ104とSATAハードディスクドライブ105の書き込みの統合速度は共に、300.8(MiB/s)である。この値は、SATAハードディスクドライブ104とSATAハードディスクドライブ105の書き込み速度を加算し、加算結果にスワップサイズ上限割合値である0.9を乗算したものである。
【0066】
一方、USBハードディスクドライブ106とNVMeソリッドステートドライブ107の書き込みの統合速度は、それぞれ、80(MiB/s)と1500(MiB/s)である。USBハードディスクドライブ106とNVMeソリッドステートドライブ107の書き込みの統合速度は共に、それぞれの書き込み速度に等しい。
【0067】
ステップS107において、CPU101は、スワップ領域に対して、書き込みの統合速度が速いものから、高い優先度を付与する。すなわち、CPU101は、統合IDに基づいて識別される複数の補助記憶装置の中から、書き込みの統合速度が速い補助記憶装置からスワップ領域が優先的に利用されるよう優先度を高く設定し、ベンチマーク結果ファイル209に記録する。
【0068】
図6のベンチマーク結果ファイル209の例では、CPU101は、ベンチマーク結果ファイル209の優先度の項目に、スワップ領域を統合するSATAハードディスクドライブ104とSATAハードディスクドライブ105については共に、90を記録し、USBハードディスクドライブ106については、80を記録し、NVMeソリッドステートドライブ107については、100を記録する。ここで、優先度は、その値が大きいものほど高い。
【0069】
ステップS108において、ステップS107の処理後のベンチマーク結果ファイル209に基づいて、/etc/fstabファイルを更新する。
図7は、更新後の/etc/fstabファイル207の一例のスワップ領域に関する内容を示す図である。
図7の/etc/fstabファイル207には、<file system>の各々に対して、<option>として、優先度を示すdefaults,priが記されている。
【0070】
図7から、SATAハードディスクドライブ104のスワップ領域(/mnt1/swapfile)とSATAハードディスクドライブ105のスワップ領域(/mnt2/swapfile)の優先度が共に、90(pri=90)であり、USBハードディスクドライブ106のスワップ領域(/mnt3/swapfile)の優先度が、80(pri=80)であり、NVMeソリッドステートドライブ107のスワップ領域(/mnt4/swapfile)の優先度が、1000(pri=100)であることがわかる。
【0071】
ステップS109において、CPU101は、Linuxを再起動する。Linuxの再起動においては、CPU101は、swaponコマンド205で、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の各々に対して、ステップS108において更新された/etc/fstabファイル207に基づいて、スワップ領域を確保する。
【0072】
Linuxの再起動後は、RAM103の容量が不足した場合には、CPU101は、/etc/fstabファイル207の優先度に基づいて、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107のスワップ領域を有効にする。
【0073】
実施形態では、ステップS105~S107において、SATAハードディスクドライブ104のスワップ領域とSATAハードディスクドライブ105のスワップ領域を統合し、書き込みの統合速度に基づいて優先度を設定しているが、SATAハードディスクドライブ104のスワップ領域とSATAハードディスクドライブ105のスワップ領域の統合処理を省略し、単純に、SATAハードディスクドライブ104とSATAハードディスクドライブ105とUSBハードディスクドライブ106とNVMeソリッドステートドライブ107の書き込みの速度に基づいて優先度を設定してもよい。
【0074】
[効果]
実施形態の計算機100は、スワップ領域への書き込み速度が異なる複数の補助記憶装置を用いる場合に、複数の補助記憶装置のスワップ領域の優先度を自動で設定する。これにより、スワップ領域の優先度の設定の知識が無い利用者であっても、システムバス102を効率良く活用できる。したがって、RAM103の容量が不足するときにスワップ領域を利用する場合に、スワップにかかる時間を短くし、計算処理を早く終わらせることができる。
【0075】
すなわち、実施形態によれば、複数の補助記憶装置を用いる場合に、複数の補助記憶装置のスワップ領域の優先度を自動で設定する計算機、メモリ制御方法およびメモリ制御プログラムが提供される。
【0076】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0077】
100…計算機、101…CPU、102…システムバス、103…RAM、104…SATAハードディスクドライブ、105…SATAハードディスクドライブ、106…USBハードディスクドライブ、107…NVMeソリッドステートドライブ、108…Ethernetインタフェース、109…ディスプレイ、110…キーボード、201…fdiskコマンド、202…mountコマンド、203…dfコマンド、204…ddコマンド、205…swaponコマンド、206…種設定ファイル、207…etc/fstabファイル、208…スワップ統合判断基準テーブル、209…ベンチマーク結果ファイル。