WO2021019652A1 - キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム - Google Patents
キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム Download PDFInfo
- Publication number
- WO2021019652A1 WO2021019652A1 PCT/JP2019/029690 JP2019029690W WO2021019652A1 WO 2021019652 A1 WO2021019652 A1 WO 2021019652A1 JP 2019029690 W JP2019029690 W JP 2019029690W WO 2021019652 A1 WO2021019652 A1 WO 2021019652A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cache
- application
- memory
- capacity
- usage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- FIG. 1 is a diagram showing an example of the cache automatic optimization system 1 according to the present embodiment.
- the cache automatic optimization system 1 includes an OS (Operating System) 2 running on the physical host 3, a plurality of virtual machines 13a to 13c running on the OS 2, and a cache tuning system (CTS) 15. It is composed including and.
- OS Operating System
- CTS cache tuning system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
物理リソース(キャッシュ)のリアルタイムの使用状況から各アプリケーションのキャッシュ使用特性を明らかにし、各アプリケーションのキャッシュ使用量を自動制御することで性能の最適化を行う。そのため、システムは、データを読み書きするメインメモリと、メインメモリよりも高速にアクセス可能な3次キャッシュメモリと、これらメモリおよびキャッシュを読み書きして処理を実行するCPUコアと、このCPUコアが実行する各仮想マシン(13a~13c)のキャッシュの使用状況を測定する使用量測定部と、この使用状況から各仮想マシン(13a~13c)に割り当てるキャッシュ容量を計算する割当量計算部と、このキャッシュ容量を各仮想マシン(13a~13c)に割り当てる制御部とを備える。
Description
本発明は、キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラムに関する。
仮想クラウド環境では、物理ホストを管理する権限を持つ運用者と、実際に仮想マシンをデプロイしてアプリケーションを動作させる使用者とが異なることか一般的である。
マルチテナントをサポートする仮想クラウド環境では、異なるテナントの仮想マシンが同じ物理ホスト上にデプロイされ得る。そのため、キャッシュ制御による性能チューニングは使用者側ではなく、運用者側の役割となる。
マルチテナントをサポートする仮想クラウド環境では、異なるテナントの仮想マシンが同じ物理ホスト上にデプロイされ得る。そのため、キャッシュ制御による性能チューニングは使用者側ではなく、運用者側の役割となる。
図10は、各アプリケーションのキャッシュ占有量と正規化されたパフォーマンスとの関係を示すグラフである。なお、この図10は、非特許文献1に掲載されたグラフの引用である。
グラフの横軸は、キャッシュ占有量を示しており、グラフの縦軸は正規化されたパフォーマンスを示している。菱形のプロットは、Povrayに関するプロットである。四角形のプロットは、Bzip2に関するプロットである。三角形のプロットは、MCFに関するプロットである。バツ印のプロットは、Bwavesに関するプロットである。
このグラフで示すように、キャッシュの占有量が減少すると、キャッシュミス数が増加する。Bwavesでは、キャッシュ占有量を15MBとしたときと比べて、キャッシュ占有量を0MBとしたときに性能が約60%だけ低下している。よって、キャッシュ占有量を適切に設定することにより、アプリケーションの性能を向上させることができる。
グラフの横軸は、キャッシュ占有量を示しており、グラフの縦軸は正規化されたパフォーマンスを示している。菱形のプロットは、Povrayに関するプロットである。四角形のプロットは、Bzip2に関するプロットである。三角形のプロットは、MCFに関するプロットである。バツ印のプロットは、Bwavesに関するプロットである。
このグラフで示すように、キャッシュの占有量が減少すると、キャッシュミス数が増加する。Bwavesでは、キャッシュ占有量を15MBとしたときと比べて、キャッシュ占有量を0MBとしたときに性能が約60%だけ低下している。よって、キャッシュ占有量を適切に設定することにより、アプリケーションの性能を向上させることができる。
図11は、16ビットのキャッシュ・アロケーション・テクノロジ(Cache Allocation Technology)の例を示す図である。
非特許文献2に記載されているように、2014年9月にリリースされたIntel Xeon(登録商標)プロセッサのE5 2600 v3製品ファミリから、最終レベルキャッシュの利用をアプリケーションごとに制限、制御できる機能であるCache Allocation Technologyが実装されている。
非特許文献2に記載されているように、2014年9月にリリースされたIntel Xeon(登録商標)プロセッサのE5 2600 v3製品ファミリから、最終レベルキャッシュの利用をアプリケーションごとに制限、制御できる機能であるCache Allocation Technologyが実装されている。
これらのプロセッサでは、アプリケーションプロセスごとにClass of Service(CLOS)のレベルを定めることができ、CLOS毎に3次キャッシュメモリ34をどの範囲まで使用するかを、キャパシティマスクで制御している。
図11の例では、CLOS[0]は、15bitから12bitまで4つのビットが立っており、3次キャッシュメモリ34を1/4だけ使用することを示している。なお、15bitから12bitまでに1が立っているのはCLOS[0]だけであり、これらのbitに対応する領域をCLOS[0]に係るアプリケーションが占有することを示している。なお、CLOS[n]の各ビットは、3次キャッシュメモリ34の各領域に対応している。
CLOS[1]は、11bitから8bitまで4つのビットが立っており、3次キャッシュメモリ34を1/4だけ使用することを示している。なお、11bitから8bitまでに1が立っているのはCLOS[1]だけであり、これらのbitに対応する領域をCLOS[1]に係るアプリケーションが占有することを示している。
CLOS[2]は、7bitから2bitまで6つのビットが立っており、3次キャッシュメモリ34を3/8だけ使用することを示している。なお、7bitから2bitまでには、CLOS[3]も同様に1が立っており、これらのbitに対応する領域をCLOS[2]とCLOS[3]に係るアプリケーションが共有することを示している。
CLOS[3]は、7bitから0bitまで8つのビットが立っており、3次キャッシュメモリ34を1/2だけ使用することを示している。なお、7bitから2bitまでには、CLOS[3]も同様に1が立っており、これらのbitに対応する領域をCLOS[2]に係るアプリケーションとCLOS[3]に係るアプリケーションが共有することを示している。1bitから0bitまでに1が立っているのはCLOS[3]だけであり、これらのbitに対応する領域をCLOS[3]に係るアプリケーションが占有することを示している。
Nguyen, Khang T,"Intel's Cache Monitoring Technology: Use Models and Data",[online],published on December 11,2014, updated March 31, 2016,[令和1年7月25日検索]、インターネット<URL:https://software.intel.com/en-us/blogs/2014/12/11/intels-cache-monitoring-technology-use-models-and-data>
"Usage Models for Cache Allocation Technology in the Intel Xeon Processor E5 v4 family",[online],[令和1年7月25日検索]、インターネット<URL:https://software.intel.com/en-us/articles/cache-allocation-technology-usage-models>
しかし、使用者がアプリケーションのキャッシュ使用量に関する情報を予め運用者側に通知した上で仮想マシンをデプロイするケースは、一般的ではない。また、使用者がアプリケーションの示している性能値をリアルタイムで運用者に通知するケースは、一般的ではない。
使用者からアプリケーションのキャッシュ使用に関する情報が運用者に通知されないケースでは、どのようにして各アプリケーションのキャッシュ使用量を制御すればよいかは不明であった。更にアプリケーションがリアルタイムに示している性能値に関する情報がシステムに一切通知されないケースも、どのようにして各アプリケーションのキャッシュ使用量を制御すればよいかは不明であった。
そこで、本発明は、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御することで、各アプリケーションの性能の最適化を行うことを課題とする。
前記した課題を解決するため、本発明のキャッシュチューニング装置は、
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置と、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する測定部と、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する計算部と、
前記キャッシュ容量を各前記アプリケーションに割り当てる割当部と、
を備えることを特徴とする。
その他の手段については、発明を実施するための形態のなかで説明する。
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置と、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する測定部と、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する計算部と、
前記キャッシュ容量を各前記アプリケーションに割り当てる割当部と、
を備えることを特徴とする。
その他の手段については、発明を実施するための形態のなかで説明する。
本発明によれば、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御することで、各アプリケーションの性能の最適化を行うことが可能となる。
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。
《発明の背景説明》
物理ホスト上で複数の仮想マシンを同時に動かした場合、キャッシュ競合が起こり、性能が低下するおそれがある。
《発明の背景説明》
物理ホスト上で複数の仮想マシンを同時に動かした場合、キャッシュ競合が起こり、性能が低下するおそれがある。
図8は、物理ホスト3上に複数の仮想マシン13a~13dを同時に動かしたときの各キャッシュの状況を示す図である。図9は、物理ホスト3上に単一の仮想マシン13aを動かしたときの各キャッシュの状況を示す図である。
物理ホスト3は、CPU(Central Processing Unit)コア31a~31dと、1次キャッシュメモリ32a~32dと、2次キャッシュメモリ33a~33dと、3次キャッシュメモリ34と、メインメモリ35とを含んで構成される。メインメモリ35は、データを読み書きするためのRAM(Random Access Memory)である。1次キャッシュメモリ32a~32dと、2次キャッシュメモリ33a~33dと、3次キャッシュメモリ34とは、メインメモリ35よりも高速にアクセス可能な記憶領域である。CPUコア31a~31dは、1次キャッシュメモリ32a~32dと、2次キャッシュメモリ33a~33dと、3次キャッシュメモリ34と、メインメモリ35とを読み書きして処理を実行する中央処理装置である。
現在のCPUで主流となっているマルチコア構成では、3次キャッシュメモリ34のような低次キャッシュを複数のCPUコア31a~31dが共有することが一般的である。以下、CPUコア31a~31dを特に区別しないときには、単にCPUコア31と記載する。
図8に示す物理ホスト3上には、複数の仮想マシン13a~13dが動作している。以下、仮想マシン13a~13dをとくに区別しないときには、単に仮想マシン13と記載する。
仮想マシン13aは、CPUコア31aと、1次キャッシュメモリ32aと、2次キャッシュメモリ33aとを占有し、更に3次キャッシュメモリ34の一部を共有している。
仮想マシン13bは、CPUコア31bと、1次キャッシュメモリ32bと、2次キャッシュメモリ33bとを占有し、更に3次キャッシュメモリ34の一部を共有している。
仮想マシン13bは、CPUコア31bと、1次キャッシュメモリ32bと、2次キャッシュメモリ33bとを占有し、更に3次キャッシュメモリ34の一部を共有している。
仮想マシン13cは、CPUコア31cと、1次キャッシュメモリ32cと、2次キャッシュメモリ33cとを占有し、更に3次キャッシュメモリ34の一部を共有している。
仮想マシン13dは、CPUコア31dと、1次キャッシュメモリ32dと、2次キャッシュメモリ33dとを占有し、更に3次キャッシュメモリ34の一部を共有している。
仮想マシン13dは、CPUコア31dと、1次キャッシュメモリ32dと、2次キャッシュメモリ33dとを占有し、更に3次キャッシュメモリ34の一部を共有している。
同じノード上で複数の仮想マシン13a~13dが稼働している場合、仮想マシン13a~13dによって3次キャッシュメモリ34が汚され、キャッシュミスが相対的に増える。キャッシュミスを起こしたCPUコア31は、3次キャッシュメモリ34より数倍アクセス時間のかかるメインメモリ35まで参照しにいかなければならない。仮想マシン13は、このようなキャッシュミスのペナルティにより、性能低下を引きおこす。これを複数の仮想マシン13によるキャッシュ競合と呼ぶ。
これに対して図9に示す物理ホスト3上には、単一の仮想マシン13aが動作している。仮想マシン13aを単体で動かしたときは、共有キャッシュメモリである3次キャッシュメモリ34を占有した状態になる。このとき、他の仮想マシン13は動作していないので、キャッシュの汚染は発生しない。
図12は、各アプリケーションのキャッシュ感度とキャッシュ汚染度とを示すグラフである。このグラフは、アプリケーションの特性を、キャッシュ感度とキャッシュ汚染度という2つの観点から評価した結果を示している。なお、各グラフにおいて、キャッシュ感度のことをCache Sensitivityと記載する場合があり、キャッシュ汚染度のことをCache Pollutivityと記載する場合がある。
キャッシュ感度とは、アプリケーションのキャッシュ依存性の高さを表す指標である。キャッシュヒット率の低下が性能に大きく影響するアプリケーションほど、キャッシュ感度が高くなる。
キャッシュ汚染度とは、アプリケーションのキャッシュの汚しやすさを表す指標である。キャッシュラインの入れ替えが多く、他のアプリケーションのキャッシュヒット率を下げるアプリケーションほど、キャッシュ汚染度が高くなる。
このグラフに示したキャッシュ感度とキャッシュ汚染度は、以下のようにして測定する。
(第1ステップ) 複数のアプリケーションを用意し、これら複数のアプリケーションを単体で動作させたときの性能と、そのときのキャッシュアクセス統計値をそれぞれ測定する。
(第2ステップ) 複数のアプリケーションを組み合わせて同時に動かしたときの性能をそれぞれ測定する。
(第3ステップ) 各アプリケーションを単体で動作させた場合の性能に対して、他のアプリケーションと組み合わせて同時に動かしたときの性能の劣化度合を算出する。
(第1ステップ) 複数のアプリケーションを用意し、これら複数のアプリケーションを単体で動作させたときの性能と、そのときのキャッシュアクセス統計値をそれぞれ測定する。
(第2ステップ) 複数のアプリケーションを組み合わせて同時に動かしたときの性能をそれぞれ測定する。
(第3ステップ) 各アプリケーションを単体で動作させた場合の性能に対して、他のアプリケーションと組み合わせて同時に動かしたときの性能の劣化度合を算出する。
発明者らは、このように各アプリケーションを評価したところ、キャッシュ感度が高いアプリケーションとキャッシュ汚染度が高いアプリケーションが別々に存在することを確認した。
図13は、各アプリケーションのキャッシュリファレンス数とプリフェッチ数の和と、キャッシュ感度との関係を示すグラフである。
発明者らは、キャッシュ感度(Cache Sensitivity)の指標にはキャッシュリファレンス数[/s]が使用できると予想していたが、実際にはプリフェッチ数[/s]とも相関が高いことを見出した。ここでプリフェッチとは、将来的に利用が予測されるデータを予めキャッシュに読み込むことをいう。
発明者らは、キャッシュ感度(Cache Sensitivity)の指標にはキャッシュリファレンス数[/s]が使用できると予想していたが、実際にはプリフェッチ数[/s]とも相関が高いことを見出した。ここでプリフェッチとは、将来的に利用が予測されるデータを予めキャッシュに読み込むことをいう。
キャッシュリファレンス数が多いアプリケーションは、キャッシュリファレンス数が少ないアプリケーションよりもキャッシュの利用度が高く、キャッシュのリソース競合による性能劣化が大きくなる。また、プリフェッチ数が多いアプリケーションは、プリフェッチ数が少ないアプリケーションに比べてキャッシュを有効利用しており、キャッシュのリソース競合による性能劣化が大きくなる。
よって発明者らは、本実施形態において、キャッシュリファレンス数とプリフェッチ数の和を、キャッシュ感度の指標として利用している。
よって発明者らは、本実施形態において、キャッシュリファレンス数とプリフェッチ数の和を、キャッシュ感度の指標として利用している。
図14は、各アプリケーションのdTLB(data Translation Lookaside Buffer)ミス数と、キャッシュ汚染度との関係を示すグラフである。
発明者らは、キャッシュ汚染度(Cache Pollutivity)の指標には、キャッシュミス数[/s]が使用できると予想していた。しかし実際のキャッシュ汚染度は、dTLBミス数[/s]との相関の方が高かった。そのため後記する実施形態では、キャッシュ汚染度の指標としてdTLBミス数を利用している。ここでdata Translation Lookaside Bufferとは、メモリ管理ユニットが仮想アドレスから物理アドレスへの変換の高速化を図るために用いるバッファである。dTLBミス数とは、CPUがメモリ空間にアクセスする際に、仮想アドレスがTLBに格納されていなかった回数である。
発明者らは、キャッシュ汚染度(Cache Pollutivity)の指標には、キャッシュミス数[/s]が使用できると予想していた。しかし実際のキャッシュ汚染度は、dTLBミス数[/s]との相関の方が高かった。そのため後記する実施形態では、キャッシュ汚染度の指標としてdTLBミス数を利用している。ここでdata Translation Lookaside Bufferとは、メモリ管理ユニットが仮想アドレスから物理アドレスへの変換の高速化を図るために用いるバッファである。dTLBミス数とは、CPUがメモリ空間にアクセスする際に、仮想アドレスがTLBに格納されていなかった回数である。
アプリケーションのdTLBミス数は、アプリケーションが複数のページを同時に利用してランダムにアクセスしていることの指標となる。アプリケーションが複数ページへのランダムなアクセスを多発させている場合、同一物理インデックスへのアクセスが発生し、競合性のキャッシュミスが増加する。競合性キャッシュミスが多発した結果、他のアプリケーションが利用するキャッシュを上書きし、他のアプリケーションのキャッシュヒット率を下げてしまう。よって、アプリケーションのdTLBミス数は、キャッシュ汚染度の指標として用いることができる。
《本発明の実施形態》
本実施形態は、仮想マシンやコンテナ等をデプロイした後、これらをチューニングする方法を提供するものである。
本実施形態は、仮想マシンやコンテナ等をデプロイした後、これらをチューニングする方法を提供するものである。
本実施形態のシステムは、キャッシュ感度の高いアプリケーションには多くキャッシュメモリを割当て、キャッシュ汚染度の高いアプリケーションには少なくキャッシュメモリを割当てるというポリシーで性能の自動最適化を行う。これにより、他のアプリケーションへの影響を小さくすることができる。
本実施形態では、キャッシュ感度の評価指標として、キャッシュプリフェッチ数とキャッシュリファレンス数の和を用いる。更にキャッシュ汚染度の評価指標として、dTLBミス数を用いる。
図1は、本実施形態におけるキャッシュ自動最適化システム1の一例を示す図である。
キャッシュ自動最適化システム1は、物理ホスト3の上で動作するOS(Operating System)2と、このOS2上で動作する複数の仮想マシン13a~13cと、キャッシュチューニングシステム(CTS:Cache Tuning System)15とを含んで構成される。
キャッシュ自動最適化システム1は、物理ホスト3の上で動作するOS(Operating System)2と、このOS2上で動作する複数の仮想マシン13a~13cと、キャッシュチューニングシステム(CTS:Cache Tuning System)15とを含んで構成される。
物理ホスト3は、これらOS2や仮想マシン13a~13cやキャッシュチューニングシステム15を動作させるための中央処理装置とキャッシュとメモリの組み合わせであり、例えば図8や図9で示した物理ホスト3と同様に構成されている。
OS2は、物理ホスト3上で動作するプログラムの実行を制御するための基本ソフトウェアであり、ジョブ管理、入出力制御、データ管理およびこれらに関連した処理を行う。
OS2は、物理ホスト3上で動作するプログラムの実行を制御するための基本ソフトウェアであり、ジョブ管理、入出力制御、データ管理およびこれらに関連した処理を行う。
仮想マシン13a~13cは、それぞれコンピュータの動作をエミュレートするソフトウェアやフレームワークである。物理ホスト3から見ると、各仮想マシン13a~13cはアプリケーションと同一視できる。つまり、仮想マシン13a~13cに対応するCLOSのキャパシティマスクを立てることにより、仮想マシン13a~13cに対して所望量のキャッシュメモリを割り当てることができる。以下、各仮想マシン13a~13cを特に区別しないときには、単に仮想マシン13と記載する。
キャッシュチューニングシステム15は、物理ホスト3上で動作するアプリケーションのキャッシュ割当量をチューニングする部位である。物理ホスト3の不図示のプロセッサが、キャッシュチューニングのプログラムを実行することにより、キャッシュチューニングシステム15の機能が具現化される。仮想マシン13は物理ホスト3上で動作するアプリケーションに含まれる。
図2は、キャッシュ自動最適化システム1の他の例を示す図である。
図2に示すキャッシュ自動最適化システム1は、物理ホスト3の上で動作するOS2と、このOS2上で動作する複数のコンテナ14a~14cと、キャッシュチューニングシステム15とを含んで構成される。
図2に示すキャッシュ自動最適化システム1は、物理ホスト3の上で動作するOS2と、このOS2上で動作する複数のコンテナ14a~14cと、キャッシュチューニングシステム15とを含んで構成される。
物理ホスト3は、これらOS2やコンテナ14a~14cやキャッシュチューニングシステム15を動作させるための中央処理装置とキャッシュとメモリの組み合わせである。
OS2は、物理ホスト3上で動作するプログラムの実行を制御するための基本ソフトウェアであり、ジョブ管理、入出力制御、データ管理およびこれらに関連した処理を行う。
OS2は、物理ホスト3上で動作するプログラムの実行を制御するための基本ソフトウェアであり、ジョブ管理、入出力制御、データ管理およびこれらに関連した処理を行う。
コンテナ14a~14cは、OS2上に仮想的なユーザ空間を提供するソフトウェアやフレームワークである。物理ホスト3から見ると、各コンテナ14a~14cはアプリケーションと同一視できる。つまり、コンテナ14a~14cに対応するCLOSのキャパシティマスクを立てることにより、各コンテナ14a~14cに対して所望量のキャッシュメモリを割り当てることができる。以下、各コンテナ14a~14cを特に区別しないときには、単にコンテナ14と記載する。
キャッシュチューニングシステム15は、物理ホスト3上で動作するアプリケーションのキャッシュ割当量をチューニングする部位である。物理ホスト3の不図示のプロセッサが、キャッシュチューニングのプログラムを実行することにより、キャッシュチューニングシステム15の機能が具現化される。コンテナ14は物理ホスト3上で動作するアプリケーションに含まれるため、キャッシュチューニングシステム15は、コンテナ14のキャッシュ割当量をチューニングすることができる。コンテナ14は物理ホスト3上で動作するアプリケーションに含まれる。
図3は、キャッシュチューニングシステム15のブロック図である。
キャッシュチューニングシステム15は、使用量測定部151と、割当量計算部152と、制御部153とを含んで構成される。
使用量測定部151は、各仮想マシン13や各コンテナ14やそれ以外のアプリケーションのキャッシュの使用具合について、キャッシュプリフェッチ数、リファレンス数、dTLBミス数を測定して値を取得する。
キャッシュチューニングシステム15は、使用量測定部151と、割当量計算部152と、制御部153とを含んで構成される。
使用量測定部151は、各仮想マシン13や各コンテナ14やそれ以外のアプリケーションのキャッシュの使用具合について、キャッシュプリフェッチ数、リファレンス数、dTLBミス数を測定して値を取得する。
割当量計算部152は、使用量測定部151が測定したキャッシュ状況から、各仮想マシン13や各コンテナ14やそれ以外のアプリケーションに割り当てるキャッシュ容量を計算する。
制御部153は、割当量計算部152が計算した結果に基づき、各仮想マシン13や各コンテナ14やそれ以外のアプリケーションに、キャッシュ容量を割り当てる。制御部153は、計算したキャッシュ容量を各仮想マシン13や各コンテナ14やそれ以外のアプリケーションに割り当てる割当部として機能する。
図4は、キャッシュに係る各指標からキャパシティマスクを設定する動作を示す図である。
図4の最上段は、仮想マシンであるVM_A,VM_B,VM_Cのキャッシュの使用具合を示すデータである。Reference欄は、1ミリ秒あたりのキャッシュリファレンス数を示している。
Prefetch欄は、1ミリ秒あたりのキャッシュプリフェッチ数を示している。SUM(ref+pre)欄は、1ミリ秒あたりのキャッシュリファレンス数とキャッシュプリフェッチ数の和を示している。dTLB miss欄は、1ミリ秒あたりのdTLBミス数を示している。Reference欄とPrefetch欄とdTLB miss欄には、使用量測定部151によって測定された値が格納される。SUM(ref+pre)欄には、割当量計算部152が計算した値が格納される。
図4の最上段は、仮想マシンであるVM_A,VM_B,VM_Cのキャッシュの使用具合を示すデータである。Reference欄は、1ミリ秒あたりのキャッシュリファレンス数を示している。
Prefetch欄は、1ミリ秒あたりのキャッシュプリフェッチ数を示している。SUM(ref+pre)欄は、1ミリ秒あたりのキャッシュリファレンス数とキャッシュプリフェッチ数の和を示している。dTLB miss欄は、1ミリ秒あたりのdTLBミス数を示している。Reference欄とPrefetch欄とdTLB miss欄には、使用量測定部151によって測定された値が格納される。SUM(ref+pre)欄には、割当量計算部152が計算した値が格納される。
図4の中段は、仮想マシンであるVM_A,VM_B,VM_Cに割り当てるキャッシュ容量の計算手順を示すデータである。Sensitivity欄はキャッシュ感度の指標であり、SUM(ref+pre)欄の値を1.0で正規化したものが格納される。Pollutivity欄はキャッシュ汚染度の指標であり、dTLB miss欄の値を1.0で正規化したものが格納される。S+(1-P)欄は、1.0からPollutivity欄の値を減算し、更にSensitivity欄の値を加算したものが格納される。Normalize欄は、S+(1-P)欄の値を1.0で再び正規化したものが格納される。これら各欄には、割当量計算部152が計算した値が格納される。
図4の最下段は、仮想マシンであるVM_A,VM_B,VM_Cに係る各CLOSのキャパシティマスクを示すものである。制御部153は、割当量計算部152が計算したNormalize欄の値に基づき、VM_A,VM_B,VM_Cに係る各CLOSのキャパシティマスクを設定する。これにより、仮想マシンであるVM_A,VM_B,VM_Cには、所定量のキャッシュがマッピングされる。
ここで、各CLOSのキャパシティマスクは16bitである。以下の式(1)から式(3)によって各仮想マシンに係る各CLOSに設定されるビット数が算出される。
ここで、各CLOSのキャパシティマスクは16bitである。以下の式(1)から式(3)によって各仮想マシンに係る各CLOSに設定されるビット数が算出される。
VM_A : 16 * 1.00 = 16 bit ・・・(1)
VM_B : 16 * 0.55 = 9 bit ・・・(2)
VM_C : 16 * 0.25 = 4 bit ・・・(3)
VM_B : 16 * 0.55 = 9 bit ・・・(2)
VM_C : 16 * 0.25 = 4 bit ・・・(3)
図5は、キャッシュ自動最適化処理のフローチャートである。
ステップS10において、キャッシュチューニングシステム15は、所定時間が経過したか否かを判定する。キャッシュチューニングシステム15は、所定時間が経過したならば(Yes)、ステップS12の処理に進む。これにより、キャッシュチューニングシステム15は、定期的に各仮想マシン13のキャッシュパラメータを取得して、キャッシュの割当量を計算し、動的にキャッシュを割り当てる。よって、仮想マシン13やコンテナ14の上で動作するアプリケーションが変化した場合であっても、変化後のキャッシュ特性に合わせてキャッシュ容量を再割り当てすることができる。キャッシュチューニングシステム15は、所定時間が経過していないならば(No)、ステップS11の処理に進む。
ステップS10において、キャッシュチューニングシステム15は、所定時間が経過したか否かを判定する。キャッシュチューニングシステム15は、所定時間が経過したならば(Yes)、ステップS12の処理に進む。これにより、キャッシュチューニングシステム15は、定期的に各仮想マシン13のキャッシュパラメータを取得して、キャッシュの割当量を計算し、動的にキャッシュを割り当てる。よって、仮想マシン13やコンテナ14の上で動作するアプリケーションが変化した場合であっても、変化後のキャッシュ特性に合わせてキャッシュ容量を再割り当てすることができる。キャッシュチューニングシステム15は、所定時間が経過していないならば(No)、ステップS11の処理に進む。
ステップS11において、キャッシュチューニングシステム15は、対象の仮想マシン13やコンテナ14が増設または減設されたか否かを判定する。キャッシュチューニングシステム15は、仮想マシン13やコンテナ14が増設または減設されたならば(Yes)、ステップS12の処理に進む。これにより、キャッシュチューニングシステム15は、物理ホスト3上で動作している仮想マシン13やコンテナ14に対して、自動で最適なキャッシュを再割り当てするようにチューニングできる。
キャッシュチューニングシステム15は、仮想マシン13やコンテナ14が増設されておらず、かつ減設されていないならば(No)、ステップS10の処理に戻る。
キャッシュチューニングシステム15は、仮想マシン13やコンテナ14が増設されておらず、かつ減設されていないならば(No)、ステップS10の処理に戻る。
以下、ステップS12~S16は、各仮想マシン13に対してキャッシュを割り当てる処理である。
ステップS12において、使用量測定部151は、各仮想マシンのキャッシュプリフェッチ数、キャッシュリファレンス数、dTLBミス数を取得する。
ステップS12において、使用量測定部151は、各仮想マシンのキャッシュプリフェッチ数、キャッシュリファレンス数、dTLBミス数を取得する。
ステップS13において、割当量計算部152は、キャッシュプリフェッチ数およびリファレンス数の和を各仮想マシンについて正規化して、Cache Sensitivityの評価指標とする。
ステップS14において、割当量計算部152は、dTLBミス数を各仮想マシンについて正規化し、Cache Pollutivityの評価指標とする。
ステップS14において、割当量計算部152は、dTLBミス数を各仮想マシンについて正規化し、Cache Pollutivityの評価指標とする。
ステップS15において、割当量計算部152は、Cache Pollutivityの指標を負に反転した上で、0.0から1.0までの間にマッピングし、Cache Sensitivityを加算して正規化する。
ステップS16において、制御部153は、割当量計算部152の計算結果の割合で、それぞれの仮想マシンのキャッシュ使用量をマッピングする。その際、割当てビットの変更量が最小になるように割当てを更新するとよい。制御部153は、ステップS16の処理が終了すると、ステップS10の処理に戻る。
なお、上記したステップS12~S16において、キャッシュチューニングシステム15は、各仮想マシンにキャッシュを割り当てている。しかし、これに限られず、コンテナに対してキャッシュを割り当ててもよく、更に仮想マシンやコンテナではない一般的なアプリケーションに対してキャッシュを割り当ててもよい。
図6は、キャパシティマスクの他の設定例を示す図である。
このキャパシティマスクは、計算結果であるNormalize欄の総和が1.0になるように正規化されており、キャパシティマスクの1ビットは必ず1つの仮想マシンに割り当てられるようにしている。各仮想マシンのキャッシュ汚染度が高いときには、このような割り当てが好適である。
このキャパシティマスクは、計算結果であるNormalize欄の総和が1.0になるように正規化されており、キャパシティマスクの1ビットは必ず1つの仮想マシンに割り当てられるようにしている。各仮想マシンのキャッシュ汚染度が高いときには、このような割り当てが好適である。
VM_A : 16 * 0.56 = 9 bit ・・・(4)
VM_B : 16 * 0.30 = 5 bit ・・・(5)
VM_C : 16 * 0.14 = 2 bit ・・・(6)
VM_B : 16 * 0.30 = 5 bit ・・・(5)
VM_C : 16 * 0.14 = 2 bit ・・・(6)
図7は、キャパシティマスクの他の設定例を示す図である。
割当量計算部152は、計算結果であるNormalize欄の最大値が1.0になるように正規化している。制御部153は、VM_AのCLOSにキャパシティマスクの16ビットを全て割り当てている。つまり、VM_Aには、3次キャッシュメモリ34の全ての領域が割り当てられている。
割当量計算部152は、計算結果であるNormalize欄の最大値が1.0になるように正規化している。制御部153は、VM_AのCLOSにキャパシティマスクの16ビットを全て割り当てている。つまり、VM_Aには、3次キャッシュメモリ34の全ての領域が割り当てられている。
制御部153は更に、VM_BのCLOSのキャパシティマスクとVM_CのCLOSのキャパシティマスクとが重ならないようにしている。これにより、VM_Bに割り当てられた3次キャッシュメモリ34の領域と、VM_Cに割り当てられた3次キャッシュメモリ34の領域は重ならなくなる。よって、VM_Bの動作によって、VM_Cの性能が低下することを抑止可能である。
《本実施形態の効果》
本実施形態によれば、仮想マシンやコンテナ等をデプロイした後、手作業によらずキャッシュ容量をチューニングすることができる。更に、仮想マシンやコンテナ上で動作するアプリケーションが変わり、この仮想マシンやコンテナのキャッシュ感度やキャッシュ汚染度が変わった場合にも、それに合わせてキャッシュ容量を自動でチューニングすることができる。
本実施形態によれば、仮想マシンやコンテナ等をデプロイした後、手作業によらずキャッシュ容量をチューニングすることができる。更に、仮想マシンやコンテナ上で動作するアプリケーションが変わり、この仮想マシンやコンテナのキャッシュ感度やキャッシュ汚染度が変わった場合にも、それに合わせてキャッシュ容量を自動でチューニングすることができる。
《上記実施形態の構成とその作用効果》
(1) キャッシュチューニング装置は、
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置と、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する測定部と、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する計算部と、
前記キャッシュ容量を各前記アプリケーションに割り当てる割当部と、
を備えることを特徴とする。
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御して、各アプリケーションの性能の最適化を行うことが可能となる。
(1) キャッシュチューニング装置は、
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置と、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する測定部と、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する計算部と、
前記キャッシュ容量を各前記アプリケーションに割り当てる割当部と、
を備えることを特徴とする。
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御して、各アプリケーションの性能の最適化を行うことが可能となる。
(2) (1)に記載のキャッシュチューニング装置の前記測定部は、前記使用状況として各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数とを測定し、
前記計算部は、各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数との和が大きいほど、当該アプリケーションに割り当てるキャッシュ容量を多く計算することを特徴とする。
これによりキャッシュチューニング装置は、アプリケーションのキャッシュ感度が高いほど、このアプリケーションに多くのキャッシュ容量を割り当てることができる。
前記計算部は、各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数との和が大きいほど、当該アプリケーションに割り当てるキャッシュ容量を多く計算することを特徴とする。
これによりキャッシュチューニング装置は、アプリケーションのキャッシュ感度が高いほど、このアプリケーションに多くのキャッシュ容量を割り当てることができる。
(3) (1)に記載のキャッシュチューニング装置の前記測定部は、前記使用状況として各前記アプリケーションにおけるdTLB(data Translation Lookaside Buffer)ミス数を測定し、
前記計算部は、各前記アプリケーションにおけるdTLBミス数が大きいほど、当該アプリケーションに割り当てるキャッシュ容量を少なく計算することを特徴とする。
これによりキャッシュチューニング装置は、アプリケーションのキャッシュ汚染度が高いほど、このアプリケーションに割り当てるキャッシュ容量を少なくすることができる。
前記計算部は、各前記アプリケーションにおけるdTLBミス数が大きいほど、当該アプリケーションに割り当てるキャッシュ容量を少なく計算することを特徴とする。
これによりキャッシュチューニング装置は、アプリケーションのキャッシュ汚染度が高いほど、このアプリケーションに割り当てるキャッシュ容量を少なくすることができる。
(4) (1)に記載のキャッシュチューニング装置の前記測定部は、前記使用状況として各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数とdTLBミス数とを測定し、
前記計算部は、各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数との和を正規化したものから、dTLBミス数を正規化したものを減算して正規化した値をキャッシュ容量として計算することを特徴とする。
これによりキャッシュチューニング装置は、各アプリケーションのキャッシュ感度とキャッシュ汚染度に応じたキャッシュ容量を、このアプリケーションに割り当てることができる。
前記計算部は、各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数との和を正規化したものから、dTLBミス数を正規化したものを減算して正規化した値をキャッシュ容量として計算することを特徴とする。
これによりキャッシュチューニング装置は、各アプリケーションのキャッシュ感度とキャッシュ汚染度に応じたキャッシュ容量を、このアプリケーションに割り当てることができる。
(5)キャッシュチューニング方法は、
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置を備えるコンピュータが、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定するステップと、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算するステップと、
前記キャッシュ容量を各前記アプリケーションに割り当てるステップと、
を実行することを特徴とする。
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御して、各アプリケーションの性能の最適化を行うことが可能となる。
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置を備えるコンピュータが、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定するステップと、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算するステップと、
前記キャッシュ容量を各前記アプリケーションに割り当てるステップと、
を実行することを特徴とする。
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御して、各アプリケーションの性能の最適化を行うことが可能となる。
(6) (5)に記載のキャッシュチューニング方法において、
前記コンピュータは、所定期間ごとに、
前記キャッシュの使用状況を測定するステップ、
前記キャッシュ容量を計算するステップ、
および、前記キャッシュ容量を各前記アプリケーションに割り当てるステップを実行する、ことを特徴とする
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ感度やキャッシュ汚染度が変化した場合に、変化後のキャッシュ感度やキャッシュ汚染度に応じたキャッシュ容量を自動で割り当てることができる。
前記コンピュータは、所定期間ごとに、
前記キャッシュの使用状況を測定するステップ、
前記キャッシュ容量を計算するステップ、
および、前記キャッシュ容量を各前記アプリケーションに割り当てるステップを実行する、ことを特徴とする
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ感度やキャッシュ汚染度が変化した場合に、変化後のキャッシュ感度やキャッシュ汚染度に応じたキャッシュ容量を自動で割り当てることができる。
(7) (5)に記載のキャッシュチューニング方法において、
前記コンピュータは、新たなアプリケーションの起動ごと、および、動作していたアプリケーションが終了するごとに、
前記キャッシュの使用状況を測定するステップ、
前記キャッシュ容量を計算するステップ、
および、前記キャッシュ容量を各前記アプリケーションに割り当てるステップを実行することを特徴とする。
これにより、物理ホスト上で動作する各アプリケーションの起動または終了のたびに、動作中の各アプリケーションに対して最適なキャッシュ容量を再計算して自動で割り当てることができる。
前記コンピュータは、新たなアプリケーションの起動ごと、および、動作していたアプリケーションが終了するごとに、
前記キャッシュの使用状況を測定するステップ、
前記キャッシュ容量を計算するステップ、
および、前記キャッシュ容量を各前記アプリケーションに割り当てるステップを実行することを特徴とする。
これにより、物理ホスト上で動作する各アプリケーションの起動または終了のたびに、動作中の各アプリケーションに対して最適なキャッシュ容量を再計算して自動で割り当てることができる。
(8) キャッシュチューニングプログラムは、
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置を備えるコンピュータに、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する手順、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する手順、
前記キャッシュ容量を各前記アプリケーションに割り当てる手順、
を実行させるためのものである。
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御して、各アプリケーションの性能の最適化を行うことが可能となる。
データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置を備えるコンピュータに、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する手順、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する手順、
前記キャッシュ容量を各前記アプリケーションに割り当てる手順、
を実行させるためのものである。
これにより、物理ホスト上で動作する各アプリケーションのキャッシュ使用量を自動制御して、各アプリケーションの性能の最適化を行うことが可能となる。
《変形例》
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)~(f)のようなものがある。
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)~(f)のようなものがある。
(a) 上記実施形態で示したプリフェッチ数とリファレンス数は、キャッシュ感度の評価指標の一例であり、キャッシュ感度の評価指標はこれらの値に限定されない。
(b) 上記実施形態で示したdTLBミス数は、キャッシュ汚染度の評価指標の一例であり、キャッシュ汚染度の評価指標はこの値に限定されない。
(b) 上記実施形態で示したdTLBミス数は、キャッシュ汚染度の評価指標の一例であり、キャッシュ汚染度の評価指標はこの値に限定されない。
(c) 上記実施形態では、Cache Pollutivityの指標を負に反転した上で0-1にマッピングし、Cache Sensitivityを加算して正規化することにより、キャッシュ使用量の指標を得ている。このときの計算式は、S+(1-P)である。これに限られず、Cache Sensitivityが大きいほどキャッシュ使用量を増やし、Cache Pollutivityが大きいほどキャッシュ使用量を減らすような計算式であればよい。
(d) 割当量計算部は、各アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数との和が大きいほど、このアプリケーションに割り当てるキャッシュ容量を多く計算すればよく、S+(1-P)の計算式に限定されない。
(e) 割当量計算部は、各アプリケーションにおけるdTLBミス数が大きいほど、このアプリケーションに割り当てるキャッシュ容量を少なく計算すればよく、S+(1-P)の計算式に限定されない。
(f) キャパシティマスクの設定は、図4、図6、図7に示した例に限定されない。
(f) キャパシティマスクの設定は、図4、図6、図7に示した例に限定されない。
1 キャッシュ自動最適化システム
13,13a~13d 仮想マシン
14,14a~14c コンテナ
15 キャッシュチューニングシステム
151 使用量測定部 (測定部)
152 割当量計算部 (計算部)
153 制御部 (割当部)
2 OS
3 物理ホスト
31、31a~31d CPUコア (中央処理装置)
32a~32d 1次キャッシュメモリ
33a~33d 2次キャッシュメモリ
34 3次キャッシュメモリ
35 メインメモリ
13,13a~13d 仮想マシン
14,14a~14c コンテナ
15 キャッシュチューニングシステム
151 使用量測定部 (測定部)
152 割当量計算部 (計算部)
153 制御部 (割当部)
2 OS
3 物理ホスト
31、31a~31d CPUコア (中央処理装置)
32a~32d 1次キャッシュメモリ
33a~33d 2次キャッシュメモリ
34 3次キャッシュメモリ
35 メインメモリ
Claims (8)
- データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置と、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する測定部と、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する計算部と、
前記キャッシュ容量を各前記アプリケーションに割り当てる割当部と、
を備えることを特徴とするキャッシュチューニング装置。 - 前記測定部は、前記使用状況として各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数とを測定し、
前記計算部は、各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数との和が大きいほど、当該アプリケーションに割り当てるキャッシュ容量を多く計算する、
ことを特徴とする請求項1に記載のキャッシュチューニング装置。 - 前記測定部は、前記使用状況として各前記アプリケーションにおけるdTLB(data Translation Lookaside Buffer)ミス数を測定し、
前記計算部は、各前記アプリケーションにおけるdTLBミス数が大きいほど、当該アプリケーションに割り当てるキャッシュ容量を少なく計算する、
ことを特徴とする請求項1に記載のキャッシュチューニング装置。 - 前記測定部は、前記使用状況として各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数とdTLBミス数とを測定し、
前記計算部は、各前記アプリケーションにおけるキャッシュプリフェッチ数とリファレンス数との和を正規化したものから、dTLBミス数を正規化したものを減算して正規化した値をキャッシュ容量として計算する、
ことを特徴とする請求項1に記載のキャッシュチューニング装置。 - データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置を備えるコンピュータが、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定するステップと、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算するステップと、
前記キャッシュ容量を各前記アプリケーションに割り当てるステップと、
を実行することを特徴とするキャッシュチューニング方法。 - 前記コンピュータは、所定期間ごとに、
前記キャッシュの使用状況を測定するステップ、
前記キャッシュ容量を計算するステップ、
および、前記キャッシュ容量を各前記アプリケーションに割り当てるステップを実行する、
ことを特徴とする請求項5に記載のキャッシュチューニング方法。 - 前記コンピュータは、新たなアプリケーションの起動ごと、および、動作していたアプリケーションが終了するごとに、
前記キャッシュの使用状況を測定するステップ、
前記キャッシュ容量を計算するステップ、
および、前記キャッシュ容量を各前記アプリケーションに割り当てるステップを実行する、
ことを特徴とする請求項5に記載のキャッシュチューニング方法。 - データを読み書きするメモリと、
前記メモリよりも高速にアクセス可能なキャッシュと、
前記メモリおよび前記キャッシュを読み書きして処理を実行する中央処理装置を備えるコンピュータに、
前記中央処理装置が実行する各アプリケーションによる前記キャッシュの使用状況を測定する手順、
前記使用状況から各前記アプリケーションに割り当てるキャッシュ容量を計算する手順、
前記キャッシュ容量を各前記アプリケーションに割り当てる手順、
を実行させるためのキャッシュチューニングプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/029690 WO2021019652A1 (ja) | 2019-07-29 | 2019-07-29 | キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム |
US17/626,590 US11748269B2 (en) | 2019-07-29 | 2019-07-29 | Cache tuning device, cache tuning method, and cache tuning program |
JP2021536493A JP7259967B2 (ja) | 2019-07-29 | 2019-07-29 | キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/029690 WO2021019652A1 (ja) | 2019-07-29 | 2019-07-29 | キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021019652A1 true WO2021019652A1 (ja) | 2021-02-04 |
Family
ID=74229422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2019/029690 WO2021019652A1 (ja) | 2019-07-29 | 2019-07-29 | キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11748269B2 (ja) |
JP (1) | JP7259967B2 (ja) |
WO (1) | WO2021019652A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02181844A (ja) * | 1989-01-06 | 1990-07-16 | Matsushita Electric Ind Co Ltd | キャッシュメモリ管理方法 |
JP2003030047A (ja) * | 2001-07-16 | 2003-01-31 | Fujitsu Ltd | キャッシュ装置およびキャッシュ方法 |
JP2009528610A (ja) * | 2006-03-02 | 2009-08-06 | エヌエックスピー ビー ヴィ | タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置 |
JP2018112946A (ja) * | 2017-01-12 | 2018-07-19 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396024B2 (en) * | 2008-10-14 | 2016-07-19 | Vmware, Inc. | Online computation of cache occupancy and performance |
US8429665B2 (en) * | 2010-03-19 | 2013-04-23 | Vmware, Inc. | Cache performance prediction, partitioning and scheduling based on cache pressure of threads |
JP5199165B2 (ja) | 2009-03-31 | 2013-05-15 | 株式会社エヌ・ティ・ティ・ドコモ | 通信端末および通信制御方法 |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8949531B2 (en) | 2012-12-04 | 2015-02-03 | Vmware, Inc. | Automated space management for server flash cache |
CN110688062B (zh) * | 2019-08-26 | 2021-03-30 | 华为技术有限公司 | 一种缓存空间的管理方法及装置 |
-
2019
- 2019-07-29 JP JP2021536493A patent/JP7259967B2/ja active Active
- 2019-07-29 WO PCT/JP2019/029690 patent/WO2021019652A1/ja active Application Filing
- 2019-07-29 US US17/626,590 patent/US11748269B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02181844A (ja) * | 1989-01-06 | 1990-07-16 | Matsushita Electric Ind Co Ltd | キャッシュメモリ管理方法 |
JP2003030047A (ja) * | 2001-07-16 | 2003-01-31 | Fujitsu Ltd | キャッシュ装置およびキャッシュ方法 |
JP2009528610A (ja) * | 2006-03-02 | 2009-08-06 | エヌエックスピー ビー ヴィ | タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置 |
JP2018112946A (ja) * | 2017-01-12 | 2018-07-19 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20220318159A1 (en) | 2022-10-06 |
JP7259967B2 (ja) | 2023-04-18 |
US11748269B2 (en) | 2023-09-05 |
JPWO2021019652A1 (ja) | 2021-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8095736B2 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
CN111316220B (zh) | 计算机存储器的性能计数器 | |
US7752417B2 (en) | Dynamic selection of memory virtualization techniques | |
US7827381B2 (en) | Hybrid techniques for memory virtualization in a computer system | |
US7822941B2 (en) | Function-based virtual-to-physical address translation | |
US7917710B2 (en) | Memory protection in a computer system employing memory virtualization | |
US20120023300A1 (en) | Memory page management in a tiered memory system | |
US7921276B2 (en) | Applying quality of service (QoS) to a translation lookaside buffer (TLB) | |
US20190286831A1 (en) | Handling access attributes for data accesses | |
US20150205724A1 (en) | System and method of cache partitioning for processors with limited cached memory pools | |
TW201633137A (zh) | 利用多個轉譯階段管理重用資訊 | |
WO2017134224A1 (en) | Cache and method | |
WO2021019652A1 (ja) | キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム | |
US11822476B2 (en) | Cache usage index calculation device, cache usage index calculation method, and cache usage index calculation program | |
JP7071640B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
US20130262790A1 (en) | Method, computer program and device for managing memory access in a multiprocessor architecture of numa type | |
EP3593251A1 (en) | Systems and methods for managing dynamic random access memory (dram) | |
Bottomley | Improving Kernel Performance by Unmapping the Page Cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19939368 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2021536493 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19939368 Country of ref document: EP Kind code of ref document: A1 |