以下に示すように、nvidiaは割り込みを共有しており、割り込みはCPU0のみを使用しています。nvidiaの割り込みを変更するにはどうすればよいですか、両方のCPUを使用させるにはどうすればよいですか?
これは2番目の質問を説明する記事です。smp_affinityを変更することでCPU0とCPU1を切り替えることができますが、両方のCPUを使用するように設定する方法がわかりませんでした。
このブログによると、 smp_affinityを3に設定すると、CPU0とCPU1の両方を使用する必要があります。実際、私の場合はCPU0を使用します(1に設定されているように動作します)。2に設定すると、CPU1が使用されます。
radu@radu-work:~$ cat /proc/interrupts
CPU0 CPU1
0: 79 0 IO-APIC-edge timer
1: 9 17152 IO-APIC-edge i8042
4: 2 0 IO-APIC-edge
6: 5 0 IO-APIC-edge floppy
7: 0 0 IO-APIC-edge parport0
8: 1 0 IO-APIC-edge rtc0
9: 0 0 IO-APIC-fasteoi acpi
12: 694613 0 IO-APIC-edge i8042
16: 1233922 0 IO-APIC-fasteoi uhci_hcd:usb3, ahci, nvidia
17: 3961 168757 IO-APIC-fasteoi uhci_hcd:usb4, pata_jmicron
18: 0 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb7
19: 59 0 IO-APIC-fasteoi ata_piix, ata_piix, uhci_hcd:usb6
22: 819 6915 IO-APIC-fasteoi HDA Intel
23: 2 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb5, eth
radu@radu-work:~$ sudo cat /proc/irq/16/smp_affinity
1
root@radu-work:~# uname -a
Linux radu-work 2.6.32-32-generic #62-Ubuntu SMP Wed Apr 20 21:54:21 UTC 2011 i686 GNU/Linux
ありがとうございました。
編集: LinuxボックスでHDムービー(少なくとも720)を再生できるようにしようとしています。私はnvidia66xxシリーズ、LinuxバージョンUbuntu 11.04を持っており、nvidia独自のドライバーをインストールしていますが、古いハードウェア(8xxxシリーズ以上)のハードウェアアクセラレーション(およびビデオデコード)をサポートしていないため、デコードはソフトウェアで行われます。HDムービーを見ようとすると、画像が数秒間フリーズし、数秒間動作してから再びフリーズします。CPU使用率は私の注意を引くもので、nvidiaドライバーは1つのCPUしか使用していなかったので、nvidiaに両方のCPUを使用させることができれば、パフォーマンスが向上し、最終的にLinuxボックスでHDムービーを視聴できるようになると思います。ちなみに、私は考えられるすべてのLinuxプレーヤーを試しました:mplayer(ナイトリービルドでも)、totem、vlcなど...
編集: irqbalance --debug
root@radu-work:/# irqbalance --debug
Package 0: cpu mask is 00000001 (workload 0)
Cache domain 0: cpu mask is 00000001 (workload 0)
CPU number 0 (workload 0)
CPU number 0 (workload 0)
Package 0: cpu mask is 00000003 (workload 0)
Cache domain 0: cpu mask is 00000003 (workload 0)
CPU number 0 (workload 0)
CPU number 1 (workload 0)
Interrupt 44 (class ethernet) has workload 7
Interrupt 0 (class timer) has workload 0
Interrupt 16 (class storage) has workload 122
Interrupt 17 (class storage) has workload 29
Interrupt 19 (class storage) has workload 0
Interrupt 45 (class legacy) has workload 2
Interrupt 1 (class legacy) has workload 2
Interrupt 12 (class legacy) has workload 0
-----------------------------------------------------------------------------
IRQ delta is 152640
Rescanning cpu topology
Package 0: cpu mask is 00000001 (workload 0)
Cache domain 0: cpu mask is 00000001 (workload 0)
CPU number 0 (workload 0)
CPU number 0 (workload 0)
Package 0: cpu mask is 00000003 (workload 0)
Cache domain 0: cpu mask is 00000003 (workload 0)
CPU number 0 (workload 0)
CPU number 1 (workload 0)
Package 0: cpu mask is 00000001 (workload 16)
Cache domain 0: cpu mask is 00000001 (workload 16)
CPU number 0 (workload 3)
Interrupt 44 (ethernet/2)
CPU number 0 (workload 0)
Interrupt 17 (storage/9)
Interrupt 19 (storage/0)
Interrupt 45 (legacy/0)
Interrupt 12 (legacy/0)
Package 0: cpu mask is 00000003 (workload 42)
Cache domain 0: cpu mask is 00000003 (workload 42)
CPU number 0 (workload 0)
CPU number 1 (workload 0)
Interrupt 16 (storage/40)
Interrupt 1 (legacy/0)
-----------------------------------------------------------------------------
...
-----------------------------------------------------------------------------
IRQ delta is 10
IRQ delta is 10, switching to power mode
Rescanning cpu topology
Package 0: cpu mask is 00000001 (workload 0)
Cache domain 0: cpu mask is 00000001 (workload 0)
CPU number 0 (workload 0)
CPU number 0 (workload 0)
Package 0: cpu mask is 00000003 (workload 0)
Cache domain 0: cpu mask is 00000003 (workload 0)
CPU number 0 (workload 0)
CPU number 1 (workload 0)
Package 0: cpu mask is 00000001 (workload 38)
Cache domain 0: cpu mask is 00000001 (workload 38)
CPU number 0 (workload 36)
Interrupt 44 (ethernet/35)
CPU number 0 (workload 0)
Interrupt 16 (storage/0)
Interrupt 1 (legacy/0)
Package 0: cpu mask is 00000003 (workload 4)
Cache domain 0: cpu mask is 00000003 (workload 4)
CPU number 0 (workload 0)
CPU number 1 (workload 0)
Interrupt 19 (storage/0)
Interrupt 17 (storage/0)
Interrupt 45 (legacy/0)
Interrupt 12 (legacy/0)
あなたは間違った木を吠えています。割り込みを両方のCPUに送ると、パフォーマンスが低下しますが、良くなることはありません。一つには、それはソフトウェアデコーダーが絶えず中断されることを意味するでしょう。もう1つは、割り込みコードがキャッシュ内でホットになる可能性が低いことを意味します。これが事態を悪化させる理由は他にもたくさんあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加