Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NUMA page_迁移性能问题_Java_Linux_Linux Kernel_Numa_Numactl - Fatal编程技术网

Java NUMA page_迁移性能问题

Java NUMA page_迁移性能问题,java,linux,linux-kernel,numa,numactl,Java,Linux,Linux Kernel,Numa,Numactl,我运行的java应用程序有大约80GB的内存映射文件,这些文件应该可以通过TCP访问,为此我使用AWS r3.8XL(我保留了它,因此迁移到非NUMA体系结构不是一个选项,至少现在是这样),并且存在以下问题: 在峰值负载期间,我注意到增加了sys时间,perf工具显示大部分时间都花在numa page_迁移上。是否可以跨NUMA块复制内存,以防止页面从一个块连续移动到另一个块?(所有CPU访问所有~80G内存) (整个内存为只读,可在应用程序启动期间预先分配。) 为什么应用程序需要随机访问所

我运行的java应用程序有大约80GB的内存映射文件,这些文件应该可以通过TCP访问,为此我使用AWS r3.8XL(我保留了它,因此迁移到非NUMA体系结构不是一个选项,至少现在是这样),并且存在以下问题:

  • 在峰值负载期间,我注意到增加了sys时间,perf工具显示大部分时间都花在numa page_迁移上。是否可以跨NUMA块复制内存,以防止页面从一个块连续移动到另一个块?(所有CPU访问所有~80G内存)
(整个内存为只读,可在应用程序启动期间预先分配。)


为什么应用程序需要随机访问所有数据?你们能不能有N个服务,每个服务有1/N的数据运行它自己的numa区域?为了保持应用程序逻辑的简单,它就像一个带有随机查找的大型只读数据库。每个请求可能也需要来自不同部分的数据。你是对的,如果操作系统只知道保留多个副本会更好,但是如果你在磁盘上保留副本会怎么样。我在考虑在每个numa块上运行两个java进程,每个进程上都有私有的MMAP文件,但这有点难以支持;所以我想知道这是否是在每个numa块中获得副本的唯一可能性?是否启用了透明巨大页面(THP)?如果是,请尝试禁用THP。我曾经看到过重内存应用程序建议禁用THP,以获得更好的性能
grep-i“^AnonHuge”/proc/meminfo
将显示它们是否在使用中为什么应用程序需要随机访问所有数据?你们能不能有N个服务,每个服务有1/N的数据运行它自己的numa区域?为了保持应用程序逻辑的简单,它就像一个带有随机查找的大型只读数据库。每个请求可能也需要来自不同部分的数据。你是对的,如果操作系统只知道保留多个副本会更好,但是如果你在磁盘上保留副本会怎么样。我在考虑在每个numa块上运行两个java进程,每个进程上都有私有的MMAP文件,但这有点难以支持;所以我想知道这是否是在每个numa块中获得副本的唯一可能性?是否启用了透明巨大页面(THP)?如果是,请尝试禁用THP。我曾经看到过重内存应用程序建议禁用THP,以获得更好的性能<代码>grep-i“^AnonHuge”/proc/meminfo将显示它们是否正在使用