IOAT được kích hoạt nhưng không được sử dụng với Linux?


11

Trên R610 của chúng tôi với igb phiên bản 4.1.2, tôi thấy tải mô-đun ioatdma (và được tải với 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

Chúng tôi có một cổng bốn cổng Intel nic nên hỗ trợ nó:

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)

Tuy nhiên, có vẻ như nó không được sử dụng cho bất kỳ lưu lượng mạng nào:

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

Có ai biết làm thế nào để ioat được sử dụng cho lưu lượng mạng không?

Hạt nhân là 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


6 cái gì đúng không?
mdpc

@mdpc: CentOS 6.3, đã thử một kernel mới hơn nhiều để xem nó có giúp ích gì không, nhưng không được. Đây là vấn đề thứ yếu được phát hiện khi có% si cao trên ksoftirqd với lưu lượng truy cập ipsec (không phải tôi mong đợi giảm tải cho lưu lượng truy cập ipsec, nhưng dường như không có ioatdma nào cả.
Kyle Brandt

2
Chipset bo mạch chủ có hỗ trợ IOAT không? IOAT có được bật trong BIOS hệ thống không? Bạn có thấy "Intel (R) I / OAT DMA Engine được tìm thấy" trong dmesg không? Điều này sẽ chỉ ra một NIC hỗ trợ IOAT đã được định vị. Bạn có thấy "DCA bị vô hiệu hóa trong BIOS" trong dmesg không? Điều này cho thấy không có hỗ trợ BIOS hoặc hỗ trợ cho DCA.
suprjami

Khi tôi hỏi Dell lần cuối (vài năm trước), họ nói BIOS R610 không hỗ trợ DCA và họ cũng không có kế hoạch thêm hỗ trợ cho nó.
Craig

2
Phải, như mọi người đã nói "dmesg | grep DCA" thể hiện điều gì?
Danila Ladner

Câu trả lời:


4

Các gói bạn gửi qua lớn đến mức nào? Theo mặc định, trình điều khiển IOATDMA chỉ được sử dụng trên các kích thước gói lớn. Bạn có thể xem cài đặt hiện tại với:

cat /proc/sys/net/ipv4/tcp_dma_copybreak

Nếu bạn muốn giá trị thấp hơn, bạn có thể đặt giá trị đó bằng sysctl. Ví dụ: để đặt kích thước gói thành 1, hãy sử dụng:

sysctl net.ipv4.tcp_dma_copybreak=1

2

Trước khi bắt đầu, hãy cập nhật máy chủ hoàn chỉnh như BIOS bao gồm phần sụn ổ cứng.

Thứ hai, luôn luôn sử dụng Trình điều khiển mạng Intel mới nhất igb. Chỉ cần biên dịch nó từ nguồn.

BIOS cho phép cả DCA và IOATDMA. Trong linux hãy thử điều này:

# modprobe ioatdma

# dmesg

Bạn sẽ thấy trình điều khiển ioatdma được tải.

Bây giờ, igbtrình điều khiển khác với ixgbe10GBps một. Kể từ khi tôi không sử dụng igbở tất cả, tôi có thể cho bạn biết để cố gắng mạng dừng /etc/init.d/network stoprmmod igbmodprobe igbmột lần nữa để xem nếu có bất kỳ sự khác biệt và kết quả bài nếu bạn có thể xin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.