JP2021043654A - 情報処理装置及びプロセス配置決定プログラム - Google Patents

情報処理装置及びプロセス配置決定プログラム Download PDF

Info

Publication number
JP2021043654A
JP2021043654A JP2019164643A JP2019164643A JP2021043654A JP 2021043654 A JP2021043654 A JP 2021043654A JP 2019164643 A JP2019164643 A JP 2019164643A JP 2019164643 A JP2019164643 A JP 2019164643A JP 2021043654 A JP2021043654 A JP 2021043654A
Authority
JP
Japan
Prior art keywords
memory
access
list
processes
determination unit
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.)
Ceased
Application number
JP2019164643A
Other languages
English (en)
Inventor
智史 今村
Satoshi Imamura
智史 今村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019164643A priority Critical patent/JP2021043654A/ja
Priority to US16/935,252 priority patent/US11487582B2/en
Publication of JP2021043654A publication Critical patent/JP2021043654A/ja
Ceased legal-status Critical Current

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/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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

【課題】互いに処理速度の異なる第1及び第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサを備える情報処理装置における、処理性能の低下を抑制する。【解決手段】サーバ1は、第1メモリ3と、第1メモリ3とは処理速度の異なる第2メモリ4と、第1及び第2メモリ3、4と接続され、第1及び第2メモリ3、4に対するプロセスによるアクセスを制御するメモリコントローラ2c、を有するプロセッサ2と、を含むグループを複数備える。第1プロセッサ2は、複数のグループにおける、第1及び第2メモリ3、4のいずれかに格納されたデータにアクセスする複数のプロセスの各々の特性に基づき、複数のプロセッサ2に対する複数のプロセスの各々の配置を決定する決定部を備える。【選択図】図7

Description

本発明は、情報処理装置及びプロセス配置決定プログラムに関する。
サーバやPC(Personal Computer)等の情報処理装置においては、CPU(Central Processing Unit)等のプロセッサにより、主記憶装置、例えばDRAM(Dynamic Random Access Memory)等のメモリに対するアクセスが行なわれる。
プロセッサは、1以上のCPUコア(単に「コア」と称されてもよい)と、メモリコントローラとを備える。コアは、メモリに格納されたデータにアクセスするプロセス(「プログラム」と称されてもよい)を実行し、メモリコントローラは、実行されるプロセスのアクセス対象であるメモリへのアクセスを制御する。
また、情報処理装置においては、複数のプロセッサを備えるマルチプロセッサシステムが知られている。マルチプロセッサシステムにおいて、複数のプロセッサに対する複数のプロセスの配置は、プロセッサが実行するOS(Operating System)により実行される。
特開2015−184794号公報 特開2018−022345号公報 特開2013−047950号公報 特開2017−062666号公報
"A Case for NUMA-aware Contention Management on Multicore Systems"、Sergey Blagodurov et al.、USENIX Annual Technical Conference 2011、Scheduling session 15th of June, 2011
近年、次世代メモリ技術を採用したメモリが登場している。このようなメモリとしては、例えば、3D XPoint(登録商標)技術を採用したIntel Optane DC Persistent Memory(以下、「PM」と表記する場合がある)(登録商標)が知られている。
PMは、DRAMと比較して、処理性能(特に書込性能)が低い(一例として10分の1程度)ものの、安価で大容量(一例として10倍程度)である。
PMは、DRAMと同様に、例えばDIMM(Dual Inline Memory Module)スロット等のメモリスロットに搭載可能であり、メモリコントローラは、DRAM及びPMの双方に対するアクセスを制御する。換言すれば、第1メモリの一例であるDRAMと、DRAMとは処理性能(処理速度)の異なる第2メモリの一例であるPMとが、同一の記憶(メモリ)階層に混在することになる。
しかしながら、複数のプロセッサに対する複数のプロセスの配置は、メモリコントローラがDRAMを制御することを想定しており、DRAMとPMとが同一の記憶階層に混在し、DRAM及びPMの双方を制御する場合については想定されていない。
例えば、1つのプロセッサにおいて、DRAMにアクセスするプロセスとPMにアクセスするプロセスとを含む複数のプロセスが並行して実行されると、メモリコントローラにおいてDRAMに対する処理及びPMに対する処理の競合が発生する場合がある。この場合、メモリコントローラにおいて処理時間(処理遅延)が増加するため、プロセッサの処理性能が低下する可能性がある。
1つの側面では、本発明は、互いに処理速度の異なる第1及び第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサを備える情報処理装置における、処理性能の低下を抑制することを目的の1つとする。
1つの側面では、情報処理装置は、第1メモリと、前記第1メモリとは処理速度の異なる第2メモリと、プロセッサと、を含むグループを複数備えてよい。前記プロセッサは、前記第1メモリ及び前記第2メモリと接続され、前記第1メモリ及び前記第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有してよい。前記複数のプロセッサのうちの第1プロセッサは、決定部を備えてよい。前記決定部は、複数の前記グループにおける、前記第1メモリ及び前記第2メモリのいずれかに格納されたデータにアクセスする複数の前記プロセスの各々の特性に基づき、前記複数のプロセッサに対する前記複数のプロセスの各々の配置を決定してよい。
1つの側面では、互いに処理速度の異なる第1及び第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサを備える情報処理装置における処理性能の低下を抑制することができる。
情報処理装置が備える各コンポーネントの処理速度及び記憶容量の一例を示す図である。 DRAM及びPMの双方をメモリとして搭載するサーバのハードウェア(HW)構成例を示すブロック図である。 単一のCPUソケットにおいて、DRAMにアクセスする4つのプロセスが同時に実行される場合の処理性能の一例を示す図である。 メモリアクセス頻度に基づきCPUソケット間でプロセスを配置する手法の一例を示す図である。 サーバにおける、CPU、DRAM及びPMの接続構成例を示すブロック図である。 一実施形態に係るサーバのHW構成例を示すブロック図である。 一実施形態に係るサーバのプロセッサ及びメモリに着目したHW構成例を示すブロック図である。 一実施形態に係るサーバの機能構成例を示すブロック図である。 配置リストの一例を示す図である。 プロセスリストの一例を示す図である。 図10に例示するプロセスリストに基づき、配置決定部がプロセスの配置決定を行なう際に設定される配置リストの一例を示す図である。 OSの配置処理部により、図11に例示する配置リストに従い、プロセッサにプロセスが配置される場合の一例を示す図である。 図4に例示する手法により、プロセッサにプロセスが配置される場合の一例を示す図である。 一実施形態に係るサーバの動作例を示すフローチャートである。 図14に示すPMライトプロセスの配置決定処理の動作例を示すフローチャートである。 図14に示すPMランダムリードプロセスの配置決定処理の動作例を示すフローチャートである。 図14に示すメモリアクセス頻度に基づくプロセスの配置決定処理の動作例を示すフローチャートである。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
〔1−1〕DRAM及びPMを用いたハイブリッドメモリシステムについて
図1は、情報処理装置が備える各コンポーネント(モジュール)110〜150の処理速度(処理性能)、及び、コンポーネントが記憶装置の場合にはその記憶容量、の一例を示す図である。
図1に例示するように、コンポーネントを処理速度の高い順に並べると、CPU110、DRAM120、PM130、SSD(Solid State Drive)140、HDD(Hard Disk Drive)150となる。コンポーネントを記憶容量の大きい順に並べると、HDD150、SSD140、PM130、DRAM120となる。DRAM120をSSD140と比較すると、処理速度は1000倍程度であり、記憶容量は1000分の1程度となる。PM130は、処理速度及び記憶容量の観点ではDRAM120とSSD140との間に位置し、DRAM120をPM130と比較すると、処理速度は10倍程度であり、記憶容量は10分の1程度となる。
このように、PM130は、DRAM120と比較して、処理性能(特に書込性能)が低く、また、書込耐性が低いものの、安価で大容量である。また、PM130は、DRAM120と同様に、バイト単位のアクセスが可能であり、例えばDIMMスロット等のメモリスロットに搭載可能である。さらに、PM130は、DRAM120とは異なり不揮発性であるため、電源遮断時にデータが消失しない。
これらの理由から、DRAM120及びPM130の双方をメモリ(主記憶装置)として搭載する情報処理装置が普及することが想定される。
図2は、DRAM120及びPM130の双方をメモリとして搭載するサーバ100のハードウェア(HW)構成例を示すブロック図である。
図2に示すように、サーバ100は、例示的に、複数(図2の例では2つ)のCPUソケットを搭載し、各CPUソケットにCPU110を備える。サーバ100は、DRAM120及びPM130を用いてハイブリッドメモリシステムを構成する。ハイブリッドメモリシステムでは、第1メモリの一例であるDRAM120と、DRAM120とは処理性能(処理速度)の異なる第2メモリの一例であるPM130とが、同一の記憶(メモリ)階層に混在するシステムである。
各CPU110は、複数のコア(図2では「C」と表記)112、ラストレベルキャッシュ(図2では「LLC」と表記)114、及び、メモリコントローラ(図2では「MC」と表記)116を備える。
各CPUソケット(CPU110)では、複数のコア112により複数のプロセスが同時に(並行して)実行される。各プロセスは、DRAM120及びPM130のいずれか一方にデータを格納する。例えば、図2に示すように、CPU#0では、コア112により実行されるプロセス0のデータはPM#0に格納され、プロセス1のデータはDRAM#0に格納される。また、CPU#1では、コア112により実行されるプロセス2のデータはDRAM#1に格納され、プロセス3のデータはPM#1に格納される。
LLC114は、CPU110が備える複数階層のキャッシュメモリのうちの最下層(換言すればMC116側)のキャッシュメモリである。図2の例では、LLC114以外のキャッシュメモリの図示を省略している。LLC114は、CPU110の種類によって異なり、一例として、L1(1次)キャッシュ、L2(2次)キャッシュ、L3(3次)キャッシュ、・・・、等と呼ばれるキャッシュメモリのうち、“L”に続く数値が最も大きいキャッシュメモリに相当する。
各CPU110のMC116は、1以上(図2の例では1つ)のDRAM120、及び、1以上(図2の例では1つ)のPM130と、同じメモリチャネルを介して接続され、DRAM120及びPM130の双方を管理する。例えば、MC116は、DRAM120及びPM130のそれぞれに、互いに異なるアドレス範囲を対応付け、コア112から指定されたメモリアドレスに応じて、共有のメモリチャネルを介して、DRAM120又はPM130に択一的にアクセスしてよい。
このため、DRAM120へのアクセスと、PM130へのアクセスとの間で、MC116の競合が発生する場合がある。
図3は、単一のCPUソケットにおいて、DRAM120にアクセスする4つのプロセスが同時に実行される場合の処理性能の一例を示す図である。例えば、図3では、主記憶装置がDRAM120のみによって構成される場合を想定する。図3において、横軸は、プロセスの種類を示す。また、左縦軸(折れ線グラフ)は、プロセスの性能低下の割合を示し、右縦軸(棒グラフ)は、1000命令あたりのLLC114で発生するキャッシュミスの回数(LLC MPKI)を示す。
LLC MPKIが大きいほど、1000命令あたりのキャッシュミスの回数が多く、DRAM120へのアクセス回数が多い(アクセス頻度が高い)ことを意味する。すなわち、LLC MPKIは、メモリアクセス頻度の一例であると捉えることができる。
図3に例示するように、単一のCPUソケットにおいて、4つのプロセスが同時に実行される場合、プロセスが単独で実行される場合に比べて、各プロセスの性能が低下する。これは、LLC114及びMC116等の共有メモリ資源において競合が発生することが要因である。また、メモリアクセス頻度、一例としてLLC MPKIが高いプロセスほど、性能の低下が大きい。
そこで、例えば、メモリアクセス頻度に基づき、CPUソケット間でプロセスを適切に配置することが考えられる。図4は、メモリアクセス頻度に基づきCPUソケット間でプロセスを配置する手法の一例を示す図である。図4に例示するように、4つのプロセスをLLC MPKIが大きい順序でソートすると、A、B、X及びYの順となる。
図4の紙面左側には、CPU110及びDRAM120を含む2つのドメイン160のうち、「ドメイン#0」にプロセスA及びBが配置され、「ドメイン#1」にプロセスX及びYが配置される例を示す。この場合、LLC MPKIが高いプロセスA及びBが単一のドメイン#0に集中する。従って、図4に濃い網掛けで示すように、ドメイン#0におけるLLC114、MC116及びメモリノード#0(DRAM120)に処理負荷が集中し、処理性能の低下が発生する。
なお、図4において、プロセス、LLC114、MC116、HT118及びDRAM120の網掛けの濃度が高いほど、処理負荷(競合の発生頻度)が高いことを意味する。HT118は、他のドメイン160と通信を行なうハイパートランスポートである。
これに対し、図4の紙面右側には、「ドメイン#0」にプロセスA及びYが配置され、「ドメイン#1」にプロセスB及びXが配置される例を示す。図4の紙面右側の例では、メモリアクセス頻度が高いプロセスを、なるべく互いに異なるCPUソケットに分散配置し、各プロセスのデータを、配置したCPUソケットのDRAM120に格納する。これにより、図4の紙面右側の例では、LLC114、MC116、HT118及びDRAM120の網掛けの濃度をドメイン160間で均一にすることができる。換言すれば、各CPUソケットにおける、LLC114やMC116等の競合を緩和させることができる。
しかしながら、DRAM120及びPM130を含むハイブリッドメモリシステムにおいては、発明者による検証により、メモリアクセス頻度が同程度であっても、同時に実行されるプロセスの種類によって、性能低下の度合いが大きく異なることがわかった。例えば、単一のCPUソケットで同時に実行されるプロセスの種類(「特性」又は「特徴」と称されてもよい)に応じて、以下の(i)及び(ii)に示す傾向が得られた。
なお、以下、単に「アクセス」と表記する場合、「ランダムアクセス」及び「シーケンシャル(逐次)アクセス」の一方又は双方を意味するものとする。「アクセス」とは、「リード」及び「ライト」の一方又は双方を意味するものとする。
(i)「DRAMにアクセスする第1プロセス」+「PMからランダムリードを行なう第2プロセス」の組み合わせの場合、両者の同時(並列)実行による性能低下が小さい。
(ii)「メモリアクセス頻度が高い第3プロセス」+「PMにライトを行なう第4プロセス」の組み合わせの場合、第3プロセスの性能低下の度合いは大きいが、第4プロセスの性能低下の度合いは小さい。
上記(i)の理由の1つとして、ランダムアクセスは、他のプロセスのメモリアクセスを阻害しにくいことが挙げられる。
図5は、サーバ100における、CPU110、DRAM120及びPM130の接続構成例を示すブロック図である。図5に示すように、1つのDRAM120と1つのPM130とは、共通のメモリチャネル170を利用するグループ(セット)を構成する。図5では、同じグループを構成するDRAM120及びPM130を、共通の添え字“x”(“x”は0以上の整数)を用いて「DRAM#x」及び「PM#x」と表記する。
なお、図5の例では、DRAM120とPM130とがカスケード状に接続されているが、これに限定されるものではなく、バッファ等の回路を介してDRAM120とPM130とが並列に接続されてもよい。また、DRAM120及びPM130のグループには、2つ以上のDRAM120、及び/又は、2つ以上のPM130が含まれてもよい。
CPU110とDRAM120及びPM130の複数のグループとの間は、複数のメモリチャネル170(便宜上、メモリチャネル#xと表記する場合がある)により並列に接続される。各メモリチャネル170において、DRAM120及びPM130には、互いに異なるアドレス範囲が割り当てられ、MC116は、アクセス対象のメモリアドレスに応じて、メモリチャネル170を介してDRAM120又はPM130に択一的にアクセスする。
従って、例えば、CPU#0において、DRAMにアクセスする第1プロセスとPMにシーケンシャルアクセスする第2プロセスとが同時に実行される場合、第2プロセスのアクセスはメモリチャネル#0〜#5にインターリーブされるため、第1プロセスのメモリアクセスが阻害される。
これに対し、例えば、DRAMにアクセスする第1プロセスと、PM130にランダムアクセスする第2プロセスとが同時に実行される場合、ランダムアクセスのアクセス対象がPM#0〜PM#5に分散されない。このため、第1プロセスによるDRAMへのアクセスと、第2プロセスによるPMへのランダムアクセスとの競合度合いが小さくなる。なお、第2プロセスがPM130にランダムライトを行なう場合、上述のように、PM130は書込性能がDRAM120と比較して低いため、ランダムリードの場合よりは第1プロセスとの間で競合が発生し易くなる。
また、上記(i)の他の理由として、メモリアクセスがDRAM120とPM130とに分かれることで、互いの干渉が緩和されることが挙げられる。
例えば、複数のプロセスが同じDRAM120へのメモリアクセスを行なう場合、当該DRAM120のバッファにおいて競合が発生する。これに対し、第1プロセスがDRAM120にアクセスし、第2プロセスがPM130にアクセスする場合、PM130のバッファとDRAM120のバッファとにデータが分散するため、バッファにおける競合が緩和される。
さらに、上記(ii)の理由の1つとして、長い処理時間を要するPM130へのライトリクエストが、MC116のキューに溜まり、PM130へのライトリクエストが第3プロセスのメモリアクセスよりも優先して処理されることが挙げられる。
MC116には、DRAM120及びPM130のそれぞれに対応するキュー(共通のキューであってもよい)が設けられ、メモリアクセスリクエストがより滞留しているキューを優先して処理する。このため、第4プロセスのメモリアクセスは、第3プロセスよりも優先して処理され、性能低下の度合いは小さいが、第3プロセスのメモリアクセスは遅延し、性能低下の度合いが大きくなる。
ここで、上記(i)及び(ii)における第1プロセス及び第3プロセスが、それぞれ図4に示すプロセスA及びBであり、第2プロセス及び第4プロセスが、それぞれ図4に示すプロセスY及びXである場合を想定する。
この場合、ドメイン#0では、上記(i)の例と同様にプロセスA及びYの性能低下の度合いが小さくなるが、ドメイン#1では、上記(ii)の例と同様にプロセスBの性能低下の度合いが大きくなる。
このように、ハイブリッドメモリシステムでは、上記(i)及び(ii)に例示する傾向により、図4を参照して説明した手法では、プロセスを適切に配置することが困難となる場合がある。
そこで、一実施形態においては、互いに処理速度の異なる第1及び第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサを備える情報処理装置における、処理性能の低下を抑制する手法を説明する。
〔1−2〕一実施形態の構成例
〔1−2−1〕ハードウェア構成例
図6は、一実施形態に係るサーバ1のHW構成例を示すブロック図である。サーバ1は、情報処理装置の一例である。情報処理装置としては、サーバに代えて、例えば、PC、メインフレーム等の種々のコンピュータが挙げられる。サーバ1は、HW構成として、例示的に、プロセッサ1a、メモリ1b、記憶部1c、IF(Interface)部1d、I/O(Input / Output)部1e、及び、読取部1fを備えてよい。
プロセッサ1aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ1aは、サーバ1内の各ブロックとバス1iで相互に通信可能に接続されてよい。一実施形態において、プロセッサ1aは、複数のプロセッサ(例えば複数のCPU)を含むマルチプロセッサであってよい。また、複数のプロセッサの各々は、複数のプロセッサコアを有するマルチコアプロセッサであってよい。
図7は、一実施形態に係るサーバ1のプロセッサ1a及びメモリ1bに着目したHW構成例を示すブロック図である。図7に例示するように、図6に示すプロセッサ1aは、複数(図7の例では2つ)のプロセッサ2であってよい。各プロセッサ2は、複数のコア(「C」と表記)2a、LLC2b、及び、MC2cを備えてよい。コア2aは、複数のプロセッサ2間は、各プロセッサ2内のHT等のIFを介して、インターコネクト等により相互に通信可能に接続されてよい。
LLC2bは、プロセッサ2が備える複数階層のキャッシュメモリのうちの最下層(換言すればMC2c側)のキャッシュメモリである。図7の例では、LLC2b以外のキャッシュメモリの図示を省略している。
MC2cは、1以上(図7の例では1つ)のDRAM3、及び、1以上(図7の例では1つ)のPM4と、同じ(共通の)メモリチャネル5を介して接続され、DRAM3及びPM4の双方を管理する。例えば、MC2cは、DRAM3及びPM4のそれぞれに、互いに異なるアドレス範囲を対応付け、コア2aから指定されたメモリアドレスに応じて、共有のメモリチャネル5を介して、DRAM3又はPM4に択一的にアクセスしてよい。換言すれば、MC2cは、DRAM3及びPM4に対するプロセスによるアクセスを制御してよい。
なお、プロセッサ1aとしては、CPUに代えて、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が用いられてもよい。MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
図6の説明に戻り、メモリ1bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ1bとしては、例えばDRAM等の揮発性メモリ、及び、PM等の不揮発性メモリの双方が挙げられる。すなわち、一実施形態に係るサーバ1は、DRAM及びPMを用いるハイブリッドメモリシステムを実現してよい。
例えば、図7に示すように、メモリ1bは、プロセッサ2ごとに、1以上のDRAM3と1以上のPM4とのグループ(セット)を含んでよい。図7の例では、説明の簡略化のため、プロセッサ2(或いはMC2c)ごとにDRAM3及びPM4が1つずつ備えられるものとするが、これに限定されるものではない。例えば、図5に示すように、MC116(MC2c)ごとに、DRAM3及びPM4のグループが2つ以上備えられてもよい。
なお、DRAM3は、第1メモリの一例であり、PM4は、第1メモリとは処理速度の異なる(例えば低速である)第2メモリの一例である。
図6の説明に戻り、記憶部1cは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部1cとしては、例えばSSD(Solid State Drive)等の半導体ドライブ装置、HDD(Hard Disk Drive)等の磁気ディスク装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
また、記憶部1cは、サーバ1の各種機能の全部若しくは一部を実現するプログラム1gを格納してよい。例えば、サーバ1のプロセッサ1aは、記憶部1cに格納されたプログラム1g(プロセス配置決定プログラム)をメモリ1bに展開して実行することにより、図7に示す後述する処理部10としての機能を実現できる。処理部10の機能は、後述する、OS20、決定プロセス30、及び、複数のプロセス40の機能を含んでよい。
IF部1dは、図示しないネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部1dは、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、光通信(例えばFC(Fibre Channel;ファイバチャネル))等に準拠したアダプタを含んでよい。例えば、プログラム1gは、当該通信IFを介して、ネットワークからサーバ1にダウンロードされ、記憶部1cに格納されてもよい。
I/O部1eは、マウス、キーボード、又は操作ボタン等の入力部、並びに、タッチパネルディスプレイ、LCD(Liquid Crystal Display)等のモニタ、プロジェクタ、又はプリンタ等の出力部、の一方又は双方を含んでよい。
読取部1fは、記録媒体1hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部1fは、記録媒体1hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部1fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体1hにはプログラム1gが格納されてもよく、読取部1fが記録媒体1hからプログラム1gを読み出して記憶部1cに格納してもよい。
記録媒体1hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
上述したサーバ1のHW構成は例示である。従って、サーバ1内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。
〔1−2−2〕機能構成例
図8は、一実施形態に係るサーバ1の機能構成例を示すブロック図である。図8に示すように、サーバ1は、一実施形態に係るプロセス配置に関する機能に着目すると、例示的に、処理部10の機能を備えてよい。処理部10は、図7に例示するサーバ1の複数のプロセッサ2が、DRAM3又はPM4に展開したプログラム1gを実行することにより実現されてよい。
図8に示すように、処理部10は、例示的に、オペレーティングシステム(OS)20、決定プロセス30、及び、複数のプロセス40を備えてよい。
OS20は、サーバ1の管理及び制御を行なう基本ソフトウェアの一例であり、種々のアプリケーションに対して、サーバ1のHW資源及び/又はソフトウェア(SW)資源を利用可能とするソフトウェアである。
OS20は、例示的に、配置リスト21、及び、配置処理部22を備えてよい。
図9は、配置リスト21の一例を示す図である。配置リスト21は、サーバ1が備える各プロセッサソケット(換言すればプロセッサ2)に配置するプロセスを記録するリストである。図9に示すように、配置リスト21は、例示的に、ソケットID(Identifier)、及び、プロセスIDの項目を含んでよい。ソケットIDは、プロセッサ2が実装されるソケット、例えばCPUソケットの識別情報の一例である。プロセスIDは、ソケットに配置されるプロセス40の識別情報の一例である。
一実施形態において、ソケットへの配置対象となるプロセス40は、処理部10で実行される全てのプロセス40のうちの一部のプロセス40に制限されてもよい。例えば、配置対象となるプロセス40は、一定以上の処理負荷が見込まれる、特定種別のプロセス40に制限されてもよい。なお、一実施形態に係るプロセス配置決定プログラムのプロセス40は、配置対象となるプロセス40からは除外されてもよい。
特定種別のプロセス40としては、一例として、VM(Virtual Machine)やコンテナ等のプロセス40が挙げられる。配置対象となるプロセス40がVMである場合、以下の説明において、「OS20」を「ハイパバイザ」に読み替えてよい。
また、特定種別のプロセス40は、例えば、処理負荷を表すパラメータが閾値を超えるプロセス40を含んでもよい。処理負荷を表すパラメータとしては、例えば、コア2aの使用率、ネットワークの帯域使用率、及び、後述するメモリアクセス頻度、等のうちの少なくとも1種類が挙げられる。パラメータの閾値は、例えば、パラメータの種類ごとに設定されてもよい。
なお、一実施形態において、配置対象のプロセス40の数は、サーバ1が実行する複数のプロセス40のうちの、プロセッサ2のソケット数よりも多い数であることを想定する。例えば、一実施形態では、図4に示す例と同様に、ソケット数が「2」であるのに対し、配置対象のプロセス40の数が「4」である場合を想定する。
OS20は、後述する決定プロセス30から配置リスト35を通知されると、配置処理部22による配置処理のために、通知された配置リスト21をDRAM3等のメモリ1bの記憶領域に格納してよい。なお、OS20は、配置リスト21を備えずに、決定プロセス30が生成する配置リスト35を利用してもよい。
配置処理部22は、配置リスト21(又は34)に基づき、プロセッサ2にプロセス40を配置する。例えば、配置処理部22は、配置リスト21に登録されているプロセスIDのプロセス40を、当該プロセスIDに対応付けられたソケットIDのプロセッサ2に配置してよい。
このように、OS20は、決定プロセス30による配置リスト35の決定後に、配置処理対象の各プロセス40のデータを、配置先のソケットに接続されたDRAM3もしくはPM4に移動させる。なお、OS20による、プロセス40のデータを移動させる処理は、既知の種々の手法により行なうことが可能であり、その詳細な説明は省略する。一例として、OS20による配置処理は、NUMA(Non-Uniform Memory Access)等のアーキテクチャにおいてサポートされる、データの配置手法が用いられてもよい。
決定プロセス30は、ハイブリッドメモリシステムにおける、各プロセス40の特徴を把握し、当該特徴を考慮したソケット間のプロセス40の配置を決定する。決定プロセス30は、例えば、サーバ1においてバックグランドで動作するソフトウェアとして実装されてよい。一例として、決定プロセス30は、OS20上でユーザレベルのソフトウェアとして動作するランタイムシステムであってもよい。なお、決定プロセス30は、複数のプロセス40の1つであってよく、いずれかのプロセッサ2内の1以上のコア2aにより実行されてよい。決定プロセス30を実行するプロセス40は、第1プロセッサの一例である。
図8に示すように、決定プロセス30は、例えば、情報取得部31、種類判定部32、プロセスリスト33、配置決定部34、及び、配置リスト35を備えてよい。
情報取得部31は、各プロセス40の種類を把握するための種々の情報を取得する。情報取得部31は、例示的に、以下の(a)の情報、並びに、(b)〜(d)のうちの少なくとも1つの情報を取得し、取得した情報を種類判定部32に出力(通知)してよい。
(a)各コア2aにおけるプロセス40ごとのLLC2bのキャッシュミス回数a
(b)各コア2aにおけるプロセス40ごとのロード回数b1、及び、ストア回数b2
(c)各コア2aにおけるプロセス40ごとの命令実行数c1、及び、プリフェッチ回数c2
(d)プロセス40ごとのアクセス先d(DRAMアクセス、又は、PMアクセス)
(a)、(b)及び(c)の情報は、例えば、各コア2aが備えるパフォーマンスカウンタ、及び、OS20から得られる情報に基づき、取得可能である。パフォーマンスカウンタは、コア2aにHWとして実装されてよい。
パフォーマンスカウンタは、例えば、LLC2bのキャッシュミス回数、ロード回数、ストア回数、命令実行数、及び/又は、プリフェッチ回数を、コア2a単位で計数してよい。OS20は、プロセス40が実行(配置)されるコア2aを示す情報を管理してよい。情報取得部31は、例えば、パフォーマンスカウンタ及びOS20からこれらの情報を取得し、取得した情報に基づき、(a)、(b)及び(c)の情報を取得してよい。
なお、パフォーマンスカウンタがLLC MPKIを算出可能である場合、情報取得部31は、パフォーマンスカウンタからLLC MPKIを取得してもよい。
(d)の情報は、例えば、OS20が管理するプロセス情報(図示省略)から取得可能である。プロセス情報は、プロセス40に関する情報であり、例示的に、各プロセス40が、DRAM3及びPM4のうちのいずれのメモリにアクセスするのかを判定可能な情報を含んでよい。換言すれば、プロセス情報は、プロセス40と、当該プロセス40のアクセス先のメモリとを対応付けた情報である。
以上のように、情報取得部31は、取得部の一例である。取得部としての情報取得部31は、複数のコア2aの各々から、コア2aが実行するプロセス40ごとのキャッシュミス回数、ロード回数、ストア回数、命令実行数、並びに、プリフェッチ回数、の少なくとも1種類の情報を取得してよい。また、取得部としての情報取得部31は、複数のプロセッサ2が実行するOS20から、複数のプロセス40の各々のアクセス先の情報を取得してよい。
種類判定部32は、情報取得部31が取得した情報に基づき、各プロセス40の種類を判定し、判定結果を用いてプロセスリスト33を作成する。プロセス40の種類の判定は、プロセス40の特徴(換言すれば、「特性」)の把握と読み替えてもよい。
図10は、プロセスリスト33の一例を示す図である。図10に示すように、プロセスリスト33は、例示的に、プロセスID、LLC MPKI、リード/ライト、逐次/ランダム、及び、DRAM/PMの項目を含んでよい。
プロセスIDは、配置対象のプロセス40の識別情報の一例である。LLC MPKIは、メモリアクセス頻度の一例である。リード/ライトは、プロセス40がリードインテンシブであるのか、ライトインテンシブであるのかを示す情報である。逐次/ランダムは、プロセス40が、逐次アクセスプロセスであるのか、ランダムアクセスプロセスであるのかを示す情報である。DRAM/PMは、プロセス40がDRAM3にアクセスするのか、PM4にアクセスするのかを示す情報である。
図10に示すように、プロセスリスト33は、LLC MPKIの降順でソートされてよい。換言すれば、プロセスリスト33には、メモリアクセス頻度が大きいプロセスIDから小さいプロセスIDに向かって順に、エントリが登録されてよい。
種類判定部32は、例えば、情報取得部31が取得した(a)の情報、及び、(b)〜(d)の少なくとも1つの情報に基づき、以下の(A)、並びに、(B)及び(C)の少なくとも1つの指標を判定し、判定結果を用いてプロセスリスト33を作成してよい。
(A)メモリアクセス頻度
(B)メモリアクセスパターン
(C)メモリアクセス先
上記(A)について、種類判定部32は、プロセス40ごとに、1000命令あたりのLLC2bで発生するキャッシュミスの回数(LLC MPKI)を算出し、プロセスリスト33に設定してよい。図10では、LLC MPKIを、上記(A)と対応付けて、符号Aで示す。
例えば、種類判定部32は、情報取得部31が取得した上記(a)のキャッシュミス回数aと、上記(c)の情報のうちの命令実行数c1とに基づき、下記(1)式によりLLC MPKIを算出してよい。
LLC MPKI = (a×1000)/c1 (1)
なお、パフォーマンスカウンタから、コア2aごと且つプロセス40ごとに、LLC MPKIの値そのものを取得可能である場合、種類判定部32は、上記(1)式による算出を省略し、情報取得部31が取得したLLC MPKIを用いてもよい。
上記(B)について、種類判定部32は、メモリアクセスパターン、換言すれば、プロセス40のアクセス傾向を判定してよい。アクセス傾向には、例えば、リードインテンシブ又はライトインテンシブの別(リード/ライト)と、逐次(シーケンシャル)アクセス又はランダムアクセスの別(逐次/ランダム)と、が含まれてよい。種類判定部32は、これらのアクセス傾向を判定し、判定結果をプロセスリスト33に設定してよい。図10では、リード/ライト、及び、逐次/ランダムを、上記(B)と対応付けて、それぞれ、符号B1及びB2で示し、これらをまとめて符号Bで示す。
例えば、種類判定部32は、プロセス40がリードインテンシブであるのか、ライトインテンシブであるのかを、下記(2)式による各プロセス40のリードアクセス率の算出結果と、閾値とを比較することで判定してよい。なお、下記(2)式において、b1及びb2は、それぞれ、上記(b)で取得したロード回数b1(#loads)及びストア回数b2(#stores)である。
リードアクセス率 = (b1/(b1+b2))×100[%] (2)
例えば、種類判定部32は、算出したリードアクセス率が、閾値である90%以上である場合に、リードアクセスプロセス(リードインテンシブ)であると判定し、90%未満である場合に、ライトアクセスプロセス(ライトインテンシブ)であると判定してよい。
また、例えば、種類判定部32は、プロセス40が逐次アクセスプロセスであるのか、ランダムアクセスプロセスであるのかを、下記(3)式による、各プロセス40の1000命令あたりのプリフェッチ回数の算出結果と、閾値とを比較することで判定してよい。なお、下記(3)式において、c1及びc2は、それぞれ、上記(c)で取得した命令実行数c1(#instructions)、及び、プリフェッチ回数c2(#prefetches)である。
プリフェッチ回数 = (c2×1000)/c1 (3)
例えば、種類判定部32は、算出したプリフェッチ回数が、閾値である10回以上である場合に、逐次アクセスプロセスであると判定し、10回未満である場合に、ランダムアクセスプロセスであると判定してよい。
なお、リードアクセス率、及び、プリフェッチ回数の閾値は、それぞれ、「90%」及び「10回」に限定されるものではなく、サーバ1の構成、プロセッサ2、DRAM3又はPM4等の処理性能又はアクセス性能、等の種々の条件に応じて設定されてよい。
上記(C)について、種類判定部32は、上記(d)で取得したアクセス先dに基づいて、プロセス40ごとに、アクセス先のメモリ(DRAM/PM)を判定し、プロセスリスト33に設定してよい。図10では、DRAM/PMを、上記(C)と対応付けて、符号Cで示す。
以上のように、種類判定部32は、複数のプロセス40の各々の特性として、アクセスの頻度、アクセスの傾向、及び、アクセスの対象であるDRAM3又はPM4、を判定する判定部の一例である。判定部としての種類判定部32は、複数のプロセス40の各々についてのアクセスの頻度、アクセスの傾向、及び、アクセスの対象を、アクセスの頻度に応じてソートしたプロセスリスト33を生成してよい。
配置決定部34は、プロセスリスト33に基づき、プロセッサ2に対する複数の配置対象のプロセス40の各々の配置を決定する。配置決定部34は、例えば、決定した配置を配置リスト35に登録し、登録した配置リスト35をOS20に通知してよい。OS20は、配置決定部34が通知した配置リスト35(21)に基づき、プロセス40の配置を行なう。
例えば、配置決定部34は、プロセスリスト33と、単一のソケットで同時に実行されるプロセス40の種類に応じた、上述した(i)及び(ii)の傾向と、に基づき、以下の(I)〜(III)の少なくとも1つの条件を満たすように配置を決定してよい。
(I)プロセスリスト33に、PM4からランダムリードを行なうプロセス40が含まれる場合。
上記(I)の場合、配置決定部34は、当該プロセス40を、DRAM3に高頻度にアクセスするプロセスと同じソケットに配置することを決定する。
(II)プロセスリスト33に、PM4にライトを行なうプロセス40が含まれる場合。
上記(II)の場合、配置決定部34は、当該プロセス40を、メモリアクセス頻度の低いプロセス40と同じソケットに配置することを決定する。
(III)その他の組み合わせの場合。
上記(III)の場合、配置決定部34は、メモリアクセス頻度に基づいて、プロセス40の配置を決定する。
以上のように、配置決定部34は、プロセッサ2、DRAM3及びPM4を含むグループにおける、DRAM3及びPM4のいずれかに格納されたデータにアクセスする複数のプロセス40の各々の特性に基づき、複数のプロセッサ2に対する複数のプロセス40の各々の配置を決定する決定部の一例である。
配置決定部34によるプロセス配置の決定は、配置の最適化を行なう種々の手法により行なわれてよい。配置の最適化を行なう手法は、後述する動作例において、フローチャートを参照して一例を説明する。
図11は、図10に例示するプロセスリスト33に基づき、配置決定部34がプロセス40の配置決定を行なう際に設定される配置リスト35の一例を示す図である。図11に例示するように、配置リスト35は、配置リスト21と同様に、ソケットID、及び、プロセスIDの項目を含んでよい。
図11に例示するように、配置リスト35ソケットID「0」に対しては、プロセスID「0」及び「3」の配置が決定され、ソケットID「1」に対しては、プロセスID「1」及び「2」の配置が決定される。
図12は、OS20の配置処理部22により、図11に例示する配置リスト35に従い、プロセッサ2にプロセス40が配置される場合の一例を示す図である。図12に例示するように、プロセッサ#0には、メモリアクセス頻度の小さい組み合わせでプロセス40が配置され、プロセッサ#1には、メモリアクセス頻度の大きい組み合わせでプロセス40が配置される。
図4に例示するメモリアクセス頻度に基づきプロセス配置を行なう手法では、図13に例示するように、メモリアクセス頻度自体はプロセッサ2間で分散するものの、アクセスが、プロセッサ#0ではDRAM#0に、プロセッサ#1ではPM#1に集中する。
図13の例では、プロセッサ#1において、PM#1からランダムリードを行なうプロセス40(プロセスID「1」)が、DRAM#1ではなくPM#1にアクセスするプロセス40(プロセスID「0」)と同一のプロセッサ#1に配置される。このため、上記(i)の傾向に合致せず、性能低下が小さくなるという利点が得られない。
また、図13の例では、プロセッサ#1において、PM#1にライトを行なうプロセス40(プロセスID「0」)が、メモリアクセス頻度の大きいプロセス40(プロセスID「1」)と同一のプロセッサ#1に配置される。このため、上記(ii)の傾向に合致してしまい、少なくともプロセス40(プロセスID「1」)の性能低下が大きくなる。
これに対し、図12に示す例では、プロセッサ#0においては、上記(ii)の傾向に合致しないようにプロセス40(プロセスID「0」、「3」)が配置される。また、プロセッサ#1においては、上記(i)の傾向に合致するようにプロセス40(プロセスID「1」、「2」)が配置される。
発明者による検証によれば、プロセス40を図12に例示するように配置することで、図13の例と比較して、約50%の性能向上が得られた。
このように、配置決定部34は、上記(I)の条件により、上記(i)の傾向に合致するように、同じソケットに配置しても性能低下が小さいプロセス40どうしを、同一のソケットに配置する。
また、配置決定部34は、上記(II)の条件により、上記(ii)の傾向に合致しないように、同じソケットに配置すると性能低下が大きいプロセス40どうしを、互いに異なるソケットに配置する。
以上のように、(I)及び(II)の少なくとも1種類の条件に従ったプロセス40の配置により、プロセス40間の「相性」を考慮した適切なプロセス配置を行なうことができる。換言すれば、配置決定部34は、アクセスの頻度、アクセスの傾向、及び、アクセスの対象の組み合わせに基づいて、プロセス40の適切な配置を決定できる。
従って、MC2cにおいてDRAM3に対する処理及びPM4に対する処理の競合が発生する可能性を低減させることができ、MC2cにおける処理時間の増加を抑制できるため、プロセッサ2の処理性能の低下を抑制することができる。
なお、一実施形態においては、上記(I)及び(II)のうちの少なくともいずれか一方の条件を満たすようにプロセス配置を行なえばよい。換言すれば、上記(I)及び(II)のうちの少なくとも一方に基づくプロセス配置は、省略されてもよい。
さらに、配置決定部34は、上記(III)の条件により、上記(i)及び(ii)のいずれの傾向にも該当しないプロセス40を、メモリアクセス頻度に基づきソケットに配置する。これにより、(I)及び(II)に該当しないプロセス40についてもソケットに適切に配置することができる。
このように、一実施形態によれば、複数のコア2a間で共有される単一階層のハイブリッドメモリシステムで実行されるプロセス40の特性に基づいて、ソケット間のプロセス配置を決定することで、プロセス40間の共有メモリ資源の競合を緩和できる。
〔1−3〕動作例
次に、図14〜図17を参照して、上述の如く構成された一実施形態に係るサーバ1の動作例を説明する。なお、サーバ1は、図7に示すように2つのプロセッサ2を備え、少なくとも、図10に示す4つのプロセス40(プロセスID「0」〜「3」)を実行するものとする。
〔1−3−1〕全体の動作例
まず、図14を参照して、サーバ1による、プロセス40の配置に関する全体の動作例を説明する。
図14に例示するように、サーバ1の決定プロセス30が起動すると、情報取得部31は、パフォーマンスカウンタの値を取得する(ステップS1)。例えば、情報取得部31は、各プロセッサ2における各プロセス40のキャッシュミス回数a、ロード回数b1、ストア回数b2、命令実行数c1、プリフェッチ回数c2、及び、アクセス先d等を取得する。
種類判定部32は、情報取得部31が取得した情報に基づいて、各プロセス40の各指標を算出する(ステップS2)。指標としては、メモリアクセス頻度の一例であるLLC MPKI、リードアクセス率、プリフェッチ回数、及び、アクセス先等が挙げられる。
種類判定部32は、算出した各指標を登録したプロセスリスト33(図10参照)を作成する(ステップS3)。
配置決定部34は、配置リスト35を初期化する(ステップS4)。また、配置決定部34は、プロセッサ2のソケットIDを指定する変数i、及び、ソケットにプロセス40を配置する際のソケットIDの切り替え方向を示す変数incに、それぞれ、「0」、及び、「1」を設定することで初期化する(ステップS5)。
配置決定部34は、プロセスリスト33に基づき、PM4へのライトプロセス40についての配置決定処理を行ない(ステップS6)、変数iが、サーバ1が備えるソケット数Nか否かを判定する(ステップS7)。変数iがソケット数Nであると判定した場合(ステップS7でYES)、処理がステップS10に移行する。
変数iがソケット数Nではないと判定した場合(ステップS7でNO)、配置決定部34は、プロセスリスト33に基づき、PM4へのランダムリードプロセス40についての配置決定処理を行なう(ステップS8)。そして、配置決定部34は、変数iがソケット数Nか否かを判定する(ステップS9)。
変数iがソケット数Nではないと判定した場合(ステップS9でNO)、処理がステップS11に移行する。一方、変数iがソケット数Nであると判定した場合(ステップS9でYES)、配置決定部34は、変数iに、ソケット数Nから1を減じた値を設定し、変数incに0を設定し(ステップS10)、処理がステップS11に移行する。ステップS11では、配置決定部34は、メモリアクセス頻度に基づくプロセス40の配置決定処理を行なう。
ステップS6、S8及びS11の少なくとも1つの処理の実行により、配置リスト35(図11)が設定される。配置決定部34は、配置決定部34をOS20に通知する。
OS20の配置処理部22は、配置リスト35(21)を用いて、少なくとも配置リスト35(21)内の全プロセス40の配置変更を行なう(ステップS12)。決定プロセス30は、一定時間待機し(ステップS13)、処理がステップS1に移行する。
〔1−3−2〕PMライトプロセスの配置決定処理
次に、図15を参照して、図14のステップS6に示すPMライトプロセス40の配置決定処理の動作例を説明する。
図15に例示するように、配置決定部34は、プロセスリスト33にPM4へのライトプロセス40と、その他のプロセス40とが存在するか否かを判定する(ステップS21)。PM4へのライトプロセス40は、PM4に対する、逐次又はランダムアクセスを行なうライトプロセス40を意味してよい。その他のプロセス40は、種々の種類のプロセス40を意味してよく、DRAM3又はPM4に対する、逐次又はランダムアクセスを行なうリード又はライトプロセス40をいう。ステップS21の判定は、上記(II)の条件に従い配置決定を行なう対象となるプロセス40がプロセスリスト33に存在するか否かの判定であるといえる。
プロセスリスト33に上述した2つのプロセス40が含まれないと配置決定部34が判定した場合(ステップS21でNO)、処理が終了する。
一方、プロセスリスト33に上述した2つのプロセス40が含まれると判定した場合(ステップS21でYes)、配置決定部34は、プロセスリスト33の先頭に近いPMライトプロセス40を、配置リスト35のソケットiに登録する(ステップS22)。プロセスリスト33は、メモリアクセス頻度の降順にソートされているため、PMライトプロセス40が複数存在する場合、ステップS22では、プロセスリスト33に残存するプロセス40のうち、メモリアクセス頻度が最も大きいPMライトプロセス40から順に、配置リスト35に登録される。
次いで、配置決定部34は、プロセスリスト33から、配置リスト35に登録したPMライトプロセス40を削除する(ステップS23)。
また、配置決定部34は、プロセスリスト33の末尾のプロセス40、換言すれば、メモリアクセス頻度の最も小さいプロセス40を、配置リスト35のソケットiに登録する(ステップS24)。そして、配置決定部34は、当該プロセス40をプロセスリスト33から削除する(ステップS25)。
配置決定部34は、配置リスト35のソケットiに配置されたプロセス数が、ソケットあたりのプロセス数M未満か否かを判定する(ステップS26)。なお、ソケットあたりのプロセス数Mは、配置対象のプロセス数を、サーバ1が備えるソケット数で除算することで得られてよい。
ソケットiに配置されたプロセス数が、ソケットあたりのプロセス数M未満ではない(換言すれば、プロセス数M以上である)と判定した場合(ステップS26でNO)、配置決定部34は、変数iがN−1か否かを判定する(ステップS27)。最大のソケットIDを持つソケットにプロセス40を配置したか否かの判定である。
変数iがN−1ではないと判定した場合(ステップS27でNO)、配置決定部34は、変数iに1を加算(インクリメント)し(ステップS28)、処理がステップS21に移行する。
一方、変数iがN−1であると配置決定部34が判定した場合(ステップS27でYES)、処理がステップS30に移行する。
ステップS26において、ソケットiに配置されたプロセス数が、ソケットあたりのプロセス数M未満であると判定した場合(ステップS26でYES)、配置決定部34は、プロセスリスト長が0か否かを判定する(ステップS29)。この場合、ソケットiには、未だプロセス40を配置できるため、配置決定部34は、プロセスリスト33のデータ長が0か否か(エントリが無いか)否かを判定するのである。
プロセスリスト長が0ではないと配置決定部34が判定した場合(ステップS29でNO)、処理がステップS24に移行し、他のプロセス40を配置リスト35のソケットiに登録する。
一方、プロセスリスト長が0であると判定した場合(ステップS29でYES)、配置決定部34は、変数iに1を加算(インクリメント)し(ステップS30)、処理が終了する。
以上のように、上記(II)の条件に基づく配置決定では、配置決定部34は、プロセスリスト33に基づき、以下の処理を行なうのである。
配置決定部34は、アクセスの傾向が書き込みアクセスであってアクセスの対象がPM4であるプロセス40と、プロセスリスト33に含まれるプロセス40のうちのアクセスの頻度が最小のプロセス40とを同一のプロセッサ2に配置すると決定する。また、配置決定部34は、プロセスリスト33から配置を決定したプロセス40の情報を削除する。
〔1−3−3〕PMランダムリードプロセスの配置決定処理
次に、図16を参照して、図14のステップS8に示すPMランダムリードプロセス40の配置決定処理の動作例を説明する。
図16に例示するように、配置決定部34は、プロセスリスト33にPM4へのランダムリードプロセス40と、DRAM3へのアクセスプロセス40とが存在するか否かを判定する(ステップS31)。PM4へのランダムリードプロセス40は、PM4に対する、ランダムアクセスを行なうリードプロセス40を意味してよい。DRAM3へのアクセスプロセス40は、DRAM3に対する、逐次又はランダムアクセスを行なうライト又はリードプロセス40を意味してよい。ステップS31の判定は、上記(I)の条件に従い配置決定を行なう対象となるプロセス40がプロセスリスト33に存在するか否かの判定であるといえる。
プロセスリスト33に上述した2つのプロセス40が含まれないと配置決定部34が判定した場合(ステップS31でNO)、処理が終了する。
一方、プロセスリスト33に上述した2つのプロセス40が含まれると判定した場合(ステップS31でYes)、配置決定部34は、プロセスリスト33の先頭に近いPMランダムリードプロセス40を、配置リスト35のソケットiに登録する(ステップS32)。プロセスリスト33は、メモリアクセス頻度の降順にソートされているため、PMランダムリードプロセス40が複数存在する場合、ステップS32では、プロセスリスト33に残存するプロセス40のうち、メモリアクセス頻度が最も大きいPMランダムリードプロセス40から順に、配置リスト35に登録される。
次いで、配置決定部34は、プロセスリスト33から、配置リスト35に登録したPMランダムリードプロセス40を削除する(ステップS33)。
また、配置決定部34は、プロセスリスト33の先頭に近いDRAMアクセスプロセス40、換言すれば、メモリアクセス頻度の最も大きいDRAMアクセスプロセス40を、配置リスト35のソケットiに登録する(ステップS34)。そして、配置決定部34は、当該プロセス40をプロセスリスト33から削除する(ステップS35)。
配置決定部34は、配置リスト35のソケットiに配置されたプロセス数が、ソケットあたりのプロセス数M未満か否かを判定する(ステップS36)。
ソケットiに配置されたプロセス数が、ソケットあたりのプロセス数M未満ではない(換言すれば、プロセス数M以上である)と判定した場合(ステップS36でNO)、配置決定部34は、変数iがN−1か否かを判定する(ステップS37)。
変数iがN−1ではないと判定した場合(ステップS37でNO)、配置決定部34は、変数iに1を加算(インクリメント)し(ステップS38)、処理がステップS31に移行する。
一方、変数iがN−1であると配置決定部34が判定した場合(ステップS37でYES)、処理がステップS40に移行する。
ステップS36において、ソケットiに配置されたプロセス数が、ソケットあたりのプロセス数M未満であると判定した場合(ステップS36でYES)、配置決定部34は、プロセスリスト33にDRAMアクセスプロセス40が存在するか否かを判定する(ステップS39)。
プロセスリスト33にDRAMアクセスプロセス40が存在すると配置決定部34が判定した場合(ステップS39でYES)、処理がステップS34に移行し、他のDRAMアクセスプロセス40を配置リスト35のソケットiに登録する。
一方、プロセスリスト33にDRAMアクセスプロセス40が存在しないと判定した場合(ステップS39でNO)、配置決定部34は、変数iに1を加算(インクリメント)し(ステップS40)、処理が終了する。
以上のように、上記(I)の条件に基づく配置決定では、配置決定部34は、プロセスリスト33に基づき、以下の処理を行なうのである。
配置決定部34は、アクセスの傾向がランダム読み出しアクセスであってアクセスの対象がPM4であるプロセス40と、プロセスリスト33に含まれるプロセス40のうちのアクセスの頻度が最大のプロセス40であってアクセスの対象がDRAM3であるプロセス40とを同一のプロセッサ2に配置すると決定する。また、配置決定部34は、プロセスリスト33から配置を決定したプロセス40の情報を削除する。
〔1−3−4〕メモリアクセス頻度に基づくプロセスの配置決定処理
次に、図17を参照して、図14のステップS11に示す、メモリアクセス頻度に基づくプロセス40の配置決定処理の動作例を説明する。
図17に例示するように、配置決定部34は、プロセスリスト長が0か否かを判定する(ステップS41)。プロセス長が0であると配置決定部34が判定した場合(ステップS41でYES)、処理がステップS51に移行する。ステップS41の判定は、上記(III)の条件に従い配置決定を行なう対象となるプロセス40がプロセスリスト33に存在するか否かの判定であるといえる。
プロセス長が0ではないと判定した場合(ステップS41でNO)、配置決定部34は、プロセスリスト33の先頭のプロセス40を、配置リスト35のソケットiに登録する(ステップS42)。プロセスリスト33は、メモリアクセス頻度の降順にソートされているため、プロセス40が複数存在する場合、ステップS42では、プロセスリスト33に残存するプロセス40のうち、メモリアクセス頻度が最も大きいプロセス40から順に、配置リスト35に登録される。
次いで、配置決定部34は、プロセスリスト33から、配置リスト35に登録したプロセス40を削除する(ステップS43)。
配置決定部34は、変数incが1か否かを判定する(ステップS44)。ステップS44の判定は、ソケットにプロセス40を配置する際のソケットIDの切り替え方向が、変数iの増加方向か否かの判定に相当する。
変数incが1であると判定した場合(ステップS44でYES)、配置決定部34は、変数iがN−1か否かを判定する(ステップS45)。変数iがN−1ではないと判定した場合(ステップS45でNO)、配置決定部34は、変数iに1を加算(インクリメント)し(ステップS46)、処理がステップS41に移行する。
一方、変数iがN−1であると判定した場合(ステップS45でYES)、配置決定部34は、変数incに0を設定し(ステップS47)、処理がステップS41に移行する。ステップS47の処理は、ソケットにプロセス40を配置する際のソケットIDの切り替え方向を、変数iの減少方向に変更する処理の一例である。
ステップS44において、変数incが1ではないと判定した場合(ステップS44でNO)、配置決定部34は、変数iが0か否かを判定する(ステップS48)。変数iが0ではないと判定した場合(ステップS48でNO)、配置決定部34は、変数iから1を減算(デクリメント)し(ステップS49)、処理がステップS41に移行する。
ステップS48において、変数iが0であると判定した場合(ステップS48でYES)、配置決定部34は、変数incに1を設定し(ステップS50)、処理がステップS41に移行する。
ステップS41において、プロセスリスト長が0であると判定した場合(ステップS41でYES)、配置決定部34は、配置リスト35の内容をOS20に通知する。OS20は、配置処理部22により、配置リスト35(21)を用いて、全プロセス40の配置変更を行ない(ステップS51)、処理が終了する。
以上のように、上記(III)の条件に基づく配置決定では、配置決定部34は、プロセスリスト33に基づき、以下の処理を行なうのである。
配置決定部34は、プロセスリスト33に基づき、プロセスリスト33に含まれるプロセス40のうちのアクセスの頻度が最大のプロセス40と、アクセスの頻度が最小のプロセス40とを同一のプロセッサ2に配置すると決定する。また、配置決定部34は、プロセスリスト33から配置を決定したプロセス40の情報を削除する。
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、図8に示すサーバ1において、決定プロセス30及びOS20の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。また、情報取得部31、種類判定部32、及び配置決定部34の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
〔3〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1メモリと、
前記第1メモリとは処理速度の異なる第2メモリと、
前記第1メモリ及び前記第2メモリと接続され、前記第1メモリ及び前記第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサと、
を含むグループを複数備え、
前記複数のプロセッサのうちの第1プロセッサは、
複数の前記グループにおける、前記第1メモリ及び前記第2メモリのいずれかに格納されたデータにアクセスする複数の前記プロセスの各々の特性に基づき、前記複数のプロセッサに対する前記複数のプロセスの各々の配置を決定する決定部、を備える、情報処理装置。
(付記2)
前記第1プロセッサは、
前記複数のプロセスの各々の特性として、前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象である前記第1メモリ又は前記第2メモリ、を判定する判定部を備え、
前記決定部は、前記判定部が判定した前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象の組み合わせに基づいて、前記配置を決定する、
付記1に記載の情報処理装置。
(付記3)
前記判定部は、前記複数のプロセスの各々についての前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象を、前記アクセスの頻度に応じてソートしたリストを生成し、
前記決定部は、前記リストに基づき、前記アクセスの傾向が書き込みアクセスであって、前記アクセスの対象が前記第2メモリであるプロセスと、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最小のプロセスと、を同一のプロセッサに配置すると決定し、前記リストから前記配置を決定したプロセスの情報を削除する、
付記2に記載の情報処理装置。
(付記4)
前記決定部は、前記リストに基づき、前記アクセスの傾向がランダム読み出しアクセスであって、前記アクセスの対象が前記第2メモリであるプロセスと、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最大のプロセスであって、前記アクセスの対象が前記第1メモリであるプロセスと、を同一のプロセッサに配置すると決定し、前記リストから前記配置を決定したプロセスの情報を削除する、
付記3に記載の情報処理装置。
(付記5)
前記決定部は、前記リストに基づき、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最大のプロセスと、前記アクセスの頻度が最小のプロセスと、を同一のプロセッサに配置すると決定し、前記リストから前記配置を決定したプロセスの情報を削除する、
付記3又は付記4に記載の情報処理装置。
(付記6)
前記複数のプロセッサの各々は、
1以上のコアを備え、
前記第1プロセッサは、
複数の前記コアの各々から、前記コアが実行するプロセスごとのキャッシュミス回数、ロード回数、ストア回数、命令実行数、並びに、プリフェッチ回数、の少なくとも1種類の情報を取得するとともに、前記複数のプロセッサが実行するOSから、前記複数のプロセスの各々のアクセス先の情報を取得する取得部、を備え、
前記判定部は、前記取得部が取得した情報に基づいて、前記判定を行なう、
付記1〜5のいずれか1項に記載の情報処理装置。
(付記7)
第1メモリと、
前記第1メモリとは処理速度の異なる第2メモリと、
前記第1メモリ及び前記第2メモリと接続され、前記第1メモリ及び前記第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサと、
を含むグループを複数備えるコンピュータに、
複数の前記グループにおける、前記第1メモリ及び前記第2メモリのいずれかに格納されたデータにアクセスする複数の前記プロセスの各々の特性に基づき、前記複数のプロセッサに対する前記複数のプロセスの各々の配置を決定する、
処理を実行させる、プロセス配置決定プログラム。
(付記8)
前記コンピュータに、
前記複数のプロセスの各々の特性として、前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象である前記第1メモリ又は前記第2メモリ、を判定し、
前記判定した前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象の組み合わせに基づいて、前記配置を決定する、
処理を実行させる、付記7に記載のプロセス配置決定プログラム。
(付記9)
前記コンピュータに、
前記複数のプロセスの各々についての前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象を、前記アクセスの頻度に応じてソートしたリストを生成し、
前記リストに基づき、前記アクセスの傾向が書き込みアクセスであって、前記アクセスの対象が前記第2メモリであるプロセスと、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最小のプロセスと、を同一のプロセッサに配置すると決定し、
前記リストから前記配置を決定したプロセスの情報を削除する、
処理を実行させる、付記8に記載のプロセス配置決定プログラム。
(付記10)
前記コンピュータに、
前記リストに基づき、前記アクセスの傾向がランダム読み出しアクセスであって、前記アクセスの対象が前記第2メモリであるプロセスと、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最大のプロセスであって、前記アクセスの対象が前記第1メモリであるプロセスと、を同一のプロセッサに配置すると決定し、
前記リストから前記配置を決定したプロセスの情報を削除する、
処理を実行させる、付記9に記載のプロセス配置決定プログラム。
(付記11)
前記コンピュータに、
前記リストに基づき、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最大のプロセスと、前記アクセスの頻度が最小のプロセスと、を同一のプロセッサに配置すると決定し、
前記リストから前記配置を決定したプロセスの情報を削除する、
処理を実行させる、付記9又は付記10に記載のプロセス配置決定プログラム。
(付記12)
前記複数のプロセッサの各々は、
1以上のコアを備え、
前記コンピュータに、
複数の前記コアの各々から、前記コアが実行するプロセスごとのキャッシュミス回数、ロード回数、ストア回数、命令実行数、並びに、プリフェッチ回数、の少なくとも1種類の情報を取得し、
前記複数のプロセッサが実行するOSから、前記複数のプロセスの各々のアクセス先の情報を取得し、
前記取得した情報に基づいて、前記判定を行なう、
処理を実行させる、付記7〜11のいずれか1項に記載のプロセス配置決定プログラム。
1 サーバ
2 プロセッサ
2a コア
2b LLC
2c MC
10 処理部
20 OS
21、35 配置リスト
22 配置処理部
3 DRAM
30 決定プロセス
31 情報取得部
32 種類判定部
33 プロセスリスト
34 配置決定部
4 PM
40 プロセス
5 メモリチャネル

Claims (7)

  1. 第1メモリと、
    前記第1メモリとは処理速度の異なる第2メモリと、
    前記第1メモリ及び前記第2メモリと接続され、前記第1メモリ及び前記第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサと、
    を含むグループを複数備え、
    前記複数のプロセッサのうちの第1プロセッサは、
    複数の前記グループにおける、前記第1メモリ及び前記第2メモリのいずれかに格納されたデータにアクセスする複数の前記プロセスの各々の特性に基づき、前記複数のプロセッサに対する前記複数のプロセスの各々の配置を決定する決定部、を備える、情報処理装置。
  2. 前記第1プロセッサは、
    前記複数のプロセスの各々の特性として、前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象である前記第1メモリ又は前記第2メモリ、を判定する判定部を備え、
    前記決定部は、前記判定部が判定した前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象の組み合わせに基づいて、前記配置を決定する、
    請求項1に記載の情報処理装置。
  3. 前記判定部は、前記複数のプロセスの各々についての前記アクセスの頻度、前記アクセスの傾向、及び、前記アクセスの対象を、前記アクセスの頻度に応じてソートしたリストを生成し、
    前記決定部は、前記リストに基づき、前記アクセスの傾向が書き込みアクセスであって、前記アクセスの対象が前記第2メモリであるプロセスと、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最小のプロセスと、を同一のプロセッサに配置すると決定し、前記リストから前記配置を決定したプロセスの情報を削除する、
    請求項2に記載の情報処理装置。
  4. 前記決定部は、前記リストに基づき、前記アクセスの傾向がランダム読み出しアクセスであって、前記アクセスの対象が前記第2メモリであるプロセスと、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最大のプロセスであって、前記アクセスの対象が前記第1メモリであるプロセスと、を同一のプロセッサに配置すると決定し、前記リストから前記配置を決定したプロセスの情報を削除する、
    請求項3に記載の情報処理装置。
  5. 前記決定部は、前記リストに基づき、前記リストに含まれるプロセスのうちの前記アクセスの頻度が最大のプロセスと、前記アクセスの頻度が最小のプロセスと、を同一のプロセッサに配置すると決定し、前記リストから前記配置を決定したプロセスの情報を削除する、
    請求項3又は請求項4に記載の情報処理装置。
  6. 前記複数のプロセッサの各々は、
    1以上のコアを備え、
    前記第1プロセッサは、
    複数の前記コアの各々から、前記コアが実行するプロセスごとのキャッシュミス回数、ロード回数、ストア回数、命令実行数、並びに、プリフェッチ回数、の少なくとも1種類の情報を取得するとともに、前記複数のプロセッサが実行するOS(Operating System)から、前記複数のプロセスの各々のアクセス先の情報を取得する取得部、を備え、
    前記判定部は、前記取得部が取得した情報に基づいて、前記判定を行なう、
    請求項1〜5のいずれか1項に記載の情報処理装置。
  7. 第1メモリと、
    前記第1メモリとは処理速度の異なる第2メモリと、
    前記第1メモリ及び前記第2メモリと接続され、前記第1メモリ及び前記第2メモリに対するプロセスによるアクセスを制御するメモリコントローラ、を有するプロセッサと、
    を含むグループを複数備えるコンピュータに、
    複数の前記グループにおける、前記第1メモリ及び前記第2メモリのいずれかに格納されたデータにアクセスする複数の前記プロセスの各々の特性に基づき、前記複数のプロセッサに対する前記複数のプロセスの各々の配置を決定する、
    処理を実行させる、プロセス配置決定プログラム。
JP2019164643A 2019-09-10 2019-09-10 情報処理装置及びプロセス配置決定プログラム Ceased JP2021043654A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019164643A JP2021043654A (ja) 2019-09-10 2019-09-10 情報処理装置及びプロセス配置決定プログラム
US16/935,252 US11487582B2 (en) 2019-09-10 2020-07-22 Information processing apparatus and computer-readable recording medium having stored therein process allocation determining program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019164643A JP2021043654A (ja) 2019-09-10 2019-09-10 情報処理装置及びプロセス配置決定プログラム

Publications (1)

Publication Number Publication Date
JP2021043654A true JP2021043654A (ja) 2021-03-18

Family

ID=74850997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019164643A Ceased JP2021043654A (ja) 2019-09-10 2019-09-10 情報処理装置及びプロセス配置決定プログラム

Country Status (2)

Country Link
US (1) US11487582B2 (ja)
JP (1) JP2021043654A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353287A (ja) * 1998-06-08 1999-12-24 Hitachi Ltd 並列システムにおけるプロセスのスケジューリング方式
JP2015060589A (ja) * 2013-09-18 2015-03-30 インテル・コーポレーション ヘテロジニアスメモリアクセス
JP2016510471A (ja) * 2013-02-04 2016-04-07 マイクロソフト テクノロジー ライセンシング,エルエルシー 異種メモリの動的管理
JP2017138852A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置、記憶装置およびプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012153200A1 (en) * 2011-05-10 2012-11-15 International Business Machines Corporation Process grouping for improved cache and memory affinity
AU2011213795A1 (en) 2011-08-19 2013-03-07 Canon Kabushiki Kaisha Efficient cache reuse through application determined scheduling
JP6118285B2 (ja) 2014-03-20 2017-04-19 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム
US10108552B2 (en) * 2015-08-21 2018-10-23 International Business Machines Corporation Using cache lists for processors to determine tracks to demote from a cache
JP6631124B2 (ja) 2015-09-25 2020-01-15 富士ゼロックス株式会社 情報処理装置および画像形成装置
JP2018022345A (ja) 2016-08-03 2018-02-08 東芝メモリ株式会社 情報処理システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353287A (ja) * 1998-06-08 1999-12-24 Hitachi Ltd 並列システムにおけるプロセスのスケジューリング方式
JP2016510471A (ja) * 2013-02-04 2016-04-07 マイクロソフト テクノロジー ライセンシング,エルエルシー 異種メモリの動的管理
JP2015060589A (ja) * 2013-09-18 2015-03-30 インテル・コーポレーション ヘテロジニアスメモリアクセス
JP2017138852A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置、記憶装置およびプログラム

Also Published As

Publication number Publication date
US11487582B2 (en) 2022-11-01
US20210073039A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
US9824011B2 (en) Method and apparatus for processing data and computer system
KR102456085B1 (ko) 로우 버퍼 충돌을 감소시키기 위한 동적 메모리 재매핑
JP5040773B2 (ja) メモリバッファ割当装置およびプログラム
US20230266814A1 (en) Container-based application management method and apparatus
US8365169B1 (en) Migrating a virtual machine across processing cells connected to an interconnect that provides data communication without cache coherency support
US10157082B2 (en) Preferential CPU utilization for tasks
EP3230873B1 (en) Computing method and apparatus with persistent memory
JP6192660B2 (ja) ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置
JP6412244B2 (ja) 負荷に基づく動的統合
US20130166814A1 (en) Computer readable recording medium having stored therein information processing program, information processing apparatus and information processing method
KR101587579B1 (ko) 가상화 시스템에서 메모리 조정방법
JP2019079334A (ja) 情報処理装置、情報処理システムおよび情報処理方法
JP6244949B2 (ja) 情報処理装置、制御方法、および制御プログラム
CN108733585B (zh) 缓存系统及相关方法
WO2022050998A1 (en) Pooled memory controller for thin-provisioning disaggregated memory
US20200285510A1 (en) High precision load distribution among processors
US20150278114A1 (en) Control apparatus and control method
KR101848418B1 (ko) 불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법
JP2021043654A (ja) 情報処理装置及びプロセス配置決定プログラム
US11429518B2 (en) Paging in thin-provisioned disaggregated memory
US11768684B2 (en) Compaction of architected registers in a simultaneous multithreading processor
JP2015176218A (ja) 演算処理装置、演算処理装置の制御方法、及び演算処理装置の制御プログラム
US10684900B2 (en) Enhanced message control banks
KR101701378B1 (ko) 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법
KR102144011B1 (ko) 가상화 서비스에서 페이지 캐시 관리 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220517

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230626

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20230626

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231003

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20240227