gpt4 book ai didi

linux - 是否可以更改发生核心定时器中断的时间?

转载 作者:可可西里 更新时间:2023-11-01 11:51:55 24 4
gpt4 key购买 nike

在我的 Debian 8 系统上,当我运行命令 watch -n0.1 --no-title cat/proc/interrupts 时,我得到以下输出。

           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7                                                                                                                                                                                       [0/1808]
0: 46 0 0 10215 0 0 0 0 IO-APIC-edge timer
1: 1 0 0 2 0 0 0 0 IO-APIC-edge i8042
8: 0 0 0 1 0 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
12: 0 0 0 4 0 0 0 0 IO-APIC-edge i8042
18: 0 0 0 0 8 0 0 0 IO-APIC-fasteoi i801_smbus
19: 7337 0 0 0 0 0 0 0 IO-APIC-fasteoi ata_piix, ata_piix
21: 0 66 0 0 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1
23: 0 0 35 0 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb2
40: 208677 0 0 0 0 0 0 0 HPET_MSI-edge hpet2
41: 0 4501 0 0 0 0 0 0 HPET_MSI-edge hpet3
42: 0 0 2883 0 0 0 0 0 HPET_MSI-edge hpet4
43: 0 0 0 1224 0 0 0 0 HPET_MSI-edge hpet5
44: 0 0 0 0 1029 0 0 0 HPET_MSI-edge hpet6
45: 0 0 0 0 0 0 0 0 PCI-MSI-edge aerdrv, PCIe PME
46: 0 0 0 0 0 0 0 0 PCI-MSI-edge PCIe PME
47: 0 0 0 0 0 0 0 0 PCI-MSI-edge PCIe PME
48: 0 0 0 0 0 0 0 0 PCI-MSI-edge PCIe PME
49: 0 0 0 0 0 8570 0 0 PCI-MSI-edge eth0-rx-0
50: 0 0 0 0 0 0 1684 0 PCI-MSI-edge eth0-tx-0
51: 0 0 0 0 0 0 0 2 PCI-MSI-edge eth0
NMI: 8 2 2 2 1 2 1 49 Non-maskable interrupts
LOC: 36 31 29 26 21 7611 886 1390 Local timer interrupts
SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
PMI: 8 2 2 2 1 2 1 49 Performance monitoring interrupts
IWI: 0 0 0 1 1 0 1 0 IRQ work interrupts
RTR: 7 0 0 0 0 0 0 0 APIC ICR read retries
RES: 473 1027 1530 739 1532 3567 1529 1811 Rescheduling interrupts
CAL: 846 1012 1122 1047 984 1008 1064 1145 Function call interrupts
TLB: 2 7 5 3 12 15 10 6 TLB shootdowns
TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts
THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 0 0 Machine check exceptions
MCP: 4 4 4 4 4 4 4 4 Machine check polls
THR: 0 0 0 0 0 0 0 0 Hypervisor callback interrupts
ERR: 0
MIS: 0

观察定时器中断主要在 CPU3 上触发。

定时器中断可以移到CPU0吗?

最佳答案

概念的名称是IRQ SMP affinity .

可以通过在 /proc/irq/<IRQ_NUMBER>/smp_affinity 中设置关联掩码来设置 IRQ 的 smp_affinity/proc/irq/<IRQ_NUMBER>/smp_affinity_list 中的关联列表.
affinity mask 是一个位字段,其中每个位代表一个核心,允许在与位集对应的核心上提供 IRQ。

命令

echo 1 > /proc/irq/0/smp_affinity

以 root 身份执行应该将 IRQ0 固定到 CPU0。
条件是强制性的,因为为 IRQ 设置亲和性受一组先决条件的约束,列表包括:支持重定向表的中断 Controller (如 IO-APIC),亲和性掩码必须包含至少一个事件 CPU, IRQ 亲和性 must not be managed by the kernel并且必须启用该功能。

在我的虚拟化 Debian 8 系统中,我无法设置 IRQ0 的关联,失败并出现 EIO 错误。
我也查不到具体原因。 如果你愿意深入Linux源代码,可以从write_irq_affinity in proc.c开始。

关于linux - 是否可以更改发生核心定时器中断的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com