我的Xen设置中的networkingconfiguration如下:
我的问题是,当我在dom0上通过HTTP从互联网下载一个大文件时,下载速度不稳定。 它逐渐boost,然后停顿几秒钟,然后再次重新启动(所有这些都在循环中,直到下载完成)。 在摊位期间,它看起来所有联网在机器上被阻塞(注意在交互式SSH会话)。
dom0 │domU wget │ ↕ │ eth2↔xenbrD(192.168.78.2)↔vif2.2←┼→eth2(192.168.78.1/24) │ ↕ masquerading eth0↔xenbrE↔vif2.0←——————————————┼→eth0(192.168.1.20/24) ↕ internet
如果我执行相同的下载,但使用在防火墙domU中运行的(非caching)HTTP代理,则下载速率会稳定在最大值。
我怎样才能避免这个问题?
我怀疑这是networking堆栈中的一个错误,但我希望能够帮助更准确地进行诊断(也许可以find解决办法)。
这是Debian Etch系统,使用Xen 3.2和Debian Lenny的2.6.26-xen-686内核(backports)。 这些网桥是使用/ etc / network / interfaces创build的:
auto lo iface lo inet loopback auto xenbrE iface xenbrE inet manual bridge_ports eth0 bridge_maxwait 0 auto xenbrI iface xenbrI inet manual bridge_ports eth1 bridge_maxwait 0 auto xenbrD iface xenbrD inet static address 192.168.78.2 netmask 255.255.255.0 gateway 192.168.78.1 bridge_ports eth2 bridge_maxwait 0
xendconfiguration并不复杂:
# grep '^(' /etc/xen/xend-config.sxp (network-script network-dummy) (vif-script vif-bridge) (dom0-min-mem 150) (dom0-cpus 0) (vncpasswd '')
domU的Xennetworking设置完成于:
# grep vif /etc/xen/xm.slis vif = [ 'mac=00:16:3e:14:85:11, bridge=xenbrE', 'mac=00:16:3e:14:85:12, bridge=xenbrI', 'mac=00:16:3e:14:85:13, bridge=xenbrD' ]
而且dom0中唯一的路由通过xenbrDredirect到了domU:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.78.0 0.0.0.0 255.255.255.0 U 0 0 0 xenbrD 0.0.0.0 192.168.78.1 0.0.0.0 UG 0 0 0 xenbrD
在domU中,唯一完成的iptablesconfiguration是iptables -t nat -A POSTROUTING -s 192.168.78.0/24 -o eth0 -j MASQUERADE 。
真的听起来像是一个内存问题,这将解释本地代理也有帮助。 因为它有点让所有东西都停顿,所以也许内核可以赶上处理数据包。 也许通过给Dom0更多的内存来检查。 我在工作中得到了类似的设置,因为我们使用它来进行速度测量,所以我对你所发现的任何东西都很感兴趣(即使我没有经历过这个问题)
也许与xen有关。 但是,除了dom0之外,你可以检查另一个客户吗? 另一个domU工作吗? 这可能是你的NAT设置的问题,就像一个MSS / MTU问题?
如果内存不足,会发生这种情况…检查你的内存使用情况,并检查你的CPU使用情况。 如果你有很多的io_wait,那么获得更多的内存,并分配更多的dom0。