服务器:我的服务器有2个intel 10核心cpus或8个核心。因此有些有40个内核,有些有32个内核(启用intel HT)
后台:我正在运行我们的应用程序,它将隔离cpus,目前,我隔离了该应用程序的最后32个核心(核心8-39)。 4核(核4-7)用于其他用途(通常,它将使用50%sys cpu)。我想为系统IRQ使用分配核心0-3。从目前开始,如果我运行应用程序,系统响应非常慢,我认为一些irq请求已被争议到核心4-7,这会导致低响应。 你认为如果有可能只使用4个内核来处理系统irq吗?
答案 0 :(得分:0)
如果你有一个以上的插座(" stone"),这意味着你有NUMA系统。 这是获取更多信息https://en.wikipedia.org/wiki/Non-uniform_memory_access
的链接尝试在同一个套接字上使用CPU。下面我将解释为什么以及如何做到这一点
确定每个套接字上的CPU ID究竟是什么。
% numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22
node 0 size: 24565 MB
node 0 free: 2069 MB
node 1 cpus: 1 3 5 7 9 11 13 15 17 19 21 23
node 1 size: 24575 MB
node 1 free: 1806 MB
node distances:
node 0 1
0: 10 20
1: 20 10
这里"节点"意味着" socket" (石)。所以0,2,4,6个CPU位于同一节点上。 将所有IRQ移动到一个节点以将L3缓存用于一组CPU是有意义的。
需要添加参数来启动Linux内核 isolcpus = cpu_number [,cpu_number,...]
例如
isolcpus=1,3,5,7-31
cat / proc / interrupts
numactl [--membind = nodes] [--cpunodebind = nodes]
如果看到系统运行缓慢需要了解瓶颈。 尝试使用top,vmstat,iostat收集原始信息以找出弱点。
提供您系统的一些统计信息,我会帮助您正确启用它。