我有一个安装了 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)
我还上传了此处经过清理的输出lshw
:http://jsfiddle.net/R8QgL/
这也是的内容lspci -vv
:http://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
有没有人遇到过类似的问题或能提示我如何解决这个问题?