我使用“dd”来创建测试文件和跨 HDD 执行备份。没问题。
目前,我正在尝试使用它来测试 NFS 传输速率。起初,我改变了块大小(“bs”参数)......但这让我想到,为什么我需要改变这个参数?
我想模拟的一个典型用例是:
- Node X 在内存中有一个大的数据结构
- 节点 X 想要将其写入位于 NFS 挂载目录中的文件
在这种情况下,二维数组的典型 C/C++ 代码将是:
FILE *ptr = fopen("path_to_nfs_area", "w");
for (int i = 0; i < data.size(); ++i)
fwrite(data[i], sizeof(float), width, ptr);
...
所以在这种情况下,我们正在以 32 位增量写入缓冲区(sizeof(float)) - 由于这是一个 FILE 对象,它可能也被缓冲了(也许这不是一件好事,但可能与此无关讨论)。
我很难从“bs”块中的 if->of 写入“dd”跳转到从内存中写出变量的应用程序(并用 dd 模拟)。
将“bs”的值更改为小于系统 PAGE_SIZE 是否有意义?
这是我目前的理解,所以我不明白为什么更改“dd”块大小很重要: