Sysbench 测试 Mysql 但没有磁盘读取

Sysbench test Mysql but no disk read

当我用sysbench测试mysql时,我用iotop监控io,发现只有DiSH WRITE速度,DISK READ速度一直是0。然后我用free -h,发现buffer/cache增加了,是不是说明sysbench的测试数据不是写入磁盘而是写入buffer,没有自动更新到磁盘?

非常感谢!

mysql运行在哪里??我不知道 iotop 及其测量结果,但即使是微小的 sysbench 运行也会产生巨大的 IO。这可能是用户问题,也许 mysql 在不同的用户下生成 io 而没有被接收。

# you can isolate the db into a container and run sysbench against this to see
# if/when/how much IO there is.

docker run --rm -it --name mdb105 --network host -e MYSQL_ALLOW_EMPTY_PASSWORD=on mariadb:10.5 --port=10306

# in another terminal run
docker stats

# now run sysbench, and you will see enormous IO

# you can get another shell in container named mdb105 by:
docker exec -it --user root mdb105 bash

# mariadb:10.5 is based on ubuntu:20.04
# you could maybe run iotop inside the container

更新:我能够使用 raspberry pi 复制类似于您的零 IO 情况。事实上 docker 统计数据显示没有 IO,而显然数据正在保存到磁盘。我最初的反应是,也许某些 kernels/distro 缺少某些设施,但看起来它不是 kernel/distro 因为我在玩 disk/fs 时看到了 IO,即外部 USB 磁盘...我认为更多的是与微型 SD 卡及其 controller/drivers 不支持此类统计信息有关。由于你的 tps 非常低,我怀疑你也在使用类似于 micro sd 的东西。

这可能不会发生在 ec2 实例中。