ksoftirqd 进程通过高带宽和多个网络连接导致 CPU 过载

ksoftirqd 进程通过高带宽和多个网络连接导致 CPU 过载

我有一个安装了 proxmox 2.1 的 10GBit 服务器。有一个 OpenVZ 容器运行在 Ubuntu 10.04 64 位上。我可以使用 wget 从数据中心内部服务器 (-O /dev/null) 获得 200-300MB/秒,这还不错。但是,如果有多个连接,则总共不可能获得超过 800MBit/秒的速度。

我有一个正在运行的 apache2 webserver,它充当代理并访问来自其他几个服务器(不仅仅是数据中心内部服务器)的数据。它只是通过代理,所以无法访问 HDD(当然除了日志文件之外)。由于这台服务器有两个 SSD,所以这不太可能是原因。一旦达到 800MBit,我使用“wget -O /dev/null”从数据中心内部服务器获得的速度只有 300kb/秒,即使在主机系统本身上也是如此,而不是在 OpenVZ 容器内。

我注意到进程 ksoftirqd/0 需要很大的 CPU 负载(高达 100%):

 4 root      20   0     0    0    0 R   78  0.0 67:38.99 ksoftirqd/0 # (78% in this case)

有时,进程 events/0 也需要大量的 CPU 能力,并且它似乎与 ksoftirqd/0 竞争 CPU 能力:

 35 root      20   0     0    0    0 R   50  0.0 18:04.63 events/0
  4 root      20   0     0    0    0 R   50  0.0 24:37.64 ksoftirqd/0

top 关于 CPU 功率的输出如下:

Cpu(s): 13.9%us,  7.3%sy,  0.0%ni, 64.0%id,  0.2%wa,   0.0%hi, 14.6%si,  0.0%st

如您所见,si 非常高,通常应该保持在 0。另外硬盘不是瓶颈。(0.2%等待)。

我还得到了其他具有相同配置的 1-Gigabit 服务器。它们甚至达到 900MBit/sec,这对于 1GBit 服务器来说还算可以。但是 ksoftirqd/0 的负载也很高 (60-70%)。

目前大约有 300MBit 通过 10GBit 服务器,并且进程 ksoftirqd/0 保持在 0% CPU。

然而,当晚上流量增加时,它将上升到 100,并将带宽削减至 800MBit。

也许 OpenVZ 有问题?我也可以在没有 proxmox 的情况下直接在服务器上安装 ubuntu,只是为了测试,但如果我能继续使用 proxmox/OpenVZ 就更好了。

然而,重要的是,只要我需要,我就能在这个服务器上使用至少几 GBit。当然,也可以使用多个连接。

据我所知输出当然lspci -vv,我的卡支持 MSI-X。

该系统有一个Intel® Xeon® Processor E5606 (8M Cache, 2.13 GHz, 4.80 GT/s Intel® QPI)处理器

这是我的网卡:

root@ns231828:~# lspci  | grep -i network
02:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
02:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
05:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
05:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

我还上传了此处经过清理的输出lshwhttp://jsfiddle.net/R8QgL/

这也是的内容lspci -vvhttp://pastebin.com/7PqqbzHM

我有一个“测试环境”,其中有一个小批处理脚本,可以从许多服务器下载大型速度测试文件(实际上,我只使用了 ubuntu iso 镜像列表)。在那个环境中,我可以达到 2 gbit。

我尝试后ethtool -C eth2 rx-usecs 1022就能达到 3.5 千兆位。

但是在具有真实客户端的实时环境中,通过优化 rx-usecs 设置(我也尝试了值 1 和 1000,结果最佳为 1022),速度仅增加了大约 100 mbit。

我在此处上传了 ethtool -k 和 ethtool -c 的其他输出:http://pastebin.com/rEtmuV6i

有没有人遇到过类似的问题或能提示我如何解决这个问题?

相关内容