我正在学习B+树的节点大小,看来存储速度非常重要。我环顾四周并尝试了这个
sudo hdparm -Tt /dev/sda
输出
/dev/sda:
Timing cached reads: 11956 MB in 1.99 seconds = 5993.51 MB/sec
Timing buffered disk reads: 818 MB in 3.00 seconds = 272.52 MB/sec
缓存时序指的是哪个?如果有人能解释一下就好了。
我查看了hdparam
选项。
sudo hdparm -f /dev/sda
/dev/sda:
有哪些替代方案?
答案1
现代系统通常具有驱动程序,可以自动选择最佳设置。所以现在使用 hdparm 不太可能实现显着的改进。使用这些设置需要具备丰富的现场知识,否则损坏的可能性很高。通过投资下注的硬件可能会取得良好的结果。尤其是使用固态硬盘(SSD)代替磁盘(HDD)带来了巨大的改进。更好的接口卡也能提供很大帮助。然后,通过剥离到多个物理磁盘来组织 RAID 阵列中的磁盘,可以提供更好的 IO 值。
关于 hdparm 测试结果的问题:只要有可能,Linux 都会使用可用的 RAM 来缓存 IO 操作。您可以看到该缓存的大小,例如将“top”设置为“buff/cache”。这意味着,对于通常的 IO 操作,数据被放入内存,然后传输到磁盘(用于写入操作)或传输到请求进程(用于读取)。下次读取相同数据的操作不会访问存储,而是直接从内存中传递数据。
hdparm -t 从存储中读取一定量的数据。然后擦除已经缓冲这些数据的缓存区域,并再次读取它们。此类操作的测量吞吐量显示为“计时缓冲磁盘读取”。它反映了从磁盘新鲜获取数据时的通常读取吞吐量。例如,第一次从磁盘流式传输大型视频时。
hdparm -T 执行类似的操作,但不刷新缓冲区高速缓存。因此,只需第一次操作将数据加载到缓冲区,重复读取就会从内存中传递数据,而无需进行磁盘操作。测量的吞吐量显示为“计时缓存读取”。这可能反映了连续多次显示同一张图片时所经历的时间。
您的标题问题“如何检查硬盘速度”很难回答。经验丰富的磁盘速度很大程度上取决于操作类型。差异可能是巨大的。例如,当您将大文件的顺序读取与数据库进程对 4K 页的随机读取进行比较时。因此,我通常会确定需要使用存储的操作配置文件,然后使用 IOzone (www.iozone.org) 模拟此类负载。
答案2
硬盘有缓存。
也就是说,6 GB/s 似乎是一个不合理的速度磁盘缓存访问。例如 SATA 提供 6 GB位每秒的理论带宽,相当于约 600 兆字节每秒。甚至三星 970 evo声称最大容量为 3.5 GB位/秒读取速度。 “缓存读取”数字看起来像是从操作系统缓存(即 RAM,从不访问磁盘)读回数据。
对于使用 b+ 树的应用程序,随机访问速度比顺序/批量 I/O 速度更重要。有各种编写的磁盘基准测试软件,例如邦妮++可以测试随机访问。