Tod*_*lin 18
这实际上是一个非常复杂的问题,需要了解I/O系统的设置方式.您引用的简单示例(将固定数量的数据读取/写入磁盘上的特定位置)并不像您想象的那么现实.以下是可能影响I/O性能的简短摘要.
磁盘速度
 
硬盘速度通常以转速(rpm或每分钟转数)表示,它可以告诉您盘片在驱动器内旋转的速度.典型值为5400至10,000rpm.  典型的传输速率为1-1.6 GBit/sec,可以保持高达125 MB /秒的传输速率.
请记住,延迟和吞吐量之间存在差异.如果将非常小的数据写入驱动器上的不同位置,则需要依赖驱动器的延迟(寻道时间,旋转延迟和访问时间).但是,如果一次流式传输大量数据,则可能更依赖于吞吐量.您的文件系统确定文件在磁盘上的布局方式,并且可能会尝试优化这样的事情(见下文).
另一件需要考虑的事情是,您可以(并且大多数企业可以)使用RAID配置中的多个驱动器来获得更快的传输速率.RAID驱动器的吞吐量取决于您选择的条带化,镜像和奇偶校验的组合.查看维基百科文章中的所有细微之处.这里有太多参数需要完整解释.
缓存
 
Modern OS在与磁盘驱动器交互时仔细安排.在程序和物理磁盘之间可能存在多层缓存,因此您作为应用程序编程人员所看到的性能可能更多地取决于操作系统处理数据的方式而不是驱动器的实际性能.
今天大多数操作系统都使用缓冲区缓存,以便磁盘中的数据可以保存在内存中,操作系统可以在与磁盘通信时进行调度.应用程序写入看起来很快,因为它们可以直接进入内存,操作系统可以等待刷新缓冲区,直到它没有其他任何操作.在实践中,操作系统将以相当及时的方式尝试刷新写入,因此电源故障不会导致所有数据中断.因此,虽然有可用的缓冲区空间,但写入速度似乎很快.如果填满缓冲区缓存,或者操作系统几乎没有空闲内存可用,您可能会看到I/O性能下降,因为操作系统必须更频繁地刷新缓冲区.
读写速度与写入速度一样,取决于数据的缓存方式.今天大多数硬盘都有硬件缓存,可以提高持续传输速率.同样,操作系统使用缓冲区缓存来存储您访问过的文件.如果看起来可能需要,这些中的任何一个都可以使用一些预取策略来提前从驱动器获取数据.使用缓存时,初始读取可能会很慢,但是如果要读取的数据已经存在于某个缓存中,则后续读取(尤其是读取相同内容)将花费更少的时间.
文件系统
 
最后,您需要考虑文件系统.大写可能不会全部发送到同一个地方,因此在估计需要多长时间时,您不能简单地考虑您的传输速率.文件在磁盘上并不总是连续的,并且您的文件系统必须计算它们的布局方式,这可能会严重影响性能,具体取决于可用空间大小以及磁盘碎片化程度.
读/写性能将归结为上述所有效果的组合,以及放在驱动器上的工作负载特性(数据大小,读写频率等).与大多数事情一样,您需要试验您的应用程序,您打算运行的操作系统以及您的特定磁盘配置,以便真实地了解它的执行方式.