gpt4 book ai didi

memory-management - 顺序写和随机写的区别

转载 作者:行者123 更新时间:2023-12-03 07:45:06 26 4
gpt4 key购买 nike

在以下情况下顺序写入和随机写入有什么区别:-1)基于磁盘的系统2)基于SSD [闪存设备]的系统

当应用程序写入某些内容并且需要在磁盘上修改信息/数据时,我们如何知道它是顺序写入还是随机写入。到目前为止,写入无法区分为“顺序”或“顺序”写入“随机”。写入只是被缓冲,然后在我们刷新缓冲区时应用到磁盘。

如有错误,请指正。

最佳答案

当人们谈论顺序随机写入文件时,他们通常会区分无中间查找的写入(“顺序”)和无中间查找的写入查找-写入-查找-写入-查找-写入等模式(“随机”)。

这种区别在传统的基于磁盘的系统中非常重要,其中每次磁盘查找将花费大约 10 毫秒。将数据顺序写入同一磁盘每 MB 大约需要 30 毫秒。因此,如果顺序将 100MB 的数据写入磁盘,大约需要 3 秒。但如果你随机写入 100 次,每次 1MB,总共需要 4 秒(实际写入 3 秒,所有查找 10ms*100 == 1 秒)。

随着每次随机写入变得越来越小,您为磁盘寻道付出越来越多的代价。在执行 1 亿次随机 1 字节写入的极端情况下,您仍然需要 3 秒的时间来完成所有实际写入,但您现在有 11.57 天的时间去做!显然,顺序写入与随机写入的程度确实会影响完成任务所需的时间。

对于闪存来说,情况有点不同。使用闪存,您无需移动物理磁盘头。 (这就是传统磁盘 10 毫秒寻道成本的来源)。然而,闪存设备往往具有较大的页面大小(根据 wikipedia,最小的“典型”页面大小约为 512 字节,4K 页面大小似乎也很常见)。因此,如果您写入少量字节,闪存仍然存在开销,因为您必须读出整个页面,修改正在写入的字节,然后写回整个页面。我不知道从我头顶闪过的特征数字。但经验法则是,在闪存上,如果每次写入的大小通常与设备的页面大小相当,那么随机写入和顺序写入之间不会有太大的性能差异。如果您的每次写入与设备页面大小相比都很小,那么在进行随机写入时您会看到一些开销。

现在,对于上述所有内容,确实在应用程序层有很多东西对您来说是隐藏的。内核、磁盘/闪存 Controller 等中的某些层可能会在“顺序”写入过程中插入不明显的搜索。但在大多数情况下,在应用程序层“看起来”顺序写入(无寻道,大量连续 I/O)将具有顺序写入性能,而在应用程序层“看起来”随机写入将具有(通常更差)随机写入性能。

关于memory-management - 顺序写和随机写的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100584/

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