KVM/QUEMU 客户机磁盘性能缓慢

KVM/QUEMU 客户机磁盘性能缓慢

我对 QEMU/KVM 的行为感到很困惑。我有一台服务器 - 大约 100GB RAM、2 个 CPU - 6 核 + HT 和三个硬盘 - 一个用于根目录,两个用于虚拟机的 BTRFS 镜像(如果有关系的话,是 HGST HDN724030ALE640)。操作系统 - Debian 9.1,QEMU(磁盘类型 - 原始,IO - 本机)。

因此,服务器处于空闲状态 - 它仅运行一个 VM。此虚拟机(Debian 9.1、16GB RAM、4 VCPU)运行 PostgreSQL 和 MySQL 数据库。查询仅接收一个 - PostgreSQL(每秒插入少量数据)。而且...执行此插入操作需要花费大量时间。我编写了简单的脚本,将数据插入非常简单的表中,没有任何约束或索引(三个 varchar 字段)。脚本性能 - 每秒大约插入 1-2 次。速度非常慢!

起初,我以为是 Postgres 的问题。但我重写了 MySQL 脚本,结果相同。然后,​​我在 FreeBSD 上创建新 VM,安装 PostgreSQL,从 Linux VM 创建相同的数据库和表,然后再次检查性能 - 每秒 1-2 次插入。

好的。让我们看看 iostat 和 iotop。iotop 显示,为我的插入查询提供服务的 Postgres 进程在 VM 上消耗了大约 60-70% 的 IO(对于简单插入!)。iostat -x 表示,现在在 VM 上使用大约 40-45 次写入/秒,在主机上使用大约 80-90 次写入/秒。

我尝试使用 dd 实用程序来评估写入速度,如下所示:

dd if=/dev/urandom of=/tmp/fooo.bar bs=1M count=1000

大约需要5-6秒。

接下来,当脚本执行大约 100 次插入时,我检查

/proc/[Postgres_PID]/io file:

rchar: 138544
wchar: 114689
syscr: 39
syscw: 15
read_bytes: 0
write_bytes: 540672
cancelled_write_bytes: 0

我做错了什么?为什么我的磁盘性能这么慢?

相关内容