> 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更快)