Перейти к содержимому
Калькуляторы

а кто-нибудь 3.18 в продакшене с ixgbe использовал? у меня просто на тест нормально отработал, а когда трафик приблизился к 2Гбит началось вот такое

Mar  3 20:12:33 nat3 kernel: NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [rcuos/1:18]
Mar  3 20:12:33 nat3 kernel: NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [rcuos/2:25]
Mar  3 20:12:33 nat3 kernel: Modules linked in: 8021q garp stp llc ts_bm xt_string xt_addrtype iptable_filter xt_nat iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat ip_tables ip6t_REJECT nf_reject_ipv6 nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 ppdev iTCO_wdt iTCO_vendor_support pcspkr 8250_fintek parport_pc parport ipmi_si ipmi_msghandler tpm_infineon i2c_i801 sg lpc_ich e1000e ixgbe(O) hwmon ptp pps_core dca ie31200_edac edac_core ext4 jbd2 mbcache sd_mod ahci libahci video ast ttm drm_kms_helper sysimgblt sysfillrect syscopyarea dm_mirror dm_region_hash dm_log dm_mod
Mar  3 20:12:33 nat3 kernel: CPU: 1 PID: 25 Comm: rcuos/2 Tainted: G           O L 3.18.6-1.el6.elrepo.x86_64 #1
Mar  3 20:12:33 nat3 kernel: Hardware name: ASUSTek Computer INC. RS100-X7/P8B-X series, BIOS 6702 07/23/2013
Mar  3 20:12:33 nat3 kernel: task: ffff880224fcd0d0 ti: ffff880224858000 task.ti: ffff880224858000
Mar  3 20:12:33 nat3 kernel: RIP: 0010:[<ffffffff8166bc32>]  [<ffffffff8166bc32>] _raw_spin_unlock_irqrestore+0x12/0x20
Mar  3 20:12:33 nat3 kernel: RSP: 0018:ffff88022fc83d88  EFLAGS: 00000282
Mar  3 20:12:33 nat3 kernel: RAX: 0000000000000001 RBX: 0000000000000086 RCX: ffff88022fc80000
Mar  3 20:12:33 nat3 kernel: RDX: 0000000000000001 RSI: 0000000000000282 RDI: 0000000000000282
Mar  3 20:12:33 nat3 kernel: RBP: ffff88022fc83d88 R08: ffff88021b83df40 R09: dead000000200200
Mar  3 20:12:33 nat3 kernel: R10: 0000000000000000 R11: 0000000000000003 R12: ffff88022fc83cf8
Mar  3 20:12:33 nat3 kernel: R13: ffffffff8166d3fd R14: ffff88022fc83d88 R15: ffff8800c8a5b2c0
Mar  3 20:12:33 nat3 kernel: FS:  0000000000000000(0000) GS:ffff88022fc80000(0000) knlGS:0000000000000000
Mar  3 20:12:33 nat3 kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Mar  3 20:12:33 nat3 kernel: CR2: ffffffffff600400 CR3: 000000021c75c000 CR4: 00000000001407e0
Mar  3 20:12:33 nat3 kernel: Stack:
Mar  3 20:12:33 nat3 kernel: ffff88022fc83db8 ffffffff8156e1ba ffff88021a467840 0000000000000000
Mar  3 20:12:33 nat3 kernel: 00000000000fcf04 ffff8800c8a5b2e8 ffff88022fc83e08 ffffffff815706c5
Mar  3 20:12:33 nat3 kernel: 00000000000fcf04 ffff88022f0254c0 ffff8800c9a64300 ffffc9001153ad60
Mar  3 20:12:33 nat3 kernel: Call Trace:
Mar  3 20:12:33 nat3 kernel: <IRQ>
Mar  3 20:12:33 nat3 kernel: [<ffffffff8156e1ba>] add_unmap+0xca/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffff815706c5>] intel_unmap+0xb5/0x140
Mar  3 20:12:33 nat3 kernel: [<ffffffff8157077e>] intel_unmap_page+0xe/0x10
Mar  3 20:12:33 nat3 kernel: [<ffffffffa0193f4d>] ixgbe_clean_tx_irq+0x14d/0x480 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159ba9c>] ? napi_gro_complete+0xac/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffffa0195203>] ixgbe_poll+0x53/0x220 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159c082>] net_rx_action+0x112/0x2a0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810769fc>] __do_softirq+0xfc/0x2b0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8166e0bc>] do_softirq_own_stack+0x1c/0x30
Mar  3 20:12:33 nat3 kernel: <EOI>
Mar  3 20:12:33 nat3 kernel: [<ffffffff810764c5>] do_softirq+0x55/0x60
Mar  3 20:12:33 nat3 kernel: [<ffffffff810765b1>] __local_bh_enable_ip+0x91/0xa0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810d3392>] rcu_nocb_kthread+0x132/0x1c0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810d3260>] ? __rcu_process_callbacks+0x1b0/0x1b0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8109023e>] kthread+0xce/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffff81090170>] ? kthread_freezable_should_stop+0x70/0x70
Mar  3 20:12:33 nat3 kernel: [<ffffffff8166c4bc>] ret_from_fork+0x7c/0xb0
Mar  3 20:12:33 nat3 kernel: [<ffffffff81090170>] ? kthread_freezable_should_stop+0x70/0x70
Mar  3 20:12:33 nat3 kernel: Code: d0 f0 0f b1 0f 39 c2 75 e5 b8 01 00 00 00 c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00 66 83 07 01 48 89 f7 57 9d <0f> 1f 44 00 00 c9 c3 0f 1f 80 00 00 00 00 55 48 89 e5 0f 1f 44
Mar  3 20:12:33 nat3 kernel: Modules linked in: 8021q garp stp llc ts_bm xt_string xt_addrtype iptable_filter xt_nat iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat ip_tables ip6t_REJECT nf_reject_ipv6 nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 ppdev iTCO_wdt iTCO_vendor_support pcspkr 8250_fintek parport_pc parport ipmi_si ipmi_msghandler tpm_infineon i2c_i801 sg lpc_ich e1000e ixgbe(O) hwmon ptp pps_core dca ie31200_edac edac_core ext4 jbd2 mbcache sd_mod ahci libahci video ast ttm drm_kms_helper sysimgblt sysfillrect syscopyarea dm_mirror dm_region_hash dm_log dm_mod
Mar  3 20:12:33 nat3 kernel: CPU: 0 PID: 18 Comm: rcuos/1 Tainted: G           O L 3.18.6-1.el6.elrepo.x86_64 #1
Mar  3 20:12:33 nat3 kernel: Hardware name: ASUSTek Computer INC. RS100-X7/P8B-X series, BIOS 6702 07/23/2013
Mar  3 20:12:33 nat3 kernel: task: ffff880224f29090 ti: ffff880224fac000 task.ti: ffff880224fac000
Mar  3 20:12:33 nat3 kernel: RIP: 0010:[<ffffffff8166bc32>]  [<ffffffff8166bc32>] _raw_spin_unlock_irqrestore+0x12/0x20
Mar  3 20:12:33 nat3 kernel: RSP: 0018:ffff88022fc03658  EFLAGS: 00000292
Mar  3 20:12:33 nat3 kernel: RAX: ffff880222741181 RBX: 0000000000000001 RCX: 00000000000faf72
Mar  3 20:12:33 nat3 kernel: RDX: ffff88021b887ac0 RSI: 0000000000000292 RDI: 0000000000000292
Mar  3 20:12:33 nat3 kernel: RBP: ffff88022fc03658 R08: 0000000000000001 R09: 6db6db6db6db6db7
Mar  3 20:12:33 nat3 kernel: R10: 0000000000000001 R11: 0000000000000038 R12: ffff88022fc035c8
Mar  3 20:12:33 nat3 kernel: R13: ffffffff8166d3fd R14: ffff88022fc03658 R15: ffff8800c8a5b2e8
Mar  3 20:12:33 nat3 kernel: FS:  0000000000000000(0000) GS:ffff88022fc00000(0000) knlGS:0000000000000000
Mar  3 20:12:33 nat3 kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Mar  3 20:12:33 nat3 kernel: CR2: 00007fff3d2e2e68 CR3: 000000021e4a3000 CR4: 00000000001407f0
Mar  3 20:12:33 nat3 kernel: Stack:
Mar  3 20:12:33 nat3 kernel: ffff88022fc036c8 ffffffff8156b47f 00000000000faf72 0100000000000246
Mar  3 20:12:33 nat3 kernel: 0000000000000292 0000000000000040 ffff8800c8890000 ffff8800cec48100
Mar  3 20:12:33 nat3 kernel: ffff8800c8a5b2e8 ffff88021c15c180 ffff8800c8a5b2e8 0000000000000001
Mar  3 20:12:33 nat3 kernel: Call Trace:
Mar  3 20:12:33 nat3 kernel: <IRQ>
Mar  3 20:12:33 nat3 kernel: [<ffffffff8156b47f>] __alloc_and_insert_iova_range+0x17f/0x1f0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8156b544>] alloc_iova+0x54/0xb0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8156dc45>] intel_alloc_iova+0xb5/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffff81570ff7>] __intel_map_single+0xb7/0x230
Mar  3 20:12:33 nat3 kernel: [<ffffffff815711b7>] intel_map_page+0x47/0x50
Mar  3 20:12:33 nat3 kernel: [<ffffffffa0195f38>] ixgbe_tx_map+0x378/0x460 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffffa019630f>] ixgbe_xmit_frame_ring+0x2ef/0x690 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffffa0196707>] ixgbe_xmit_frame+0x57/0xb0 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159ad72>] xmit_one+0x72/0x120
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159ae70>] dev_hard_start_xmit+0x50/0xa0
Mar  3 20:12:33 nat3 kernel: [<ffffffff815bd8e2>] sch_direct_xmit+0x102/0x200
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159cdb2>] __dev_queue_xmit+0x1e2/0x5a0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159d190>] dev_queue_xmit+0x10/0x20
Mar  3 20:12:33 nat3 kernel: [<ffffffffa0363a40>] vlan_dev_hard_start_xmit+0xa0/0x140 [8021q]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159ad72>] xmit_one+0x72/0x120
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159ae70>] dev_hard_start_xmit+0x50/0xa0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159d05a>] __dev_queue_xmit+0x48a/0x5a0
Mar  3 20:12:33 nat3 kernel: [<ffffffffa03267c1>] ? nf_nat_ipv4_fn+0xd1/0x220 [nf_nat_ipv4]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159d190>] dev_queue_xmit+0x10/0x20
Mar  3 20:12:33 nat3 kernel: [<ffffffff815a4e4b>] neigh_connected_output+0xdb/0x130
Mar  3 20:12:33 nat3 kernel: [<ffffffff815dcef5>] ip_finish_output_gso+0x385/0x470
Mar  3 20:12:33 nat3 kernel: [<ffffffff815dcfe0>] ? ip_finish_output_gso+0x470/0x470
Mar  3 20:12:33 nat3 kernel: [<ffffffff815dd298>] ip_finish_output+0x2b8/0x430
Mar  3 20:12:33 nat3 kernel: [<ffffffff815dd6e0>] ip_output+0x90/0xa0
Mar  3 20:12:33 nat3 kernel: [<ffffffff815d7e39>] ip_forward_finish+0x69/0x80
Mar  3 20:12:33 nat3 kernel: [<ffffffff815d813d>] ip_forward+0x2ed/0x490
Mar  3 20:12:33 nat3 kernel: [<ffffffff815d5f09>] ip_rcv_finish+0x119/0x380
Mar  3 20:12:33 nat3 kernel: [<ffffffff815d657f>] ip_rcv+0x2cf/0x3b0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159b524>] __netif_receive_skb_core+0x4b4/0x640
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159b6d7>] __netif_receive_skb+0x27/0x70
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159b92d>] netif_receive_skb_internal+0x2d/0x90
Mar  3 20:12:33 nat3 kernel: [<ffffffffa019187a>] ? ixgbe_rx_skb+0x5a/0x120 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159ba9c>] napi_gro_complete+0xac/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159bee2>] napi_gro_flush+0x62/0x90
Mar  3 20:12:33 nat3 kernel: [<ffffffffa01952a4>] ixgbe_poll+0xf4/0x220 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159c082>] net_rx_action+0x112/0x2a0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810769fc>] __do_softirq+0xfc/0x2b0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8166e0bc>] do_softirq_own_stack+0x1c/0x30
Mar  3 20:12:33 nat3 kernel: <EOI>
Mar  3 20:12:33 nat3 kernel: [<ffffffff810764c5>] do_softirq+0x55/0x60
Mar  3 20:12:33 nat3 kernel: [<ffffffff810765b1>] __local_bh_enable_ip+0x91/0xa0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810d3392>] rcu_nocb_kthread+0x132/0x1c0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810d3260>] ? __rcu_process_callbacks+0x1b0/0x1b0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8109023e>] kthread+0xce/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffff81090170>] ? kthread_freezable_should_stop+0x70/0x70
Mar  3 20:12:33 nat3 kernel: [<ffffffff8166c4bc>] ret_from_fork+0x7c/0xb0
Mar  3 20:12:33 nat3 kernel: [<ffffffff81090170>] ? kthread_freezable_should_stop+0x70/0x70
Mar  3 20:12:33 nat3 kernel: Code: d0 f0 0f b1 0f 39 c2 75 e5 b8 01 00 00 00 c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00 66 83 07 01 48 89 f7 57 9d <0f> 1f 44 00 00 c9 c3 0f 1f 80 00 00 00 00 55 48 89 e5 0f 1f 44
Mar  3 20:12:33 nat3 kernel: NMI watchdog: BUG: soft lockup - CPU#3 stuck for 23s! [rcuos/0:9]
Mar  3 20:12:33 nat3 kernel: Modules linked in: 8021q garp stp llc ts_bm xt_string xt_addrtype iptable_filter xt_nat iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat ip_tables ip6t_REJECT nf_reject_ipv6 nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 ppdev iTCO_wdt iTCO_vendor_support pcspkr 8250_fintek parport_pc parport ipmi_si ipmi_msghandler tpm_infineon i2c_i801 sg lpc_ich e1000e ixgbe(O) hwmon ptp pps_core dca ie31200_edac edac_core ext4 jbd2 mbcache sd_mod ahci libahci video ast ttm drm_kms_helper sysimgblt sysfillrect syscopyarea dm_mirror dm_region_hash dm_log dm_mod
Mar  3 20:12:33 nat3 kernel: CPU: 3 PID: 9 Comm: rcuos/0 Tainted: G           O L 3.18.6-1.el6.elrepo.x86_64 #1
Mar  3 20:12:33 nat3 kernel: Hardware name: ASUSTek Computer INC. RS100-X7/P8B-X series, BIOS 6702 07/23/2013
Mar  3 20:12:33 nat3 kernel: task: ffff880224dca090 ti: ffff880224f08000 task.ti: ffff880224f08000
Mar  3 20:12:33 nat3 kernel: RIP: 0010:[<ffffffff8166bc32>]  [<ffffffff8166bc32>] _raw_spin_unlock_irqrestore+0x12/0x20
Mar  3 20:12:33 nat3 kernel: RSP: 0018:ffff88022fd83d88  EFLAGS: 00000282
Mar  3 20:12:33 nat3 kernel: RAX: 0000000000000001 RBX: 0000000000000086 RCX: ffff88022fd80000
Mar  3 20:12:33 nat3 kernel: RDX: 0000000000000003 RSI: 0000000000000282 RDI: 0000000000000282
Mar  3 20:12:33 nat3 kernel: RBP: ffff88022fd83d88 R08: 0000000000000000 R09: dead000000200200
Mar  3 20:12:33 nat3 kernel: R10: 0000000000000000 R11: 0000000000000003 R12: ffff88022fd83cf8
Mar  3 20:12:33 nat3 kernel: R13: ffffffff8166d3fd R14: ffff88022fd83d88 R15: ffff8800c8a5b2c0
Mar  3 20:12:33 nat3 kernel: FS:  0000000000000000(0000) GS:ffff88022fd80000(0000) knlGS:0000000000000000
Mar  3 20:12:33 nat3 kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Mar  3 20:12:33 nat3 kernel: CR2: 00007f034d32b000 CR3: 000000021c688000 CR4: 00000000001407e0
Mar  3 20:12:33 nat3 kernel: Stack:
Mar  3 20:12:33 nat3 kernel: ffff88022fd83db8 ffffffff8156e1ba ffff8800c96bc4c0 0000000000000000
Mar  3 20:12:33 nat3 kernel: 00000000000fb0ca ffff8800c8a5b2e8 ffff88022fd83e08 ffffffff815706c5
Mar  3 20:12:33 nat3 kernel: 00000000000fb0ca ffff88022f0254c0 ffff8800c8882300 ffffc900115a3510
Mar  3 20:12:33 nat3 kernel: Call Trace:
Mar  3 20:12:33 nat3 kernel: <IRQ>
Mar  3 20:12:33 nat3 kernel: [<ffffffff8156e1ba>] add_unmap+0xca/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffff815706c5>] intel_unmap+0xb5/0x140
Mar  3 20:12:33 nat3 kernel: [<ffffffff8157077e>] intel_unmap_page+0xe/0x10
Mar  3 20:12:33 nat3 kernel: [<ffffffffa0193eea>] ixgbe_clean_tx_irq+0xea/0x480 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159ba9c>] ? napi_gro_complete+0xac/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffffa0195203>] ixgbe_poll+0x53/0x220 [ixgbe]
Mar  3 20:12:33 nat3 kernel: [<ffffffff8159c082>] net_rx_action+0x112/0x2a0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810769fc>] __do_softirq+0xfc/0x2b0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8166e0bc>] do_softirq_own_stack+0x1c/0x30
Mar  3 20:12:33 nat3 kernel: <EOI>
Mar  3 20:12:33 nat3 kernel: [<ffffffff810764c5>] do_softirq+0x55/0x60
Mar  3 20:12:33 nat3 kernel: [<ffffffff810765b1>] __local_bh_enable_ip+0x91/0xa0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810d3392>] rcu_nocb_kthread+0x132/0x1c0
Mar  3 20:12:33 nat3 kernel: [<ffffffff810d3260>] ? __rcu_process_callbacks+0x1b0/0x1b0
Mar  3 20:12:33 nat3 kernel: [<ffffffff8109023e>] kthread+0xce/0xf0
Mar  3 20:12:33 nat3 kernel: [<ffffffff81090170>] ? kthread_freezable_should_stop+0x70/0x70
Mar  3 20:12:33 nat3 kernel: [<ffffffff8166c4bc>] ret_from_fork+0x7c/0xb0
Mar  3 20:12:33 nat3 kernel: [<ffffffff81090170>] ? kthread_freezable_should_stop+0x70/0x70
Mar  3 20:12:33 nat3 kernel: Code: d0 f0 0f b1 0f 39 c2 75 e5 b8 01 00 00 00 c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00 66 83 07 01 48 89 f7 57 9d <0f> 1f 44 00 00 c9 c3 0f 1f 80 00 00 00 00 55 48 89 e5 0f 1f 44

Версия драйвера 3.23.2

 

На этом же железе с таким же драйвером но с последним CentOS 6 ядром всё работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

alloc_and_insert_iova_range

iommu?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Igor Diakonov

а вот подробнее чуть можно? как-то не совсем понятно просто.

Поясню чуть - на этом железе нет виртуальных машин, соответственно никаких аппаратных пробросов нет.

Машинка занимается чисто натом. VT-d в биос скорее всего включена

Изменено пользователем junjunk2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iommu в некоторых конфигурациях сильно снижает производительность. Выключается параметром ядра

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И приводит к вот такому поведению?

То, что просто снижает производительность - да и как бы ладно. Почему при этом крашимся?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему при этом крашимся?

 

поскольку у вас ядро актуальное, то вам надо писать этот вопрос в netdev@, а не на nag.ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Производительность повышена за счёт организации групповых операций блокировки очереди, а также заполнения/очистки очереди и взаимодействия с драйвером сетевой карты не на уровне отдельных пакетов, а манипулируя порциями пакетов.

Не читайте opennet...читайте оригинальную статью.

 

the process of validating packets for transmission could be moved outside of the queue lock entirely, increasing concurrency in the system. The resulting patch had benefits that Eric described as awesome: full 40Gb/sec wire speed, even in the absence of segmentation offload. Needless to say, this patch, too, has been accepted into the net-next tree for the 3.18 merge window.

Патч http://lwn.net/Articles/615243/ вроде как отношения к дровам вообще не имеет - затрагивает только само ядро.

 

Там вообще-то два существенных изменения:

1) В интерфейс для драйвера сетевой добавили флаг xmit_more, который говорит что ядро ВОТПРЯМЩАС готово отдать еще порцию данных на передачу. Соответственно переписанные драйвера смогут заполнить весь буфер сетевой карты не отпуская блокировку. Профит в исключении лишних операций блокировки (пара десятков ns на каждую блокировку/разблокировку). В итоге в операциях с кучей мелких пакетов существенный прирост производительности.

2) Таки реально вынесли валидацию пакетов за пределы этой блокировки. В итоге профит для многопроцессорных систем в исключении простаивания ядер процессора в ожидании - пока висит блокировка, можно пакеты пока обрабатывать и в очередь складывать.

 

Еще попилили что-то связанное с возвратом пакетов в очередь, если они не влезли в буфер сетевой. Это вообще дорогостоящая операция, но я пока не почитал что именно сделали.

На самом деле на реальном трафике профита как-то немного, все их десятки гигабит были получены на специально допиленном pktgen'е. Ну и вангую что первое изменение в грядущем на первое время грозит многочисленными факапами с драйверами и неиллюзорно вообще падением производительности - хрен его знает, влезет ли следующая порция данных вообще в буфер, и не придется ли возвращать ее в очередь.

 

Пруфы: http://lwn.net/Articles/615238/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В какое полезное обсуждение вылилась тема!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На ядре 3.19.3 с допиленным драйвером ixgbe (packet batch) наблюдаю вот такую картину:

Эпизодически нагрузка на всех ядрах становится 100%, всё занято ksoftird/d

 

perf top собирает вот такое:

Samples: 1M of event 'cycles', Event count (approx.): 157139141749
Overhead  Shared Object        Symbol
 48,95%  [kernel]             [k] _raw_spin_lock_irqsave
 10,71%  [kernel]             [k] rb_prev
  4,21%  [kernel]             [k] __alloc_and_insert_iova_range
  2,35%  [kernel]             [k] clflush_cache_range
  1,55%  [kernel]             [k] iova_get_pad_size
  1,27%  [kernel]             [k] fib_table_lookup
  1,17%  [kernel]             [k] find_iova

Изменено пользователем junjunk2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Избавился я от нагрузки. Действительно, просто отключение iommu возвращает всё в норму.

 

Вопрос по последним патчам - а насколько вообще это работоспособно?

it will only work with queuing disciplines that have a single transmit queue
- это как понимать? если у меня на интерфейсе вланы накинуты - тут уже не одна очередь на отправку, соответственно работать не будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну и вангую что первое изменение в грядущем на первое время грозит многочисленными факапами с драйверами и неиллюзорно вообще падением производительности - хрен его знает, влезет ли следующая порция данных вообще в буфер, и не придется ли возвращать ее в очередь

Я просмотрел код драйверов, где участвует xmit_more - везде эти моменты учтены. Хотя не везде красиво - у intel'овских драйверов будет счетчик tx_restart_queue подниматься, в случае если напихают "под завязку". Аналогично и у некоторых других. Но факт в том, что проверяют везде, а не тупо ждут следующего пакета.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.