IOAT włączony, ale nie używany w systemie Linux?

11

Na naszych R610 z igb w wersji 4.1.2 widzę ładowanie modułu ioatdma (i ładowane z lsmod):

ioatdma: Intel(R) QuickData Technology Driver 4.00
ioatdma 0000:00:16.0: irq 80 for MSI/MSI-X
ioatdma 0000:00:16.1: irq 81 for MSI/MSI-X
ioatdma 0000:00:16.2: irq 82 for MSI/MSI-X
ioatdma 0000:00:16.3: irq 83 for MSI/MSI-X
ioatdma 0000:00:16.4: irq 84 for MSI/MSI-X
ioatdma 0000:00:16.5: irq 85 for MSI/MSI-X
ioatdma 0000:00:16.6: irq 86 for MSI/MSI-X
ioatdma 0000:00:16.7: irq 87 for MSI/MSI-X

Mamy czteroportowy port Intel nic, który powinien go wspierać:

07:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
07:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
08:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
08:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

Wygląda jednak na to, że nie jest wykorzystywany do żadnego ruchu sieciowego:

[root@or-rtlb01 ~]# cat /sys/class/dma/dma*/bytes*
0
0
0
0
0
0
0
0

Czy ktoś wie, jak to zrobić, aby ioat był używany do ruchu sieciowego?

Jądro jest Linux or-rtlb01.ds.stackexchange.com 3.7.7-1.el6.elrepo.x86_64 #1 SMP Mon Feb 11 22:28:07 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

Kyle Brandt
źródło
redhat 6 prawda?
mdpc
@mdpc: CentOS 6.3, wypróbowałem znacznie nowsze jądro, aby sprawdzić, czy to pomoże, ale nie pomogło. To był drugi problem wykryty, gdy miał wysoki% si na ksoftirqd z ruchem ipsec (nie żebym spodziewał się odciążenia samego ruchu ipsec, ale wydaje się, że w ogóle nie ma ioatdma.
Kyle Brandt
2
Czy chipset płyty głównej obsługuje IOAT? Czy IOAT jest włączony w systemie BIOS? Czy widzisz „Znaleziono silnik Intel (R) I / OAT DMA” w dmesg? Oznaczałoby to, że została zlokalizowana karta sieciowa obsługująca IOAT. Czy widzisz „DCA jest wyłączone w BIOS” w dmesg? Oznaczałoby to brak obsługi lub włączenia systemu BIOS dla DCA.
suprjami
Kiedy ostatnio pytałem Dell (kilka lat temu), powiedzieli, że BIOS R610 nie obsługuje DCA, ani nie planują dodać obsługi tego systemu.
Craig,
2
Zgadza się, jak faceci stwierdzili, co pokazuje „dmesg | grep DCA”?
Danila Ladner,

Odpowiedzi:

4

Jak duże są pakiety, które wysyłasz? Domyślnie sterownik IOATDMA jest używany tylko w przypadku dużych pakietów. Możesz wyświetlić bieżące ustawienie za pomocą:

cat /proc/sys/net/ipv4/tcp_dma_copybreak

Jeśli chcesz, aby wartość była niższa, możesz ustawić ją za pomocą sysctl. Na przykład, aby ustawić rozmiar pakietu na 1, użyj:

sysctl net.ipv4.tcp_dma_copybreak=1
Boscoe
źródło
2

Przed rozpoczęciem zaktualizuj pełny serwer, taki jak BIOS, w tym oprogramowanie dysku twardego.

Po drugie, zawsze używaj najnowszego sterownika sieciowego Intel igb. Po prostu skompiluj to ze źródła.

BIOS włącza zarówno DCA, jak i IOATDMA. W systemie Linux spróbuj tego:

# modprobe ioatdma

# dmesg

Powinieneś zobaczyć załadowany sterownik ioatdma.

Teraz igbsterownik różni się od 10 ixgbeGB / s. Ponieważ ja nie używaj igbw ogóle, mogę powiedzieć, aby spróbować sieci zatrzymania /etc/init.d/network stopi rmmod igbi modprobe igbponownie, aby sprawdzić, czy są jakieś różnice i post wyniki jeśli możesz pls.

Andrew Smith
źródło