系统中断率高

use*_*983 6 linux interrupts high-load

我的服务器有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,主要是内存操作和算术。无论数据集大小如何,线程模型和算法都是相同的。

我的问题是,我怎样才能准确地找出我的程序使用最多的中断(并尽可能摆脱它们以提高性能)?

And*_*gge 0

在 Linux 上:watch cat /proc/interrupts将显示每个中断和 CPU 的中断调用量。我想在你的情况下你会看到LOC(本地计时器)和RES(重新安排)。