开发者社区> 问答> 正文

关于virtio fs的性能问题

我试图用NVMe SSD评估virtio fs的IO性能,但经过一些测试,IOPS的总和总是超过硬件限制,所以我认为有问题。 我的评估方法是:

1、 将SSD分区装载到主机目录中,如/mnt/NVMe_SD

2、 创建多个kata容器,并共享目录。类似-v/mnt/NVMe_SD:/mnt/data

3、 在这些容器中运行fio,将在该目录中创建不同的文件并在其中创建r/w。类似于fio--filename=/mnt/data/test$2--size=300MB--direct=1--rw=randwrite--bs=4k--ioengine=libaio--iodepth=1--runtime=60--numjobs=1--基于时间的--group_reporting--name=iops test job--eta newline=1 我试过kata1.12和kata2.4.0,但问题是一样的。

我的virtio fs设置如下:

virtio_fs_cache_size=0 virtio_fs_cache=“无”

所以我认为fio发出的每个IO请求都应该由SSD执行,为什么结果会超过? 希望得到你的帮助。

原提问者GitHub用户mgjrr  如对项目有进一步反馈,请在 GitHub 提交 issue https://github.com/kata-containers/kata-containers/issues

展开
收起
码字王 2023-05-17 16:10:52 252 0
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    virtio-fs是一种将文件系统挂载到虚拟机或容器中的解决方案,它可能比其他解决方案(如NFS)提供更好的性能。但是确保其正常工作需要正确配置和评估,以确保不会出现意外的性能问题。

    在你提供的评估方法中,您使用fio来测试文件系统的IOPS。从您的描述中,似乎您的IOPS总量已超出您的硬件限制,这可能是由于以下原因之一:

    您的测试方法中存在错误:您的测试方法可能需要修改或调整。您可以更详细地描述问题以便提供帮助。

    缓存机制:在将文件系统通过virtio-fs挂载到容器中时,virtio-fs默认启用缓存机制。如果您没有针对virtio-fs设置缓存参数,则默认情况下,virtio-fs将缓存I/O操作以提高性能。这可能会导致您的IOPS总量超出硬件限制。您可以通过设置virtio_fs_cache_size=0和virtio_fs_cache="none"以禁用缓存来解决此问题。

    容器数量:您的测试环境中可能有过多的容器,导致总IOPS量超出了硬件限制。您可以尝试减少容器数量,并逐个运行测试以确定问题源头。

    总的来说,为了准确评估virtio-fs的性能,您可以通过增加控制变量等方法来检测其他参数。此外,使用不同的负载测试工具和测试场景也可能有助于更好的评估性能,例如iozone或dd。

    希望这些建议能够帮助您排除问题并更好地评估您的virtio-fs性能。

    2023-05-18 18:46:36
    赞同 展开评论 打赏
  • 我已经将这个问题转发给了一个论坛,论坛上有很多了解virtiofs人。

    话虽如此,我对您所看到的并不感到太惊讶:virtiofs在文件系统级别工作,而不是在块级别。因此,客户机上的一个IOP很可能必须分解为多个主机操作(例如,处理元数据)。禁用缓存和iodepth为1可能会使问题变得更糟。

    原回答者GitHub用户c3d 如对项目有进一步反馈,请在 GitHub 提交 issue https://github.com/kata-containers/kata-containers/issues

    2023-05-17 16:24:53
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载