JP2021128627A - 計算機システム及びメモリ管理方法 - Google Patents

計算機システム及びメモリ管理方法 Download PDF

Info

Publication number
JP2021128627A
JP2021128627A JP2020023760A JP2020023760A JP2021128627A JP 2021128627 A JP2021128627 A JP 2021128627A JP 2020023760 A JP2020023760 A JP 2020023760A JP 2020023760 A JP2020023760 A JP 2020023760A JP 2021128627 A JP2021128627 A JP 2021128627A
Authority
JP
Japan
Prior art keywords
area
memory
physical
storage device
managed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020023760A
Other languages
English (en)
Other versions
JP6972202B2 (ja
Inventor
高大 阿部
Kota Abe
高大 阿部
貴司 野田
Takashi Noda
貴司 野田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020023760A priority Critical patent/JP6972202B2/ja
Priority to US17/029,329 priority patent/US11416409B2/en
Publication of JP2021128627A publication Critical patent/JP2021128627A/ja
Application granted granted Critical
Publication of JP6972202B2 publication Critical patent/JP6972202B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】汎用OS(Operating System)上のOSS(Open Source Software)と仮想ストレージ装置間で余分なデータ転送をなくすことで、性能向上を図る計算機を提供する。
【解決手段】計算機は、メモリ105と、メモリに接続されるプロセッサ104と、を備える。プロセッサは、OSを実行し、OS上で複数のプロセスを実行する。複数のプロセスは、仮想ストレージ装置とアプリケーションを含む。プロセッサは、OSが管理するメモリの物理領域を、アプリケーションに提供し、計算機には搭載されているが、OSが管理しないメモリの物理領域を、仮想ストレージ装置が、利用するよう制御し、OSが管理するメモリの物理領域内から、連続する物理領域を確保し、仮想ストレージ装置に利用させ、確保した連続する物理領域を用いて、仮想ストレージ装置とアプリケーションの間で、DMA転送を行う。
【選択図】図2

Description

本発明は概して、ストレージシステム及びストレージシステムのメモリ管理方法に関する。
クラウド環境では、複数のテナントの性能を管理する性能管理機能が知られている。また、テナントにより用いられる仮想ストレージが知られている。Linux(登録商標)等の汎用OS(Operating System)において、OS上で稼働するプロセスに割当てるリソースを制御する技術としてはコンテナ技術が知られている。
仮想ストレージに対し、物理的に連続するメモリ領域を割当てることにより、データ転送の性能を保証することができる。
しかし、仮想ストレージが汎用OS上のプロセスとして実行される場合、OSがプロセスに割当てるメモリは仮想メモリであり、仮想メモリ領域に対応する物理メモリ領域が連続である保証はない。
そのため、OSにより提供されるリソース割当量制御技術を用いても、物理的に連続したメモリ領域の割当てを制御することはできず、仮想ストレージの性能を保証することはできない。
OS上で実行される仮想ストレージ装置に、物理的に連続するメモリ領域を割当てることにより、仮想ストレージ装置の性能を保証する技術が特許文献1に開示されている。
国際公開第2017/056310号
特許文献1によれば、計算機に搭載されているがOSにより管理されないOS管理外物理リソース内の物理的に連続するメモリ領域を、仮想ストレージ装置に割当てている。Linux上で動作するOSS(Open Source Software)のアプリケーションは、一般的にLinux管理内領域から使用するメモリを確保する。そのため、例えば、Linux上で動作するOSSのアプリケーションと仮想ストレージ装置との間でデータ転送を行う場合、Linux管理外物理リソース内の領域とLinux管理内領域の領域との間において、データ転送を行う必要が生じる。この余分なデータ転送が生じるため、性能低下の要因となることが考えられる。
特に、仮想ストレージ装置のフロントエンドやバックエンドのプロトコルチップがOSSを用いてデータ転送する際は、OSSからLinux管理外領域は使用できないため、Linux管理内領域に転送する必要がある。
そこで、本発明の目的は、汎用OS上のOSSと仮想ストレージ装置間で余分なデータ転送をなくすことで、性能向上を図ることができる計算機システム及びメモリ管理方法を提供することを目的とする。
上記目的を達成するためのストレージシステムを構成する計算機の実施形態の一つは、メモリと、メモリに接続されるプロセッサと、を備える。プロセッサは、OSを実行し、OS上で複数のプロセスを実行する。複数のプロセスは、仮想ストレージ装置とアプリケーションを含む。プロセッサは、OSが管理するメモリの物理領域を、アプリケーションに提供し、計算機には搭載されているが、OSが管理しないメモリの物理領域を、仮想ストレージ装置が、利用するよう制御するとともに、OSが管理するメモリの物理領域内から、連続する物理領域を確保し、仮想ストレージ装置に利用させる。
本発明の代表的な実施例によれば、汎用OS上のOSSと仮想ストレージ装置間で余分なデータ転送をなくすことで、性能向上を図ることができる。
前記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
実施例1に係る計算機システムの構成例を示すブロック図。 計算機10の内部構成を示すブロック図。 実施例1に係るDRAM105の物理リソースの構成例を示す図。 ストレージプログラムメモリマッピングテーブルの一例を示した図。 DRAM内 hugepage数管理テーブルの一例を示す図。 DRAM OS管理外管理テーブルの一例を示した図。 システム内メモリ管理テーブルの一例を示した図。 計算機10で実行される初期起動動作を示すフローチャート。 メモリ割当処理の詳細動作を説明するフローチャート。 電断時に利用するデータ項目を追加したストレージプログラムメモリマッピングの一例を示す図。 SCM内 hugepage数管理テーブルの一例を示す図。 SCM OS管理外管理テーブルの一例を示した図。 保護対象管理テーブルの一例を示す図。 システム内メモリ量管理テーブルの一例を示す図。 ストレージ管理プログラムによるメモリ割当処理と保護対象管理テーブル作成の詳細動作を説明するフローチャート。 電断時のデータバックアップ処理動作を説明するフローチャート。 リストア処理動作を説明するフローチャート。
以下、図面に基づいて、本発明の実施の形態を説明する。
なお、以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされており、本発明は、他の種々の形態でも実施する事が可能であり、特に限定しない限り、各構成要素は単数でも複数でも構わない。
また、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、実施例の中で説明されている要素の組み合わせの全てが、発明の解決手段に必須であるとは限らない。
以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で実現されてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。以下の説明では、識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られた符号を使用することがある。
また、以下の説明では、I/O(Input/Output)要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、計算機は、一以上の計算機を含んでいてもよい。
<システム構成>
図1は、実施例1に係る計算機システムの構成例を示すブロック図を示す。
計算機システムは、1台以上の計算機10、ネットワーク20、1台以上のクライアント30を含む。
ストレージシステムを構成する計算機10は、物理メモリとしてDRAM105と、CPU(Central Processing Device)104と、ネットワークIFとなる、ASIC101、HBA102、NIC103と、ドライブコントローラ109と、SASドライブ等からなるドライブ120とを含む。
プロセッサであるCPU104は、コア1041と、DMA(Direct Memory Access)コントローラ1042とを含む。DRAM105と、CPU104と、ネットワークIFと、ドライブコントローラとは、バス100を介して互いに接続されている。DMAコントローラ1042によって、DMA転送されるデータは、ライト要求に応じてクライアント30から受信されるライトデータであってもよいし、リード要求に応じてドライブ120から読み出されるリードデータであってもよいし、リード要求時のキャッシュヒットにより読み出されるリードデータであってもよい。なお、DMAコントローラ1042によるDMA転送の転送元及び転送先の一方が、ネットワークIF(HBA102、NIC103)、ドライブコントローラ109、ドライブ120等の物理デバイス内のメモリであってもよい。FEchipは、HBA102、NIC103に含まれ、BEchipは、ドライブコントローラ109に含まれる。
バス100には、ブートディスク107、バックアップ用デバイス108が接続される。また、バス100には、SSD110a、SAS110b、SATAドライブ110cが記憶装置110として接続されていても良い。
物理メモリとして、DRAM105に加えて、SCM106が接続されていても良い。実施例1では、物理メモリはDRAMで構成されている前提で説明する。
DRAM105は、プログラムやデータを格納する。ネットワークIFは、ネットワーク20に接続され、ネットワーク20を介してクライアント30と通信する。ドライブコントローラ109は、ドライブ120に接続され、ドライブ120と通信するインタフェースである。ドライブ120は、データを格納する。コア1041は、DRAM105に格納されたプログラムに従って処理を実行する。DMAコントローラ1042は、コア1041の指示に従って、データのDMA転送を実行する。DRAM105は、複数の物理メモリを含んでいてもよい。
ネットワーク20は、例えば、Ethernet(登録商標)、Infiniband(登録商標)等の高性能なネットワークで、NVMe over Fabrics(NVMe−oF)に対応している。
クライアント30は、CPU(Central Processing Unit)及びメモリ等の記憶装置を備えたコンピュータ装置であり、ユーザ操作や、実装されたプログラムからの要求に応じてネットワーク20を介して、計算機10に、ライトコマンドやリードコマンド(IOコマンド)を送信する。
ドライブ120は、例えば、冗長パスを持ち、片方のパスの接続が切れた場合でも、計算機10とデータ通信できる構成をとってもよい。
図2は、計算機10の内部構成を示すブロック図である。
CPU104では、BIOS104e、OS104d上で、複数のプロセスを実行する。複数のプロセスは、複数のアプリケーションである複数のOSS104b、複数のストレージプログラム104aが動作する。尚、実施例1では、OS104dはLinuxを想定する。各ストレージプログラムが仮想ストレージ装置を構成する。
また、ストレージプログラム104aは、データの冗長性を与える機能として、「RAID(Redundant Array of Inexpensive Disks)」や、データの複製を取得するスナップショット機能等のストレージシステムとして提供される機能を実現するためのソフトウェアであり、CPU104によって実行されることで、仮想ストレージ装置を構成する。ストレージプログラム104a(仮想ストレージ装置)は、OS104dによりプロセスとして管理される。ストレージプログラム104aの一つがストレージ管理プログラムとして動作し、ストレージプログラム104aが利用する物理リソース(以下、物理領域とも呼ぶ)を管理しても良い。
ブートディスク107には、OSブートパラメータファイルとOS設定ファイルが格納されている。バックアップ用デバイス108には、保護対象論物変換テーブルT130が格納される。DRAM105の物理リソースについては、図3を用いて説明する。
図3は、実施例1に係るDRAM105の物理リソースの構成例を示す。
計算機10内のDRAMの物理リソースは、OS104dにより管理されるOS管理内領域301と、計算機10に搭載されているがOS104dにより管理されないOS管理外領域302とを含む。
OS管理内領域301は、OS104dが管理するメモリ、DRAM105の物理領域であり、CPU104によりOSS104b等のアプリケーションに提供される。OS管理内領域301の物理領域は、OS104dにより仮想アドレスを割当てられて、OSS104b等のアプリケーションに提供される。OS管理外領域302は、計算機10には搭載されているが、OS104dが管理しないメモリの物理領域であり、ストレージプログラム104aによって利用される。ストレージプログラム104aが仮想ストレージ装置を構成する場合には、OS管理外領域302は、仮想ストレージ装置に提供される。
計算機10において、OS104dを起動させる場合、ユーザは、OS104dのブートオプションとして、OS104dにより使用される物理メモリ量であるOS管理内領域のメモリ量を設定することができる。OS管理内領域のメモリ量は、DRAM105の容量以下であればよい。OS管理内領域301は、DRAM105のうち、物理アドレスの先頭からOS管理内領域のメモリ量までの領域となる。OS管理外領域302は、DRAM105のうちOS管理内領域301の領域の直後の物理アドレスからDRAM105の終端の物理アドレスまでの領域となる。
OS104dにより使用可能な領域として、OS管理内領域301を設定することにより、OS管理外領域302がOS104dに使用されることがなく、OS管理外領域302内の連続領域を仮想ストレージ装置に割当てることができる。
また、ユーザにより設定されるOS管理内領域のメモリ量は、ストレージプログラム104aが仮想ストレージとして利用する物理メモリ量を求め、DRAM105の全メモリ量から差し引くことで、求めても良い。
OS管理内領域301は、OS104d、もしくは各アプリケーションがOS104dにDRAM105のメモリ確保を依頼した際に、OS104dが管理するメモリ領域である。この領域は、ストレージプログラム104aからDRAM105の物理アドレスを指定してメモリ確保することはできない。
OS管理外領域302は、OS104dから、DRAM105の物理メモリ空間は見えても、OSのメモリ確保論理によってメモリを使用しない領域である。つまりOS104dの仮想アドレスに対応付けられないDRAMの物理リソースである。このOS管理外領域302は、ストレージプログラム104aからOS104dのI/Fを用いて明示的に物理アドレスを指定して、割り当て可能な領域である。
OS104dは、複数のプロセスを統合管理するコンテナ技術を用いて、OS管理内領域301から仮想ストレージ装置のプロセスを構築する。コンテナ技術は、CPU割当調整プログラムおよびメモリ割当調整プログラムを含むリソース分割機能である。OS104dは、このようなリソース分割機能を有している技術であれば、コンテナ技術以外の技術を用いて、仮想ストレージ装置のプロセスを構築しても良い。CPU割当調整プログラムは、OS上で実行されるプロセスに対してCPU104のリソースを割当てる。計算機10は、OS104d上で実行されるプロセスに対して物理メモリのOS管理内領域301のリソースを割当てる。
OS管理内領域301は、用途別割当領域301a、301bとして、DRAM105の連続領域(連続したアドレス)が割当てられ、OS管理外領域302にも用途別割当領域302a、302bとして、DRAM105の連続領域(連続したアドレス)が割当てられる。
<各種管理テーブル>
図4は、ブートディスク107に格納される、ストレージプログラムメモリマッピングテーブル(以下、マッピングテーブルT40)の一例を示した図である。尚、このテーブルの内容は、ユーザにより設定される。
マッピングテーブルT40は、DRAM105の物理領域を識別する領域ID401、領域IDによって識別される領域に対応して、仮想ストレージ装置がDRAM105を用いる用途402、共有範囲403、連続要求サイズ404、OSの管理する仮想先頭アドレス405、当該領域がOS管理内領域かを示すOS管理内領域406、割当済フラグ407を格納する。
用途402としては、領域IDによって識別される領域が、各コア1041が占有して使用する管理領域であるローカルメモリ(LM)、システム内の全コア1041で共有して使用するシェアードメモリ(SM)、システム内の全コア1041で共有して使用するユーザデータ領域であるキャッシュメモリ(CM)、データ転送用のバッファ領域として利用されるDXBF等がある。
共有範囲403には、領域IDで特定される領域を利用するストレージプロセスに関する情報が格納される。例えば、どの仮想ストレージ装置によって利用されるかを示す情報が格納される。
連続要求サイズ404には、ストレージプロセスが要求する連続サイズの情報が格納される。
仮想先頭アドレス405は、OS104dがストレージプログラム等に提供する仮想アドレスの先頭アドレスが格納される。
OS管理内領域406は、領域IDで特定される領域が、OS管理内領域301であるか否かの情報が格納される。ここで、「TRUE」の場合は、OS管理内領域301内に領域を設定することを示す。
領域IDで示される領域をOS管理内領域301にすることで、OSSとの連携やストレージプログラム104aによる仮想ストレージ装置としてエンハンスが容易となる。
また、領域IDで示される領域をOS管理外領域302にすることで、ストレージプログラム104aによる仮想ストレージ装置が利用する仮想アドレスの割当サイズを柔軟に設定することができる。また、物理アドレスの連続性を容易に確保できる。
ストレージプログラム104aの用途に応じて、OS管理内領域301とOS管理外領域302を使い分けることで、データ転送が早く、ストレージプログラムが必要とするメモリ領域を柔軟に構成することができる。
割当済フラグ407は、領域IDで特定される領域の仮想アドレスにDRAM105の物理リソースが割当たっているかを示す情報が格納される。
図4において、例えば、領域401「1」に対し、用途402「LM」、共有範囲403「ストレージプロセス1」、連続要求サイズ404「0x1000」、仮想先頭アドレス405「0x0000_0010_0000」、OS管理内領域406「TRUE」、割当済フラグ407「TRUE」が格納される。尚、割当済フラグ407は、システムブート時には、全ての領域IDに「FALSE」が、対応して格納されている。
図5は、OS104dによって、DRAM105或いは記憶装置110に格納され、OS管理内領域の物理領域を管理するDRAM内 hugepage数管理テーブルの一例を示す図である。hugepageは、所定の割当サイズ、例えば、1GB、2MB、4kといった3つの割当サイズから選択できる。3つの割当サイズ501毎に、予約数502、割当済み数503が対応して管理される。OS104dは、hugepage機能を用いてDRAM105の物理リソースを確保した場合、マッピングテーブルT40(図4)の仮想先頭ドレス405と確保した物理リソースのアドレスとの対応を管理する。尚、hugepageは、OS104dがOS管理内領域301内において、連続する物理アドレス(所定サイズの領域)を、確保する機能である。
OS管理内領域301に、OS104dがhugepage機能を用いて、物理的に連続した領域を確保し、ストレージプログラム(仮想ストレージ装置)104aに提供することができる。
hugepage機能を用いて確保された物理的に連続するメモリ領域は、OS管理内領域301内であることから、OSS104bであるアプリケーションも利用することができる。そのため、OS104dが割当てた仮想アドレスを用いて、ストレージプログラム104aとOSS104bの双方が参照可能となり、アプリケーションと仮想ストレージ装置間のデータ転送を行う際に、メモリ内で無駄なデータ転送を防止することができる。
尚、アプリケーションと仮想ストレージ装置間のデータ転送は、DMAコントローラ1042によりDMA転送で処理される。
本実施例は、このようなデータ転送として、上記DMA転送に加え、FE/BEchipとASICによるデータ転送を含めることができる。例えば、ASIC101による、HBA102やNIC103に含まれるFEchipと、BEchipが含まれるドライブコントローラ109間のデータ転送が該当する。図2に示す、OS104d上で動作するFEchip或いはBEchipと、ストレージプログラム(仮想ストレージ装置)104aとのデータ転送にも用いられる。FEchipとBEchip間、FEchip或いはBEchipとストレージプログラム(仮想ストレージ装置)104a間のデータ転送は、ASIC101により制御されてもよい。
図6は、ストレージプログラム104aによって、DRAM105或いは記憶装置110に格納されるDRAM OS管理外管理テーブルの一例を示した図である。
DRAM OS管理外管理テーブルT51は、OS管理内領域301の最終物理アドレス(OS管理外領域の先頭物理アドレスに対応する情報)に対応する管理内オフセット「0xA_8000_0000」、OS管理外領域302として利用可能なDRAMの最終アドレスである管理外maxアドレス「0xF_FFFF_FFFF」、仮想アドレスを割当てた物理メモリの最終アドレスを、割当済みoffsetアドレス「0xA_F004_3FFF」として管理する。
図7は、システム内メモリ管理テーブルの一例を示した図である。
このシステム内メモリ管理テーブルT70は、DRAM105或いは記憶装置110に格納され、システム全体のDRAM容量、ストレージプロセス単位制御情報資料量(LM)、ストレージシステム単位制御情報資料量(SM)、ストレージシステム転送バッファメモリ使用量(DXBF)、ストレージキャッシュ量メモリ使用量(CM)の容量がそれぞれ管理される。
<動作説明>
図8は、計算機10のCPU104で実行される動作(初期起動動作を含む)を示すフローチャートである。
初期起動ステップS91が開始されると、ステップS92でOS104dが起動する。
次に、ステップS93で、OS104dがブートディスク107内のOSブートパラメータファイル(マッピングテーブルT40を含む)を参照し、OSが使用するDRAMのメモリ量(OS管理内領域)を設定する。このステップにより、OS104dであるLinuxのOS管理外領域に設定可能な物理リソースも決まる。
次に、ステップS94で、OS104dがシステム設定ファイル(DRAM hugepage数管理テーブルT50)のhugepage予約数を参照し、hugepageを予約する。
次に、ステップS95で、ストレージプログラム104aを起動させる。
ステップS96で、ストレージプログラム104aが、ステップS93で決まるOS管理内領域のサイズを参考に、OS管理外領域のサイズをチェックする。
ステップS97で、ストレージ管理プログラム104aが、管理外管理テーブルT51を更新する。具体的には、ステップS93で決まるOS管理内領域に基づいて、OS管理外領域を示す、管理内offsetアドレス、管理外maxアドレス、割当て済みoffsetアドレスに値を更新する。
ステップS98で、ストレージ管理プログラム104aは、hugepage割当数を確認する。ストレージ管理プログラム104aが、ステップS94でOSが予約したhugepageの割当ができたか確認するためである。
ステップS99で、ストレージプログラム104aが、hugepage数管理テーブルを更新する。ステップS96からステップS99の動作は、ストレージプログラム104aの一つがストレージ管理プログラムとして動作し、ストレージ管理プログラムにより実行されても良い。
ステップS100でメモリ割当処理を実行し、ステップS200でリストア処理を実行する。これらの動作は、後述する。
図9は、ストレージ管理プログラム104aによるメモリ割当処理(S100)の詳細動作を説明するフローチャートである。
メモリ割当処理が開始されると(S100)、ストレージ管理プログラム104aは、マッピングテーブルT40を参照する(S101)。
次に、ステップS102で、マッピングテーブルT40の割当済フラグ407がFALSEの項目があるか判定する。割当済フラグ407が「FALSE」であれば、当該領域IDで特定される仮想アドレスにDRAM105の物理リソースが割当たっていないことを示す。割当済フラグ407がFALSEの項目がない場合、全ての領域に対して物理リソースが割当たっているため、処理を終了する(S103)。
ステップS102で、割当済フラグ407がFALSEの項目がある場合、ステップS104に進み、マッピングテーブルT40のOS管理内領域406が「TRUE」であるかを判定する。
ステップS104の判定で、YESの場合にはステップS108に進み、NOの場合にはステップS105に進む。
ステップS105で、DRAM 管理外管理テーブルT51の管理外maxアドレスをチェックする。
ステップS106で、DRAM 管理外管理テーブルT51の管理内offsetアドレスから連続要求サイズ404分の物理アドレスを仮想先頭アドレス405に割当る。つまり、OS管理外管理テーブルの割当て済みの物理アドレスから要求サイズ分の物理アドレスを、マッピングテーブルの仮想先頭アドレスから割当てる。これにより、OSの仮想アドレスに対しDRAMの物理アドレスの割当が行われる。このステップでは、OS管理外領域302を用いて、例えば、仮想ストレージ装置にDRAMの物理リソースを割り当てる。
ステップS107で、DRAM 管理外管理テーブルT51の管理外テーブルの割当済みoffsetアドレスを更新する。更新された割当済みoffsetアドレスが、次の領域に対する先頭アドレスになる。つまり、OS管理外管理テーブルの割当て済みの物理アドレスを更新する。この際、マッピングテーブルT40の割当済みフラグを「TRUE」に更新する。
一方、ステップS104からステップS108に進むと、ステップS108で、DRAM hugepage数管理テーブルT50をチェックし、連続要求サイズより大きいhugepageを選択する。例えば、連続要求サイズが1MBの場合、2MBのhugepageを選択する。
ステップS109で、マッピングテーブルT40の仮想先頭アドレス405に入っているアドレスをhugepageに割当る。これにより、OSの仮想アドレスをDRAMの物理アドレスに対して割当る。
ステップS110で、DRAM hugepage数管理テーブルT50の割当済のhugepage数を更新する。この際、マッピングテーブルT40の割当済みフラグを「TRUE」に更新する。
ステップS107、ステップS110の処理が終了すると、ステップS102に戻り、割当済フラグに「FALSE」の項目があるか判定し、あれば同様の処理を繰り返し、なければ、処理を終了する。
実施例1によれば、ストレージプログラムの用途に応じて、OS104dであるLinuxがメモリ内のOS管理内領域301にまとまった物理的に連続するメモリ領域をhugepageにより確保して、ストレージプログラム104aが自由にコントロールすることができる。
FE/BEchip制御プログラム104bやFE/BEchip制御プログラムI/F104c等のOSSが、ストレージプログラムで使用するマッピングテーブルT40を参照し、仮想アドレスでアクセスする。これにより、hugepageにより確保されたメモリ領域は、Linux上で動作するよう構成されたOSSからもアクセス可能となる。
このように、実施例1によれば、DRAMの用途毎に、連続した物理領域をOS管理外物理リソース内の領域とOS管理内領域の領域とに設定できるので、OS(Linux)上で動作するOSSのアプリケーションと仮想ストレージ装置との間でデータ転送を行う場合、OS(Linux)管理外物理リソース内の領域とOS(Linux)管理内領域の領域間で発生する余分なデータ転送をなくし、性能向上を図ることができる。
実施例1では、OS管理外物理リソース内の領域とOS管理内領域の領域間で発生する余分なデータ転送をなくすため、OS104dであるLinuxがメモリ内のOS管理内領域301にまとまった物理的に連続するDRAMのメモリ領域をhugepageにより確保した。このhugepageは、ストレージプログラムのLM、CM、SM、DXBF等の用途に応じて、確保されるため、電断時に退避すべきデータを格納するDRAMの物理アドレスが離散的になる。
電断時は、OSの提供する仮想アドレスを参照できないBIOSが、DRAMの物理アドレスを指定して、データの退避を行う。そのため、hugepageで確保した物理領域の内、電断時に退避すべきデータを格納するDRAMの物理アドレスの新たな管理方法が必要となる。
実施例2では、電断時にデータを退避するための物理アドレスを管理するための技術について、説明する。
図10は、実施例1のストレージプログラムメモリマッピング(以下、マッピングテーブルT40) (図4)に、電断時に利用するデータ項目を追加した、ストレージプログラムメモリマッピングT100を示す。
用途402に応じて電断時に退避すべきデータであることを示す電断時対象フラグ1001を追加している。電断時対象フラグ1001は、「FALSE」の場合には電断時に退避する必要がないことを示し、「TRUE」の場合には電断時にデータを退避する必要があることを示す。
電断時対象フラグ1001は、用途402や領域のサイズ等に応じて設定される。電断時に消失してはいけないデータを格納するメモリ領域が対象となる。
また、図10には、メモリの種類として、DRAMかSCM(Storage Class Memory)かのメモリの種別を示す配置先メモリ種別1002が追加されている。DRAMが揮発性メモリであるのに対し、SCMは不揮発性メモリである。各用途のデータをSCMに格納する場合には、電断時のデータ退避の必要性はない。そのため、配置先メモリ種別1002が「SCM」の場合、電断時対象フラグ1001は「FALSE」となる。尚、配置先メモリ種別1002は、SCMを使用しない場合には、不要となる。
図11は、OS104dによって、SCM106或いは記憶装置110に格納されるSCM内 hugepage数管理テーブルT110の一例を示す図である。
図12は、ストレージプログラム104aによって、SCM106或いは記憶装置110に格納されるSCM OS管理外管理テーブルT120の一例を示した図である。
図5がDRAMのhugepage数管理テーブルT50に対し、図11はSCMのhugepage数管理テーブルT110であり、管理するデバイスが異なるが内容は共通する。
図6がDRAM OS管理外管理テーブルT51に対し、図12はSCM OS管理外管理テーブルT120であり、管理するデバイスが異なるが内容は共通する。
図13は、電断時にBIOSによって参照される保護対象管理テーブルT130の一例を示す。
保護対象管理テーブルT130は、領域1D1101、物理先頭アドレス1102、サイズ1103、リストア管理フラグ1104を管理する。
領域ID1101は、ストレージプログラムメモリマッピングT100の領域ID401に対応し、DRAMやSCMの物理領域を特定する情報である。
物理先頭アドレス1102は、領域IDで特定される領域に対応する物理アドレスの値である。DRAMの場合にはDRAM OS管理外管理テーブルT51の割当済みoffsetアドレスの値、SCMの場合にはSCM OS管理外管理テーブルT120の割当済みoffsetアドレスの値が入力される。
サイズ1103は、領域ID1101によって特定されるメモリ領域のサイズである。
リストア管理フラグ1104は、データ復旧の状態を示す。データ復旧とは、退避したデータによって、メモリ(DRAM或いはSCM)のデータが回復することをいう。「FALSE」の場合にはデータ復旧が未済であり、「TRUE」の場合にはデータ復旧が完了していることを示す。尚、図13には、示していないが、各エントリーにバックアップ用デバイス108のアドレスを管理する項目を設けても良い。
図14は、図7のシステム内メモリ量管理テーブルT70に対応するテーブルであり、システム全体DRAM容量とシステム全体SCM容量が追加される。
図15は、ストレージ管理プログラム104aによるメモリ割当処理と保護対象管理テーブル作成の詳細動作を説明するフローチャートである。
図15のメモリ割当処理に関し、DRAMに対するメモリ割当処理は、実施例1の図9で示したステップS100からステップS110と同様であるので説明を省略し、差分のみを説明する。
ステップS102で割当済フラグ407にFALSEの項目あるかを判定した後、ステップS1301にて、マッピングテーブルT100を参照して、メモリ種別の判定を行う。メモリがDRAMである場合ステップS104に進み、メモリがSCMである場合にはステップS1302に進む。
SCMに対する処理であるステップS1302からステップS1308は、DRAMに対する処理であるステップS104からステップS110に対応する動作である。
DRAMやSCMに対するメモリの割当処理を行い、DRAM内 hugepage数管理テーブル T50、DRAM OS管理外テーブルT51、SCM内 hugepage数管理テーブル T110、SCM OS管理外管理テーブル T120を更新すると、ステップS1309に進む。
ステップS1309では、マッピングテーブル T100の電断時対象フラグ1001を判定する。電断時対象フラグ1001が、「TRUE」の場合にはステップS1310に進み、「FALSE」の場合にはステップS102に戻って、他の領域IDについて処理を繰り返す。
ステップS1310では、物理アドレスチェックし、ステップS1311でチェックしたアドレスを保護対象管理テーブルT130に格納する。
マッピングテーブルT100により、処理の対象領域がOS管理内領域406によりOS管理外領域302とされ、配置先メモリ種別1002がDRAMの場合には、DRAM OS管理外管理テーブルT51(図6)の割当済みoffsetアドレスの値をチェックし、保護対象管理テーブルT130(図13)の処理対象の領域IDに対応する物理先頭アドレス1102に格納する。尚、マッピングテーブルT100により、処理の対象領域がOS管理内領域406によりOS管理外領域302とされ、配置先メモリ種別1002がSCMの場合には、SCM OS管理外管理テーブルT120(図12)の割当済みoffsetアドレスの値をチェックし、保護対象管理テーブルT130(図13)の処理対象の領域IDに対応する物理先頭アドレス1102に格納する。
一方、マッピングテーブルT100により、処理の対象領域がOS管理内領域406によりOS管理内領域301とされる場合、OS104dにhugepageで当該領域用に確保したDRAM或いはSCMのメモリの先頭物理アドレスを問合わせて(チェック)し、その値を、保護対象管理テーブルT130(図13)の処理対象の領域IDに対応する物理先頭アドレス1102に格納する。
つまり、CPU104は、電断時対象フラグにより、当該領域が電断時に退避すべきデータを格納している領域である場合、OS管理外管理テーブルの割当て済みの物理アドレス、或いは、選択されたhugepageによって確保された物理領域の先頭物理アドレスを、当該領域の先頭物理アドレスとし、当該領域のサイズと共にバックアップ用デバイス108内の物理アドレスと対応付けて管理する保護対象管理テーブルを作成・更新する。
これにより、保護対象管理テーブルT130の物理先頭アドレス1102に、退避すべきデータを格納するDRAM若しくはSCMの物理アドレスを管理することができる。
OS104dであるLinuxのhugepageでOS管理内領域301に確保したメモリ領域や、ストレージプログラムがOS管理外領域302に確保したメモリ領域の内、電断時にデータ退避をすべきデータを格納するDRAMやSCMの物理アドレスが保護対象管理テーブルT130の物理先頭アドレス1102に格納されるため、ストレージプログラムの仮想アドレスではなくDRAMやSCMの物理アドレスによりアクセスするBIOSによって、データをバックアップデバイス内アドレスに退避することができる。
SCMについては、電断時にデータ退避する必要がないとの前提に立つと、図10の配置先メモリ種別1002がSCMの場合、図10の電断時対象フラグ1001を「False」に設定すればよい。
図16は、ストレージプログラム104aによって実行される、電断時のデータバックアップ処理動作を説明するフローチャートである。
停電等による電断時に、バックアップ処理を開始する(S200)。
リストア処理が開始されると(S200)、ステップS201で保護対象管理テーブルT130をチェックし、先頭物理アドレス1102とそのサイズ1103を把握する。
次に、ステップS202で、先頭物理アドレス1102からサイズ分1103をバックアップデバイス内に退避する。
次に、ステップS203で、バックアップデバイス内アドレスを更新し、リストア管理フラグ1105を「FALSE」に設定する。
図17は、図9のステップS200のリストア処理に相当し、ストレージプログラム104aを実行するCPU104のリストア処理動作を説明するフローチャートである。リストア処理はバックアップデバイスに退避されたデータを用いて行う。
リストア処理が開始(S300)されると、ステップS301で保護対象管理テーブルT130の各領域ID1101に対し、リストア管理フラグ1105をチェックする。
次に、ステップS302で、リストア済みフラグ「FALSE」があるかを判定する。「FALSE」が設定されている領域がなければ処理を終了する(S306)。
ステップS303で、「FALSE」が設定されていると、領域ID1101をチェックして確認する。ステップS304で確認した領域IDに対応する仮想アドレスに書き戻す。つまり、バックアップ用デバイスに退避された退避データを、マッピングテーブルの対応する領域の仮想先頭アドレスに対応させてリストアする。これによりストレージプログラム104aが仮想アドレスを用いて、退避されたデータを格納するデバイスの物理アドレスにアクセスすることができる。
最後に、ステップS305で、保護対象管理テーブルT130のリストア管理フラグ1105を「TRUE」更新に更新する。
実施例2のデータ退避時のアドレス管理により、ストレージプログラムで使用する仮想アドレスに対応するDRAMやSCMの物理アドレスが、離散的に確保された場合であっても、電断時に退避すべきデータを退避することができる。
また、実施例2のリストア処理によりストレージプログラムの仮想アドレスで退避されたデータにアクセスすることができる。
以上の通り、本実施形態によれば、Linux上で動作するOSSのアプリケーションと仮想ストレージ装置との間でデータ転送を行う場合、Linux管理外物理リソース内の領域とLinux管理内領域の領域間で発生する余分なデータ転送をなくし、性能向上を図ることができる。
また、OSが仮想ストレージ装置のために確保したメモリ領域が離散的に確保された場合であっても、電断時に退避すべきデータを退避することができる。
さらに、仮想ストレージ装置は、リストア処理によりストレージプログラムの仮想アドレスで退避されたデータにアクセスすることができる。
10:計算機
20:ネットワーク
30:クライアント
101−103:ネットワークIF
104:CPU
1041:コア
1042:DMAコントローラ
104a:ストレージプログラム
104b:OSS(FE/BEchip制御プログラム)
104c:OSS(FE/BEchip制御プログラム I/F)
104d:OS(Linux)
104e:BIOS
105:DRAM
106:SCM
107:ブートディスク
108:バックアップ用デバイス
120:ドライブ
301:OS管理内領域
302:OS管理外領域

Claims (12)

  1. 計算機であって、
    メモリと、
    前記メモリに接続されるプロセッサと、
    を備え、
    前記プロセッサは、OSを実行し、
    前記プロセッサは、OS上で複数のプロセスを実行し、前記複数のプロセスは、仮想ストレージ装置とアプリケーションを含み、
    前記プロセッサは、
    前記OSが管理する前記メモリの物理領域を、前記アプリケーションに提供し、
    前記計算機には搭載されているが、前記OSが管理いない前記メモリの物理領域を、前記仮想ストレージ装置が、利用するよう制御し、
    前記OSが管理するメモリの物理領域内から、連続する物理領域を確保し、前記仮想ストレージ装置に利用させることを特徴とする計算機。
  2. 請求項1に記載の計算機において、
    前記プロセッサは、
    前記OSが管理する前記メモリの物理領域を、OS管理内領域とし、前記OS管理内領域に仮想アドレスを割当てて前記アプリケーションに提供し、
    前記計算機には搭載されているが、前記OSが管理いない前記メモリの物理領域を、OS管理外領域として管理し、
    前記OS管理内領域から、確保した連続する物理領域を用いて、前記仮想ストレージ装置と前記アプリケーションの間で、DMA転送を行う、ことを特徴とする計算機。
  3. 請求項2に記載の計算機において、
    ブートディスクを更に備え、
    前記ブートディスクに、前記メモリの領域毎に、前記OSの仮想先頭アドレスと、前記OS管理内領域か否かの情報と、を管理するマッピングテーブルを、格納することを特徴とする計算機。
  4. 請求項3に記載の計算機において、
    前記プロセッサによる、前記OS管理内領域から、連続する物理領域の確保は、hugepageの機能を用いて行うことを特徴とする計算機。
  5. 請求項4に記載の計算機において、
    前記メモリは、
    前記OS管理内領域の物理領域を管理するため、前記hugepageのサイズに対し、前記hugepageの予約数と前記hugepageの割当済数とを管理するhugepage数管理テーブルと、
    前記メモリの前記OS管理外領域の先頭物理アドレスに対応する情報、前記仮想ストレージ装置に割当て済みの物理アドレスと、を管理するOS管理外管理テーブルと、を格納することを特徴とする計算機。
  6. 請求項5に記載の計算機において、
    前記プロセッサは、
    前記マッピングテーブルを参照し、対象領域が前記OS管理内領域か否かを判断し、
    前記対象領域が、前記OS管理内領域でなければ、前記OS管理外管理テーブルの前記割当て済みの物理アドレスから要求サイズ分の物理アドレスを、前記マッピングテーブルの前記仮想先頭アドレスから割当て、前記OS管理外管理テーブルの前記割当て済みの物理アドレスを更新し、
    前記対象領域が、前記OS管理内領域であれば、前記hugepage数管理テーブルを参照して、要求サイズより大きいhugepageを選択し、前記マッピングテーブルの前記仮想先頭アドレスから、前記選択されたhugepageによって確保された物理領域を割当て、前記hugepage数管理テーブルの前記割当済数を更新する、ことを特徴とする計算機。
  7. 請求項6に記載の計算機において、
    前記マッピングテーブルは、前記メモリの領域毎に、当該領域が電断時に退避すべきデータを格納しているかを示す電断時対象フラグを管理し、
    前記プロセッサは、
    前記電断時対象フラグにより、当該領域が電断時に退避すべきデータを格納している領域である場合、前記OS管理外管理テーブルの前記割当て済みの物理アドレス、或いは、前記選択されたhugepageによって確保された物理領域の先頭物理アドレスを、当該領域の先頭物理アドレスとし、当該領域のサイズと共にバックアップデバイス内の物理アドレスと対応付けて管理する保護対象管理テーブルを作成する、ことを特徴とする計算機。
  8. 請求項7に記載の計算機において、
    前記メモリは、揮発性メモリと不揮発性メモリとを含み、
    前記マッピングテーブルは、更に、前記メモリの領域毎に、当該領域が配置されるメモリが揮発性メモリか不揮発性メモリかを示す情報と、当該領域が電断時に退避すべきデータを格納しているかを示す電断時対象フラグとを、更に管理する、ことを特徴とする計算機。
  9. 請求項7に記載の計算機において、
    前記計算機は、バックアップ用デバイスを有し、
    前記保護対象管理テーブルの前記バックアップデバイス内の物理アドレスは、前記バックアップ用デバイスにおける退避データの格納先アドレスを管理することを特徴とする計算機。
  10. 請求項9に記載の計算機において、
    前記プロセッサは、前記バックアップ用デバイスに退避された退避データを、前記マッピングテーブルの対応する領域の仮想先頭アドレスに対応させてリストアすることを特徴とする計算機。
  11. メモリと、前記メモリに接続されるプロセッサと、を備える計算機のメモリ管理方法であって、
    前記プロセッサは、
    OSを実行し、
    OS上で複数のプロセスを実行し、前記複数のプロセスは、仮想ストレージ装置とアプリケーションを含み、
    前記OSが管理する前記メモリの物理領域を、前記アプリケーションに提供し、
    前記計算機には搭載されているが、前記OSが管理いない前記メモリの物理領域を、前記仮想ストレージ装置が、利用するよう制御し、
    前記OSが管理するメモリの物理領域内から、連続する物理領域を確保し、前記仮想ストレージ装置に利用させ、
    前記確保した連続する物理領域を用いて、前記仮想ストレージ装置と前記アプリケーションの間で、DMA転送を行う、ことを特徴とするメモリ管理方法。
  12. メモリと、記憶装置と、前記メモリ及び前記記憶装置に接続されるプロセッサと、ネットワークに接続される第1のインタフェースと、前記記憶装置に接続される第2のインタフェースと、を備える計算機のメモリ管理方法であって、
    前記プロセッサは、
    OSを実行し、
    OS上で複数のプロセスを実行し、前記複数のプロセスは、仮想ストレージ装置とアプリケーションを含み、
    前記OSが管理する前記メモリの物理領域を、前記アプリケーションに提供し、
    前記計算機には搭載されているが、前記OSが管理いない前記メモリの物理領域を、前記仮想ストレージ装置が、利用するよう制御し、
    前記OSが管理するメモリの物理領域内から、連続する物理領域を確保し、前記仮想ストレージ装置に利用させ、
    前記確保した連続する物理領域を用いて、
    前記第1のインタフェース或いは前記第2のインタフェースと前記仮想ストレージとの間で、データ転送を行う、ことを特徴とするメモリ管理方法。
JP2020023760A 2020-02-14 2020-02-14 計算機システム及びメモリ管理方法 Active JP6972202B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020023760A JP6972202B2 (ja) 2020-02-14 2020-02-14 計算機システム及びメモリ管理方法
US17/029,329 US11416409B2 (en) 2020-02-14 2020-09-23 Computer system and memory management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020023760A JP6972202B2 (ja) 2020-02-14 2020-02-14 計算機システム及びメモリ管理方法

Publications (2)

Publication Number Publication Date
JP2021128627A true JP2021128627A (ja) 2021-09-02
JP6972202B2 JP6972202B2 (ja) 2021-11-24

Family

ID=77272857

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020023760A Active JP6972202B2 (ja) 2020-02-14 2020-02-14 計算機システム及びメモリ管理方法

Country Status (2)

Country Link
US (1) US11416409B2 (ja)
JP (1) JP6972202B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115309538A (zh) * 2021-05-08 2022-11-08 戴尔产品有限公司 存储资源之间的基于多指标的工作负荷平衡
CN114116035B (zh) * 2022-01-26 2022-05-10 深圳市吉方工控有限公司 Windows下的BIOS设置方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005028687A (ja) * 2003-07-10 2005-02-03 Ricoh Co Ltd 画像処理装置,情報処理装置およびメモリディスク管理方法
WO2017056310A1 (ja) * 2015-10-02 2017-04-06 株式会社日立製作所 計算機および計算機の制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050165837A1 (en) * 2004-01-22 2005-07-28 International Business Machines Corporation System and method for embedded java memory footprint performance improvement
US8473691B2 (en) * 2009-02-27 2013-06-25 Ryosuke Ohgishi Memory management device, image forming apparatus, and image forming method
WO2010122677A1 (en) * 2009-04-23 2010-10-28 Hitachi,Ltd. Storage apparatus and its program processing method and storage controller
US10108550B2 (en) * 2016-09-22 2018-10-23 Google Llc Memory management supporting huge pages

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005028687A (ja) * 2003-07-10 2005-02-03 Ricoh Co Ltd 画像処理装置,情報処理装置およびメモリディスク管理方法
WO2017056310A1 (ja) * 2015-10-02 2017-04-06 株式会社日立製作所 計算機および計算機の制御方法

Also Published As

Publication number Publication date
JP6972202B2 (ja) 2021-11-24
US20210255959A1 (en) 2021-08-19
US11416409B2 (en) 2022-08-16

Similar Documents

Publication Publication Date Title
US11360679B2 (en) Paging of external memory
US11797181B2 (en) Hardware accessible external memory
EP3188449B1 (en) Method and system for sharing storage resource
US9612966B2 (en) Systems, methods and apparatus for a virtual machine cache
KR20200017363A (ko) 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭
US10289564B2 (en) Computer and memory region management method
JP6972202B2 (ja) 計算機システム及びメモリ管理方法
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
US20230229330A1 (en) Storage system and cooperation method
WO2019043815A1 (ja) ストレージシステム
EP3889778B1 (en) Distributed storage system and computer program product
JP7118108B2 (ja) クラウドサーバ、ストレージシステム、及び計算機システム
JP7490714B2 (ja) メモリシステムおよび制御方法
US20230359397A1 (en) Method for managing storage system, storage system, and computer program product
US20140208023A1 (en) Storage system and control method for storage system
WO2017163322A1 (ja) 管理計算機、および計算機システムの管理方法
JP2015141508A (ja) データ記憶制御装置、データ記憶制御方法、及び、データ記憶制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210922

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211012

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211102

R150 Certificate of patent or registration of utility model

Ref document number: 6972202

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150