OS-Based NUMA Optimization: Tackling the Case of Truly Multi-thread Applications with Non-partitioned Virtual Page Accesses

OS-Based NUMA Optimization: Tackling the Case of Truly Multi-thread Applications with Non-partitioned Virtual Page Accesses
复制标题

DOI:
10.1109/ccgrid.2016.91
复制
发表时间:
2016-05
期刊:
2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid)
影响因子:
--
通讯作者:
Ilaria Di Gennaro;Alessandro Pellegrini;F. Quaglia
Ilaria Di Gennaro;Alessandro Pellegrini;F. Quaglia
中科院分区:
其他
文献类型:
--
作者:
Ilaria Di Gennaro;Alessandro Pellegrini;F. Quaglia

文献摘要

被引文献

相似文献

改进NUMA机器中的存储器访问的常见方法利用操作系统(OS)页保护机制来引发故障以确定哪些页被什么线程访问,以便将线程及其页的工作集移动到相同的NUMA节点。然而,现有的建议并不完全适合真正的多线程应用程序的要求与非分区访问虚拟页。事实上,这些建议利用(诱导)故障在同一页表的所有线程的同一进程,以确定访问模式。因此,一个线程的错误(以及随后重新打开对相应页面的访问)将屏蔽同一页面上的其他线程的错误。这可能导致在估计各个线程的工作集时不准确。我们克服了这个缺点,提出了一个轻量级的操作系统支持Linux,称为多视图地址空间,明确针对准确性的每线程的工作集估计在真正的多线程应用程序与非分区访问,和相关的线程/数据迁移策略。我们的解决方案对用户空间代码完全透明。它嵌入在一个Linux/x86_64模块中,该模块仅依靠动态修补来安装对原始内核映像的任何所需修改。一个有动机的案例研究的背景下,HPC也提出了评估我们的建议。
A common approach to improve memory access in NUMA machines exploits operating system (OS) page protection mechanisms to induce faults to determine which pages are accessed by what thread, so as to move the thread and its working-set of pages to the same NUMA node. However, existing proposals do not fully fit the requirements of truly multi-thread applications with non-partitioned accesses to virtual pages. In fact, these proposals exploit (induced) faults on a same page-table for all the threads of a same process to determine the access pattern. Hence, the fault by one thread (and the consequent re-opening of the access to the corresponding page) would mask those by other threads on the same page. This may lead to inaccuracy in the estimation of the working-set of individual threads. We overcome this drawback by presenting a lightweight operating system support for Linux, referred to as multi-view address space, explicitly targeting accuracy of per-thread working-set estimation in truly multi-thread applications with non-partitioned accesses, and an associated thread/data migration policy. Our solution is fully transparent to user-space code. It is embedded in a Linux/x86_64 module that installs any required modification to the original kernel image by solely relying on dynamic patching. A motivated case study in the context of HPC is also presented for an assessment of our proposal.