debian – 为什么domU比IO上的dom0更快?

前端之家收集整理的这篇文章主要介绍了debian – 为什么domU比IO上的dom0更快?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在物理机器上安装了debian 7.这是机器的配置:

> 3个使用RAID 5的硬盘
>剥离元件尺寸:1M
>阅读政策:自适应预读
>写政策:写通
> / boot 200 MB ext2
> / 15 GB ext3
> SWAP 10GB
> LVM休息(~500GB)

我安装了postgresql,创建了一个大数据库(超过1GB).我有一个sql请求,需要花费大量的时间来运行(一个SELECT语句,所以它只从数据库中读取数据).此请求大约需要5.5秒才能运行.
然后,我安装了XEN,用另一个debian发行版创建了一个domU.在这个操作系统上,我还安装了postgresql,使用相同的数据库.相同的sql请求只需2.5秒即可运行.

我检查了dom0和domU上的内核. uname-a在两个系统上都返回“Linux debian 3.2.0-4-amd64#1 SMP Debian 3.2.41-2 deb7u2 x86_64 GNU / Linux”.
我检查了内核参数,它们大致相同.对于那些相关的,我改变了它们的值,使它们在使用sysctl的两个系统上匹配.我没有看到任何变化(请求仍然花费相同的时间).

在此之后,我检查了文件系统.我在domU上使用了ext3.仍然没有变化.

我安装了hdparm,并在两个系统上的所有分区上的两个系统上运行hdparm -Tt,我得到了类似的结果.

现在,我被卡住了,我不知道有什么不同,这可能是造成这么大差异的原因.

附加信息:

> Debian在戴尔服务器PowerEdge 2950上运行
> postgresql:9.1.9(dom0和domU)
> xen-linux-system:3.2.0
> xen-hypervisor:4.1

谢谢

编辑:

正如KrzysztofKsiężyk所说,这可能是由于某些文件缓存系统造成的.我运行dd命令来测试读写速度.

这是domU:

root@test1:~# dd if=/dev/zero of=/root/dd count=5MB bs=1MB
^C2020+0 records in
2020+0 records out
2020000000 bytes (2.0 GB) copied,18.8289 s,107 MB/s

root@test1:~# dd if=/root/dd of=/dev/null count=5MB bs=1MB
2020+0 records in
2020+0 records out
2020000000 bytes (2.0 GB) copied,15.0549 s,134 MB/s

这是dom0:

root@debian:~# dd if=/dev/zero of=/root/dd count=5MB bs=1MB
^C1693+0 records in
1693+0 records out
1693000000 bytes (1.7 GB) copied,8.87281 s,191 MB/s

root@debian:~# dd if=/root/dd of=/dev/null count=5MB bs=1MB
1693+0 records in
1693+0 records out
1693000000 bytes (1.7 GB) copied,0.501509 s,3.4 GB/s

这个缓存系统的原因是什么?我们怎样才能“修复”它呢?我们可以将它应用于dom0吗?

编辑2:

我切换了我的虚拟磁盘类型.为此,我遵循了this article.

我做了一个dd if = / dev / vg0 / test1-disk of = / mnt / test1-disk.img bs = 16M
然后在/etc/xen/test1.cfg中,我将磁盘参数更改为使用file:而不是phy:
它应该已经删除文件缓存,但我仍然得到相同的数字(对于Postgres,domU更快)

解决方法

这可能是因为文件缓存.即使domU中的bareMetal系统和系统具有与缓存等相同的配置,domU中的某些文件操作也会比裸机更快地执行,因为hypervisor透明地缓存来自domU系统的IO请求.您可以使用dd命令对其进行测试.

猜你在找的HTML相关文章