我想测试以上不同存储库(即SSD-1、SSD-2、HDD-1、HDD-2.)的性能。为了暴露不同存储上的性能差异,我希望使数据库工作负载磁盘I/O密集型(使用写密集型工作负载)。
但是如何确认系统被磁盘I/O限制,而不是像CPU、内存访问等其他东西。简单地使用top来查看CPU的使用情况(Usage-in-percent/CPU-cores < 100%)有效吗?
例如,我跑
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的限制?
谢谢!
发布于 2020-12-15 06:21:20
你的问题似乎有点含糊。您是在问如何识别通用系统的瓶颈,或者仅仅是一个特定的数据库,还是不同驱动器的磁盘性能?
我想说,设计一个比其他东西更强调磁盘的基准是可能的,但可能不可能提出一个识别系统瓶颈的通用算法。
针对特定应用程序设计/设计特定基准的方式通常至少涉及到对应用程序正在做什么的高度熟悉,然后解释为什么特定的基准测试强调资源A而不是资源B。您可能需要做其他控制基准来得出资源B确实没有瓶颈,而且没有其他的东西也是.和所有工程一样,迭代是你的朋友。
如果你想知道“这个特别的SSD在多大程度上提高了我的postgres数据库的性能?”这实际上取决于应用程序工作负载。答案可能一点也没有,或者很多。
我能告诉你的是,sysbench fileio基准将对这个问题一言不发。
相反,sysbench OLTP基准测试可能不会告诉您多少关于“磁盘约束数据库工作负载”的信息,因为我认为它通常会做太多的表锁定和锁定争用,从而使其受到磁盘约束。
例如,我最近做的一些基准测试--我发现pg13能够每秒执行将近400k (是的,将近50万)100个字节的记录插入,在一台老的8核心游戏pc上,与消费SSD相比,它比sysbench OLTP基准所报告的每秒1000个事务要高得多。
https://stackoverflow.com/questions/65299738
复制相似问题