Tuning Virtual Memory for Performance
Tuning Virtual Memory for Performance
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/9908Identifiers
Study Information System: 45698
Collections
- Kvalifikační práce [11264]
Author
Advisor
Referee
Yaghob, Jakub
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software systems
Department
Department of Software Engineering
Date of defense
21. 5. 2007
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Většina dnešních operačních systémů implementuje virtuální paměť a pro aplikační (uživatelskou) vrstvu poskytuje pouze pohled na virtuální vrstvu. Je známo, že výkonnost některých aplikací je výrazně ovlivněna aktuálním použitím fyzické paměti, které je určeno momentálním virtuálním a fyzickým mapováním. Mapování je pod plnou kontrolou operačního systému a není deterministické, což vede k sub-optimalitě a nedeterminismu ve výkonu aplikace. Cílem práce je umožnit ladění výkonu aplikace daného mapováním, a to jak z režimu jádra, tak i z uživatelského režimu. Modifikovali jsme aktuální jádro operačního systému Linux a připravili tak rozhraní, které aplikaci umožní měnit rozložení paměti na základě strategií implementovaných jako moduly jádra. Naprogramovali jsme strategie optimalizované pro CPU cache a ukázali jsme, že tento přístup může pomoci v řešení jak sub-optimality, tak i nedeterminismu ve výkonu některých aplikací.
Most of the current operating systems implement virtual memory management and provide only a virtual layer for the user land. It is known that the performance of some applications (especially memory intensive) is influenced by the current use of physical addresses specified by virtual memory mapping performed by the operating system and is not fully deterministic. The problem results in both sub-optimal and non-deterministic performance. This thesis focuses on the user space approach to virtual memory tuning for an application with special requirements. The Linux kernel was modified to provide a simple interface for the user space, which enables a process specific physical memory layout manipulation on strategies implemented as kernel modules. We have implemented CPU cache sensitive strategies and shown that this can improve both the optimality and determinism of performance for some applications.