【发布时间】:2021-08-24 13:33:56
【问题描述】:
让我们假设一个给定系统有很多日志文件的场景,假设它是 PB 级的数据。这是我的场景。
二手技术
- 出于我的目的,我将选择 C/C++ 来执行此操作。
我的问题
- 我需要读取磁盘上的这些文件,然后再进行一些处理,无论是将它们发送到某个发布/订阅系统上的主题,还是只是在屏幕上显示这些日志。
问题
- 对于我来说,在读取此数据时获得最佳性能并节省磁盘和 RAM 内存等硬件资源的最佳缓冲区大小是多少?
- 我只是不知道我应该选择64 KB、128 KB、5 MB、10 MB,如何计算?
- 如果这个计算取决于我有多少可用资源,那么如何从这些资源中计算?
【问题讨论】:
-
这取决于你对它进行什么样的处理。您希望针对起点和终点之间的吞吐量对其进行优化。
-
你有没有考虑过内存映射文件,即Unix/Linux下的
mmap()? -
“最好”是适应条件的——要做好不是一件容易的事。从
stdio.h到BUFSIZ开始,然后从那里调整。
标签: c performance buffer