我在HP服务器上安装了Citrix XenServer 6.1(1x Intel Xeon E5630 @ 2.53GHz(4核心,8线程,内存:dom0为752MB,guest虚拟机为55286MB)。服务器有2个scsi镜像磁盘,用于dev /testing。
主机运行testing期间打开或closures的5个客人。 大多数的性能testing结果不佳。 但是我想调整Xen:例如,“dd if = / dev / zero …”在主机上提供130MB / s,而单独的guest虚拟机上只有75MB / s。
如果我在一个guest虚拟机上运行“dd if = / dev / urandom”,则CPU已经饱和,我得到7MB / s。
通过'tune-vcpus',我设法给8个vCPU给dom0,而且我的perfs减less了。 默认是4个vCPU,我想给dom0只有1个vCPU,但是不起作用。 这是我试过的:
我也试过“/ opt / xensource / libexec / xen-cmdline -set-dom0 blkbk.reqs = 256”来从存储中获得更多的perf,它不会改变任何东西。
而且我在VBD上启用了Qos,并将我的testing中的优先级放在了最高的地位。
毕竟,I / O性能没有任何好处。 还有什么要做的吗?
谢谢,
格雷格。
你可以尝试为max_sectors_kbfind一个很好的值。 默认情况下,它设置为512或1024.例如,你可以将它设置为128并再次testing(dom0以及domU)。
echo 128 > /sys/block/[your blockdevice]/queue/max_sectors_kb
这个设置不是持久的。 在/etc/rc.local中添加一个条目,以便在启动时进行设置。
请张贴您的结果。
这听起来像是你特地提到来自客户的存储吞吐量。 这只是众多performance指标之一。 I / O吞吐量是带宽和延迟的函数。 这意味着,为了实现高吞吐量,您需要尽量减less延迟和最大化带宽(即,有大量的数据在任何时间飞行,并有尽可能快的服务数据的要求)。
当您处于虚拟化环境中时,您将不可避免地增加延迟来满足您的请求。 这意味着domU将很难匹配您在dom0中看到的吞吐量。 希望通过允许更多数据在任何时候飞(通过让许多虚拟机进行I / O操作或具有足够大的请求)来将这种影响降至最低。
考虑到您的硬件和您所指的速率(〜150 MB / s),如果您的dd具有正确的参数,如果您无法看到与客人相似的吞吐量,我将感到非常惊讶。
从“dom0”和“domU”(下面的命令将写入500MB的数据到dest ,所以注意不要覆盖重要的数据):
dd if=/dev/zero of=dest bs=1M count=500 oflag=direct
oflag=direct确保这些写操作将绕过虚拟机(dom0和domU)缓冲区高速caching。
此外,请参阅以下文档以更好地了解XenServer 6.1.0如何实现虚拟化存储及其任何性能影响(包括vCPU数量和固定的调整build议):
http://support.citrix.com/article/CTX136861
问候,
费利佩
你可以尝试添加的一件事是将vm中的io调度器切换到最后期限,并实际上禁用io在那里合并。 一般来说,这应该会减lessIo延迟,并且在Xen的IO环结构中可能会更好。
echo 1 > /sys/block/$dev/queue/nomerges
我的推理和经验是Linux的块代码不是很聪明,但认为它是。 所以它会尝试理想地将所有的IO请求合并成一个,然后将它们传递给磁盘驱动器。 在Xen的情况下,下一步的行动是将它们分开,使它们适合环形缓冲区。 然后,他们在dom0中,磁盘驱动程序有很多更好的位置来找出需要合并的东西,因为它不需要单独获取单个虚拟机的知识来进行alignment。
如果它没有帮助,那么撤消这个改变,但是当所有其他的东西都已经被尝试过的时候,它就是我的样子。
也许你的服务器很久以前就被抛弃了,但是我仍然会帮助别人。