专栏首页皮振伟的专栏[linux][bcc]使用virtiostat查看virtio设备的IOPS和吞吐

[linux][bcc]使用virtiostat查看virtio设备的IOPS和吞吐

前言 在linux平台上,我们经常需要使用各种各样的工具查看设备的使用情况。例如使用iostat查看块设备的IO情况,使用iftop查看网卡设备的流量情况。 但是virtio family的设备这种越来越多,virtiofs、virtio gpu、virtio console等设备却缺少相应的工具。基于以上原因,作者开发了virtiostat工具,作为bcc工具集的一部分,提供了virtio设备的stat监控能力。 分析 原理 在Linux上,virtio设备进行IO的时候,会先生成scatterlist这样的数据结构,然后使用如下几个API,把数据加入到virt queue中:

virtqueue_add_sgs
virtqueue_add_outbuf
virtqueue_add_inbuf
virtqueue_add_inbuf_ctx

那么,我们可以使用probe监控这几个函数的参数,对其进行解析,就可以分析出来Guest OS对于这个virtio设备的IO情况。另外,需要我们解析出来是哪些virtqueue进行的IO,这些virtqueue分别属于哪个device,数据进行排序、聚合,即可得到想要的数据。 和iostat、iftop看到的结果的差异 对于块设备,我们通常关注它的IOPS和Throughput指标。但是,blk layer的一次IO操作,把请求下发到virtio层的时候,除了IO request和数据之外,在virtio blk中还要加入额外的协议的部分,也就导致了virtiostat看到的SG(scatter)操作的多于实际的IOPS。但是它们是一个正相关的关系。 对于Throughput,virtiostat看到的会略高于iostat,同样也是因为有header的关系。但是考虑到header的大小远小于IO的数据大小,这个数值就可以忽略不计了。 几个重要的场景 在virtio blk、virtio scsi以及virtio net场景下,已经有足够的工具来支持了。但是对于virtiofs的场景,就需要virtiostat来观察guest的IO情况了。我们在fs layer上很难观察出来具体的IO情况,一个分区上可能有很多文件同时被IO访问,还有page cache和异步刷盘,其他的工具很难知道真实的IO情况。 另外一个场景,我们如果在host上执行过balloon操作,可能会默认就是一个很快的操作就完成了。但是使用virtiostat观察,其实是一个较高频次的IO操作。发送Guest的PFN的过程效率似乎没有那么高。 效果

效果上来看,如上文描述,有In/Out的SGs操作,表示正相关的IOPS。In/Out BW表示设备的Throughput。 根据Brendan Gregg的建议,增加一下-x模式,来支持一下延迟的监控。这个会稍后支持。也许还会支持device/driver的filter过滤能力。 如果希望使用一下这个工具,需要升级bcc到最新的版本,因为在开发工具的过程中,踩中了一个bcc的Bug,以及还遇到了一个LLVM的Bug。

本文分享自微信公众号 - AlwaysGeek(gh_d0972b1eeb60),作者:AlwaysGeek

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-02-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Windows磁盘性能压测(2)-Fio

    有关Windows磁盘性能压测,笔者还是强烈推荐使用微软自己开源的压测工具DiskSpd。当然,如果要使用其他磁盘性能压测工具也是可以的,比如:IOMeter(...

    雷龙
  • Windows磁盘性能压测(1)-DiskSpd

    有关Windows磁盘性能压测,笔者还是强烈推荐使用微软自己开源的压测工具DiskSpd。当然,如果要使用其他磁盘性能压测工具也是可以的,比如:IOMeter(...

    雷龙
  • 评测云硬盘读写性能

    通过讲解如何优雅扩容云硬盘,我们了解了云盘连接到服务器上的具体操作过程。那么,如何进一步了解已挂载硬盘的实际性能呢?你或许会疑惑,测试硬盘性能,为什么不能用Li...

    溪歪歪
  • 主板硬件性能测试

    项目需要使用的主板有很多性能需要经过测试之后才能用于开发使用,因此将Linux上一些常用的tools移植进板子进行测试。

    jianghaibobo
  • 架构师之路 - 服务器硬件扫盲

    很多架构师都是从软件开发成长起来的,大家在软件领域都有很深的造诣,大部分人对硬件接触的很少。而成为架构师后需要频繁的跟人 、硬件 、软件 、网络打交道,本篇文章...

    JAVA日知录
  • AIX 下磁盘 I/O 性能分析

    磁盘 I/O 的概念 I/O的概念,从字义来理解就是输入输出。操作系统从上层到底层,各个层次之间均存在 I/O。比如,CPU 有 I/O,内存有 I/O, VM...

    魏新宇
  • 磁盘I/O原理及其性能分析

    上一篇文章大概介绍了I/O的一些基本原理和技术,这篇我们主要介绍基于Linux系统的I/O的一些运行原理、监控方式。

    搬砖俱乐部
  • 【原创】一文掌握 Linux 性能分析之 I/O 篇

    这是 Linux 性能分析系列的第三篇,前两篇分别讲了 CPU 和 内存,本篇来看 IO。

    猿大白
  • 硬盘IO性能估算入门

    IO是输入输出指令,操作系统向存储控制器下发一个读或者写数据的操作指令,控制器下发地址和数据给存储设备,并返回结果给存储控制器,最后到达操作系统。操作系统的一个...

    莫晓东do

扫码关注云+社区

领取腾讯云代金券