gpt4 book ai didi

file-io - 读与写时间

转载 作者:行者123 更新时间:2023-12-02 15:12:58 26 4
gpt4 key购买 nike

哪个操作比较耗时-从磁盘读取或向磁盘写入相同数量的数据和相同的内存位置?

最佳答案

这实际上是一个非常复杂的问题,它需要了解如何设置I/O系统。您引用的简单示例(将固定数量的数据读取/写入磁盘上的特定位置)并不像您想象的那样现实。这是可能影响I/O性能的简短摘要。

  • 磁盘速度
    硬盘速度通常以转速(rpm或每分钟转数)表示,它告诉您磁盘在驱动器内部旋转的速度。典型值是从5400到10,000rpm。 Typical transfer rates的范围为1-1.6 GBit/sec,可以维持高达125 MB/sec的传输速率。

    请记住,latencythroughput之间是有区别的。如果将非常小的数据片段写入驱动器上的不同位置,则取决于驱动器的延迟(seek timerotational delay和访问时间)。但是,如果一次传输大量数据,则可能更多地取决于吞吐量。您的文件系统确定文件在磁盘上的布局方式,并且可能会尝试针对此类情况进行优化(请参见下文)。

    要考虑的另一件事是,您可以(和大多数企业一样)使用RAID配置中的多个驱动器来获得更快的传输速率。 RAID驱动器的吞吐量取决于您选择的 strip 化,镜像和奇偶校验的组合。查看Wikipedia article的所有细节。这里有太多参数无法完整说明。
  • 缓存
    现代操作系统与磁盘驱动器进行交互时要仔细计划。在程序和物理磁盘之间可能有多层缓存,因此,作为应用程序程序员,您将看到的性能可能更多地取决于操作系统如何处理数据,而不是驱动器的实际性能。

    当今大多数操作系统都使用buffer cache,以便可以将磁盘中的数据保留在内存中,并且操作系统可以安排与磁盘进行对话的时间。应用程序的写入似乎很快,因为它们可以直接进入内存,并且操作系统可以等待刷新缓冲区,直到它无事可做为止。在实践中,操作系统将以相当及时的方式尝试刷新写入,以使电源故障不会杀死您的所有数据。因此,尽管有可用的缓冲区空间,但写入似乎会很快。如果您填满了缓冲区高速缓存,或者操作系统可用的可用内存很少,则可能会看到I/O性能下降,因为操作系统必须更频繁地刷新缓冲区。

    读取速度与写入速度一样,取决于数据的缓存方式。当今大多数硬盘驱动器都具有可以提高持续传输速率的硬件缓存。同样,操作系统使用缓冲区高速缓存来存储您访问过的文件。如果可能需要使用任何一种预取策略,可以预先从驱动器中获取数据。使用缓存时,初始读取可能会很慢,但是如果要读取的数据已经在某个地方的缓存中,则后续读取(尤其是对同一事物的读取)将花费更少的时间。
  • 文件系统
    最后,要考虑您的filesystem。大量写入操作可能不会全部都发送到同一位置,因此您无法在估算传输时间时简单地考虑传输速率。文件在磁盘上并不总是连续的,文件系统必须计算它们的布局方式,这可能会严重影响性能,具体取决于可用的空间和磁盘的fragmented大小。

  • 读/写性能将归结为上述所有影响以及您放在驱动器上的工作负载的特征(数据大小,读写频率等)的组合。与大多数事情一样,您需要对应用程序,打算在其上运行的操作系统以及特定的磁盘配置进行试验,以获得关于其性能的真实想法。

    关于file-io - 读与写时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/861540/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com