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守护进程运行,否则你可能有一个核心超载了中断.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户