我们一直在尝试推出 centos 通过 centosplus repo for v6 提供的 3.10 系列内核。
我们注意到一个有趣的现象:在相同负载下,3.10 系列的服务器负载比原版 2.6 系列高出 6-7 倍。使用 top 时,我们注意到此过程占用了大量 CPU
[kworker/u66:2]
这引导我们安装powertop
然后看到这个
Usage Events/s Category Description
1110 ms/s 2045.2 Process php-fpm: pool www
36.0 ms/s 2165.4 Timer tick_sched_timer
57.7 ms/s 1285.0 Process nginx: worker process
13.3 ms/s 416.0 Timer hrtimer_wakeup
39.1 ms/s 350.7 Interrupt [3] net_rx(softirq)
在获得相同流量的情况下,2.6 系列也是如此
Usage Events/s Category Description
1795 ms/s 1654.0 Process php-fpm: pool www
45.3 ms/s 1110.4 Process nginx: worker process
562.8 µs/s 122.4 Process /usr/bin/java -Xms200m -Xmx2000m -Xss256k -XX:MaxDirectMemorySize=516m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Dage
497.1 µs/s 59.3 Process /usr/sbin/gmond
16.0 ms/s 30.2 Process /usr/bin/redis-server 127.0.0.1:6379
4.7 ms/s 32.8 Process python /usr/bin/statsd-relay.py
81.7 ms/s 0.00 Timer tcp_delack_timer
24.8 ms/s 0.00 Timer tick_sched_timer
549.4 µs/s 9.2 Process java -Xmx6g -server -Dfile.encoding=utf-8 -XX:OnOutOfMemoryError=kill -9 %p -XX:+HeapDumpOnOutOfMemoryError -XX:HeapD
15.2 ms/s 0.00 Interrupt [3] net_rx(softirq)
如您所见,2.6 上的 net_rx 为 0,但在 3.10 上我们获得了多达 4k/s。服务器规格相同,并删除了所有 sysctl 设置。我只需在服务器上安装 3.10 即可复制该问题。
我们拥有的 nics 是
06:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
06:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
06:00.2 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
06:00.3 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)