Tiny Core Linux
Tiny Core Base => TCB Talk => Topic started by: Јаневски on April 02, 2013, 03:57:24 AM
-
Hello,
I've been using TinyCore Linux on a board with multiple NICs and i ran into the following problem:
cat /proc/interrupts
----
CPU0 CPU1
0: 46 0 IO-APIC-edge timer
1: 2 0 IO-APIC-edge i8042
6: 2 0 IO-APIC-edge floppy
8: 0 0 IO-APIC-edge rtc0
9: 0 0 IO-APIC-fasteoi acpi
12: 4 0 IO-APIC-edge i8042
16: 7068508 0 IO-APIC-fasteoi ahci, uhci_hcd:usb3, eth4
17: 10 0 IO-APIC-fasteoi pata_jmicron
18: 5 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb7, eth2
19: 156455084 0 IO-APIC-fasteoi ata_piix, ata_piix, uhci_hcd:usb6, eth3
21: 132342645 0 IO-APIC-fasteoi uhci_hcd:usb4, eth1
23: 6063 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb5
43: 10692563 0 PCI-MSI-edge eth0
NMI: 0 0 Non-maskable interrupts
LOC: 1790132 915131 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
IWI: 0 0 IRQ work interrupts
RES: 309061 47221 Rescheduling interrupts
CAL: 121 9351 Function call interrupts
TLB: 5131 3642 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 268 268 Machine check polls
ERR: 0
MIS: 0
----
The irq smp_affinity mask of the network cards is set to 3 on all cards on a 2 core machine, however i don't get balanced IRQs.
The cards only hit the first core.
If i try to switch them to the second core manually, or the first core the IRQs are sent properly to the specified single cores, however if both are specified then there is no IRQ balancing.
As far as we're on the subject, is there any usable option of device polling in Linux (the only one i've found is NAPI and smp affinity), is there something similar to FreeBSD sysctl enable kernel device polling?
Best Regards,
Jovan
[EDIT]: Added code tags. Rich
-
Hi Јаневски
is there something similar to FreeBSD sysctl enable kernel device polling?
Tinycore includes the busybox version of sysctl. Or maybe you are looking for procps.tcz.
-
Hi Јаневски
is there something similar to FreeBSD sysctl enable kernel device polling?
Tinycore includes the busybox version of sysctl. Or maybe you are looking for procps.tcz.
Hello Rich,
Thank You for Your answer.
I just mentioned sysctl because people mostly use it, i'm actually using cat to read and echo to write to /proc objects thus i don't need sysctl or similar.
The problem i'm actually having is interrupts not being balanced to multiple cores, as specified by the smp_affinity mask.
My second question was if in Linux there is FreeBSD-like device polling, (in order to avoid full core interrupt storms at the cost of degraded device service performance), but i think so far the only option in Linux i have is smp_affinity.
Best Regads,
Jovan