linux – 高系统中断率

前端之家收集整理的这篇文章主要介绍了linux – 高系统中断率前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的服务器有24个cpu内核,96G内存,安装了CentOS 7.2 x86_64.

在使用大型数据集启动程序后,我的程序将使用大约50G的内存,而Linux系统将显示高速率的系统中断,但上下文切换速率将会很低. dstat将显示介于500k int / s和1000k int / s之间的某个位置. cpu使用率接近100%,约40%us,60%sy.

如果数据集很小,程序将使用大约5G内存,一切都会好,cpu使用率100%,大约99%us,1%sy.这是预期的.

该程序由我自己编写,它是一个多线程程序.它不做任何网络IO,非常少的磁盘IO,主要是内存操作和算术.无论数据集大小如何,线程模型和算法都是相同的.

我的问题是,如何通过我的程序找出最多使用哪些中断(如果可能的话,摆脱它们以提高性能)?

解决方法

我假设您没有带24C cpu的单插槽系统.所以它可能是2U12C的NUMA系统.在这种情况下,我建议确保程序只使用一个numa节点(通常是套接字),它是RAM的本地一半.

当你使用50G时,这意味着,numa局部性不能得到保证,因为它超过了内存的一半.

要检查实际状态,请使用numastat.如果您使用的是RHEL,则可以使用numad自动处理内存位置.或者您可以使用numactl – 硬件将为您提供有关您的HW NUMA节点的概述.有很好的例子:

http://fibrevillage.com/sysadmin/534-numactl-installation-and-examples

这样,您可以将程序锁定在所需的cpu上.

我建议检查你是否有irqbalance守护进程运行,否则你可能有一个核心超载了中断.

原文链接:/linux/397418.html

猜你在找的Linux相关文章