当前位置: 首页 > Linux

如何测量Linux性能并避免最典型的错误:磁盘

时间:2023-04-06 06:35:54 Linux

在本系列中,我们将讨论Linux性能测量以及如何正确测量它。Linux性能是一个非常广泛的话题,因此我们将重点关注通常可以提高系统性能的四种主要资源——CPU、内存、磁盘存储和网络。就磁盘而言,其实有两点需要注意:磁盘空间——这个很好理解,这也是为什么我们运维同学会设置磁盘使用率超过90%的告警。磁盘I/O性能。磁盘空间我看到很多人不理解大小、文件长度和磁盘使用量之间的区别。所以在这种情况下,我创建了一个16GB的测试文件,但是如果你看一下du,它只需要4KB,因为它是一个稀疏文件,这是一个16GB的巨大漏洞。当然,您不太可能在现实世界中看到这种差异,但您可以看到,因为许多系统使用稀疏文件来处理不同的事情。例如,在MySQL中,由于使用了一些表压缩,使用的磁盘空间和文件长度之间可能存在很大差异,并且两者之间存在差异。I/O性能现在,当您从磁盘I/O性能的角度来看时,您需要在这里考虑很多事情。显然,有IOPS——它能在带宽上做多少。特别是在连接到网络存储或较慢的总线时。例如,可以注意到所有SATASSD每秒都恰好提供500兆字节,这是因为SSD非常快,但SATA总线在这种情况下非常慢,所以这是限制。您还需要了解磁盘读取、写入或fsync的不同类型的负载,因为我们确实有不同的延迟和负载影响。此外,当涉及磁盘时,负载并发性通常称为“队列深度”,因为并发性是系统在实现典型的大吞吐量的同时可以并行处理的请求数。因此出现典型错误:“我的Iostat磁盘利用率已达到100%”。当“哦,我的上帝!”时,我已经多次看到这种100%的恐惧。事实上,您的iostat利用率是至少有一个I/O请求未完成的时间百分比。在过去的十年或千年中,这对于单个旋转驱动器可能再次有意义,但对于我们当时使用的那些通用存储来说确实没有意义。对SSD没有意义,对RAID没有意义,对NAS没有意义,对云存储没有意义,因为它们非常擅长同时处理多个请求.性能(至少延迟)不会受到影响。这里需要强调一下:1.读写延迟的分离根据您的系统,读写延迟之间的差异可能非常明显。有些系统实际上有不同的读延迟,有些有更好的写延迟。在这种情况下,我要做的就是将它们当前的延迟与过去一段时间内您在该系统上看到的平均延迟进行比较,这样我就可以相对容易地理解这是一种异常情况。2.磁盘负载,也可以是平均磁盘使用率,即同时处理多少请求。因为如果您真的要使磁盘饱和,就会发生排队,并且当这件事通常变高时,您应该确切地知道期望您的存储以最佳方式处理什么。当然,问题是如果您正在考虑云存储,您并不知道最佳并发性。他们不会告诉你,这将取决于实现,并且可以随时更改。3.Biolatency:blockdevicelatency接下来是biolatency,你可以从eBPF中再次获得。您不仅可以查看平均延迟,还可以查看跨I/O设备可以执行的操作的分布。eBPF还提供了您可以在文件系统级别查看的工具,这很有趣,因为在该工具上您还可以查看缓存效率和一些其他异常值。所以这是一个用于ext4的工具,但也用于XFS和其他一些常见的文件系统。PS:本文属于翻译,原文