【问题标题】:How to identify the resource bound of the system如何识别系统的资源绑定
【发布时间】:2020-12-18 17:37:36
【问题描述】:

我想测试不同存储(即 SSD-1、SSD-2、HDD-1、HDD-2...)上数据库的性能。为了暴露不同存储之上的性能差异,我想让数据库工作负载为磁盘 I/O 密集型(使用写入密集型工作负载)。

但是如何确认系统受磁盘 I/O 限制,而不是 CPU、内存访问等其他因素。是否只需使用 top 来查看 CPU 使用情况(@987654322 @/CPU-cores

比如我跑

sysbench fileio --file-num=16 --file-total-size=2G --file-fsync-all=on --file-test-mode=seqwr --time=30 run

并使用top进行监控:

PID    COMMAND      %CPU TIME     #TH   #WQ  #PORT MEM    PURG   CMPRS  PGRP
33998  sysbench     54.8 00:03.29 2/1   0    11    1316K  0B     0B     3399

这是否意味着系统受限于磁盘 IO?

谢谢!

【问题讨论】:

    标签: io resources


    【解决方案1】:

    您的问题似乎有点含糊。您是在询问一种方法来识别通用系统、特定数据库或不同驱动器的磁盘性能的瓶颈吗?

    我会说它可以设计一个比其他东西更强调磁盘的基准测试,但可能无法提出一个通用算法来识别系统瓶颈。

    您针对特定应用程序设计/设计特定基准测试的方式通常至少需要对应用程序正在执行的操作有一定程度的熟悉,然后解释为什么特定基准测试强调资源 A 而不是资源 B。您可能需要这样做用于得出资源 B 的其他控制基准确实没有瓶颈,其他也没有……就像所有工程一样,迭代是您的朋友。

    如果您想了解“这种特殊的 SSD 对我的 postgres 数据库的性能有多大提升??”的想法。这实际上取决于应用程序的工作量。答案可能根本没有,也可能很多。

    我可以告诉你的是,sysbench fileio 基准测试不会说明这个问题。

    相反,sysbench OLTP 基准测试可能不会告诉您太多关于“磁盘约束数据库工作负载”的信息,因为我认为它通常会执行过多的表锁定和锁定争用,以使其受磁盘约束。

    例如我最近做的一些基准测试,我发现 pg13 在一台带有消费级 SSD 的旧 8 核游戏 PC 上每秒能够进行近 400k(是的近 50 万)100 字节记录插入,这相当多超过 sysbench OLTP benchmark 报告的每秒 1000 个事务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2012-03-02
      • 1970-01-01
      相关资源
      最近更新 更多