在本系列中,咱们将探讨Linux性能掂量,以及如何正确测量它。 Linux性能是一个十分宽泛的主题,因而,咱们将重点关注通常会进步零碎性能的四个次要资源–CPU,内存,磁盘存储和网络。
就磁盘而言,实际上您须要留神两件事:
- 磁盘空间 –- 这个比拟好了解,这就是咱们为什么运维同学会设置诸如磁盘使用率超过90%的报警。
- 磁盘的I/O性能。
磁盘空间
我看到很多人不理解大小,文件长度和磁盘使用率之间的差别。因而,在这种状况下,我创立了一个16 GB的测试文件,然而如果您查看du
,它仅占用4 KB,因为这是一个稠密文件,这是一个16 GB的微小破绽。
当然,您不太可能在事实世界中看到这种差别,但您能够看到,因为许多零碎将稠密文件用于不同的事物。
例如,在MySQL中,因为应用了某些表压缩,因而所应用的磁盘空间与文件长度之间可能会有很大的差别,而两者之间的差别可能会很大。
I/O 性能
当初,当您谈到磁盘I/O性能观点时,您须要在这里思考很多事件。
显然,有IOPS–它能够在带宽中做多少。尤其是在连贯网络存储或速度较慢的总线时。例如,能够留神到,所有SATA SSD都准确地每秒交付500兆字节,这是因为SSD是如此之快,然而SATA总线在这种状况下却是如此之慢,因而这是极限。
您还须要理解磁盘读取,写入或fsyncs的不同类型的负载,因为咱们的确有不同的提早和负载含意。
此外,当波及磁盘时,负载并发性通常称为“队列深度”,因为并发性是在达到典型的大吞吐量时零碎能够并行处理的申请数量。
因而,有一个典型的谬误:“我的Iostat
磁盘利用率已达到100%”。当“我的天哪!”时,我曾经屡次看到这种对100%的恐怖。
现实情况是,您的iostat利用率是指至多有一个I/O申请未实现的工夫百分比。在过来的十年或几千年中,对于单个spinning驱动器来说,这兴许再一次有意义,然而对于那些咱们过后应用的通用存储来说,这的确没有意义。
对于SSD而言,这没有意义,对于RAID而言,这没有意义,对于NAS而言,它也没有意义,对于云存储来说,这没有意义,因为它们十分善于同时解决多个申请。
性能(至多提早)不会受到影响。
这里应强调:
1. 拆散读写提早
依据您的零碎,读写提早之间的差别可能非常明显。有些零碎实际上具备不同的读取提早,有些零碎具备更好的写入提早。在这种状况下,我要做的就是将它们的以后提早与您在过来一段时间在该零碎上看到的均匀提早进行比拟,这样我就能够绝对容易地了解它是异样的。
2. 磁盘负载,也能够是均匀磁盘使用量
这意味着同时要解决多少个申请。因为如果您真的要使磁盘饱和,则会产生排队,并且当此事件通常变得很高时,您应该晓得冀望您的存储可能最佳地解决的确切内容。
问题当然是,如果您思考应用云存储,您实际上并不知道最佳并发性。他们不会告诉您,这将取决于实现,并且能够随时更改。
3. biolatency:块设施提早
接下来是biolatency,您能够再次从eBPF取得。您无需仅查看均匀提早,能够查看能够在I/O设施上实现的散布。
eBPF还提供了一些工具,您能够在文件系统级别查看这些工具,这很乏味,因为在该工具上,您还能够查看缓存效率以及其余一些异样值。
因而,这是ext4的工具,也是XFS和其余一些常见文件系统的工具。
PS: 本文属于翻译,原文
发表回复