Добрый день.
Имеется серверная платформа Intel S5500 с установленным свежим CentOS 7, ядро 3.10.0-123.20.1.el7.x86_64. Версия BIOS платформы S5500.86B.01.00.0064.050520141428, тоже свежая.
На борту сетевая карта:
Handle 0x001C, DMI type 10, 6 bytes
On Board Device Information
Type: Ethernet
Status: Enabled
Description: Intel 82576EB Ethernet
[root@* ~]# ethtool -i eth0
driver: igb
version: 5.0.5-k
firmware-version: 1.4.3
bus-info: 0000:01:00.0
Проблема в том, что на сервере неадекватно высок расход CPU на сетевые прерывания. Там, где аналогичные машины (супермикры кстати), расходуют 10% CPU на 100% утилизацию полосы сетевой карты синтетическим тестом, на этой машине уходит все 100% CPU и идет значительный packet loss. При том что конфиграция серверов аналогичная.
Я по началу грешил на firmware сетевой карты. Обновил BIOS и все что с ним прилагается на свежую версию, но там та же верси я 1.4.3 идет.
Вот так выглядит perf top здорового сервера:
38.21% svr [.] 0x00000000000fd929 ♦
3.88% sr.so [.] 0x0000000000027079 ▒
2.16% [kernel] [k] ipt_do_table ▒
1.43% tcpdump [.] 0x0000000000005391 ▒
1.38% [kernel] [k] ____nf_conntrack_find ▒
1.32% libc-2.17.so [.] __random ▒
1.31% [kernel] [k] fib_table_lookup ▒
0.99% [kernel] [k] _raw_spin_lock_bh ▒
0.92% libc-2.17.so [.] _int_malloc ▒
0.76% de.so [.] CElementIDs::GetElement(ElementID) ▒
0.72% [kernel] [k] igb_clean_rx_irq ▒
0.64% libstdc++.so.6.0.19 [.] 0x0000000000068fa3 ▒
0.60% [kernel] [k] tg_load_down ▒
0.50% de.so [.] CElement::CallEventNoParent(char const*, CLuaArguments const&, CElement*, CPlayer*) ▒
0.46% [kernel] [k] inet_getpeer ▒
0.46% libc-2.17.so [.] _int_free ▒
0.44% [kernel] [k] nf_conntrack_in ▒
0.44% libc-2.17.so [.] malloc ▒
0.44% [kernel] [k] _raw_spin_lock ▒
0.44% [kernel] [k] rcu_nocb_kthread ▒
А вот так у «курильщика»
35.61% svr [.] 0x0000000000039183 ♦
15.31% [kernel] [k] _raw_spin_lock_bh ▒
3.94% st.so [.] 0x0000000000007707 ▒
2.14% cr.so [.] amx_Exec ▒
1.43% tcpdump [.] 0x000000000005cc7f ▒
1.17% cr.so [.] amx_Exec ▒
1.10% [kernel] [k] ____nf_conntrack_find ▒
1.10% libc-2.17.so [.] __random ▒
1.08% [kernel] [k] ipt_do_table ▒
0.94% [kernel] [k] fib_table_lookup ▒
0.71% libc-2.17.so [.] _int_malloc ▒
0.62% [kernel] [k] tg_load_down ▒
0.56% crashdetect.so [.] amx_Exec ▒
0.51% libstdc++.so.6.0.19 [.] std::_Rb_tree_increment(std::_Rb_tree_node_base*) ▒
0.49% [kernel] [k] __schedule ▒
0.47% [kernel] [k] nf_conntrack_free ▒
0.47% [kernel] [k] _raw_spin_unlock_bh ▒
0.43% [kernel] [k] igb_clean_rx_irq
Напрягает _raw_spin_lock_bh. Но пока непонятно, куда копать дальше.