2017-08-02 5 views
3

私の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に移動することはできますか?

+0

のように始めることができます。 – tangrs

+0

コア3の干渉を減らすには – merlin2011

+0

[X-Y問題](http://xyproblem.info/)のように聞こえます。あなたは本当に何を達成しようとしていますか? – tangrs

答えて

4

概念名はIRQ SMP affinityです。

それは、/proc/irq/<IRQ_NUMBER>/smp_affinity_list/proc/irq/<IRQ_NUMBER>/smp_affinityにおけるアフィニティ・マスクまたはアフィニティリストを設定することにより、IRQのsmp_affinityを設定することが可能です。
アフィニティマスクは、各ビットがコアを表すビットフィールドです。IRQは、ビットセットに対応するコア上で処理することができます。

ルートべき端子としてCPU0にIRQ0実行コマンド

echo 1 > /proc/irq/0/smp_affinity 


リダイレクションテーブル(IO-APICのような)をサポートする割り込みコントローラ、アフィニティマスクに少なくとも1つのアクティブなCPUが含まれていなければならない、IRQのアフィニティ設定には前提条件があり、 IRQアフィニティmust not be managed by the kernelとその機能を有効にする必要があります。

私の仮想化されたDebian 8システムでは、EIOエラーで失敗したIRQ0のアフィニティを設定できませんでした。
私はまた、正確な理由を追跡することができませんでした。
Linuxソースコードを掘り下げたい場合は、write_irq_affinity in proc.cから

関連する問題