以磁盘友好的方式将数据写入磁盘?

深溪

我想知道在我的 python 代码中是否有什么我可以做的,这使得i/o磁盘更友好?

我知道,默认情况下,open()使用启发式确定的缓冲区与磁盘的blocksize.

据我了解,这仅确定何时将数据刷新到磁盘的缓存中。这样对吗?

我有以下场景:

我正在连接各种不断传输数据的 websocket。我需要将这些数据写入磁盘。最理想的是,我在接收和i/o操作之间的延迟尽可能小,同时不会用i/o命令来破坏我的磁盘

我已经在使用单个线程来写入所有数据,而不是从各个线程中删除数据(正如这里所指出的)。但我想知道将缓冲区设置为除default此处之外的任何其他内容是否有意义

我意识到无论如何负载都会令人生畏,但我很好奇在为这种场景编写 python 代码时是否有任何磁盘友好的最佳实践。

目前,我只是这样做:

with open(file, 'wb') as f:
    f.write("stuff")
安德鲁·亨勒

但我想知道将缓冲区设置为除默认值之外的任何其他内容是否有意义?

它可能会 - 但您看到的任何性能改进都在很大程度上取决于您正在运行的系统 - 操作系统、文件系统、硬件,甚至数据在磁盘上的布局方式。因此,在创建、写入、修改和删除文件时,您的性能甚至可能强烈依赖于文件系统使用的过去历史记录。将存储从单个本地 5400-rpm SATA 驱动器更改为具有 15K-rpm SAS 驱动器的 RAID-6 阵列的 NAS 系统?您的答案可能会有所不同。

唯一真正知道的方法是在您计划使用它的系统上测试它。或者至少有一个尽可能相同。并且您需要使用与您的进程实际执行的 I/O 操作相同的模式进行测试。如果您的 I/O 模式是从随机位置进行小量读取,那么执行大量连续写入是没有意义的。

最后,除非您在一个实际设计用于处理您的特定 I/O 模式的系统上运行,否则您可能会得出结论,不值得付出努力进行所有测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当发生磁盘读取或磁盘写入时,数据将流向何处?

将PFObject写入磁盘

文件系统如何以原子方式将块写入磁盘?

如何将包含html数据的数据帧写入磁盘?

将xml对象写入磁盘

延迟将数据写入磁盘的背后原理是什么?

将数据写入单独线程中的磁盘(并行)

std :: ofstream是将顺序数据写入磁盘还是仅使用磁盘的可用空间?

将InputStream写入文件的内存友好方式

我如何将数据任意写入磁盘/块存储并检查写入如何进行?

尽快将图像数据写入磁盘

日志中的数据何时写入磁盘?

PostgreSQL Docker容器未将数据写入磁盘

我可以将python写入磁盘吗

将包含BufferedImage的对象写入磁盘

将巨大的long数组写入磁盘

将php数组特定字段写入磁盘

在将图像写入磁盘之前加密

将磁盘类型的设备标识写入数组

用少于N个分区的N个文件将数据写入磁盘

Firefox每分钟将兆字节的数据写入磁盘,为什么?

Libcurl错误无法将接收到的数据写入磁盘/应用程序

如何从SQL Server获取图像数据,写入文件,使用C#将文件保存到磁盘

将csv数据转换为dict,而无需将文件写入磁盘

如何使用异步I / O将实时数据集写入磁盘?

如何禁止Java VM在崩溃时创建任何转储/将敏感数据写入磁盘

提供数据以将单独的进程作为文件而不写入磁盘?

给定CIImage,将图像数据写入磁盘的最快方法是什么?

将R数据帧转换为H2O帧而无需写入磁盘