1

我在https://blogs.oracle.com/roch/entry/does_zfs_really_use_more上阅读了以下内容

有一种特殊的工作负载确实会导致 ZFS 消耗更多内存:写入(使用系统调用)到同样被映射的页面。ZFS 不使用常规分页系统来管理通过读写系统调用传递的数据。然而,与虚拟内存子系统密切相关的 mmaped I/O 仍然通过常规分页代码。因此,写入映射页面的系统调用意味着我们将至少保留 2 个关联数据的副本,直到我们设法将数据写入磁盘。我们不希望这种类型的负载通常使用大量的 ram

这到底是什么意思?这是否意味着 zfs 将“无用地”双重缓存由内存映射文件支持的任何内存区域?还是“使用系统调用”是否意味着使用我不熟悉的其他一些写作方法进行写作。如果是这样,我是否最好将这种方式写入的文件的工作目录保存在 ufs 分区上?

4

1 回答 1

2

这是否意味着 zfs 将“无用地”双重缓存由内存映射文件支持的任何内存区域?

希望,没有。

还是“使用系统调用”是否意味着使用我不熟悉的其他一些写作方法进行写作。

该方法只是常规的低级write(fd, buf, nbytes)系统调用和类似方法,而不是内存映射文件旨在支持的内容:仅通过使用指针读取/写入内存来访问文件内容,将文件数据用作字节数组或其他方式。

如果是这样,我是否最好将这种方式写入的文件的工作目录保存在 ufs 分区上?

不,除非使用系统调用写入的内存映射文件总和占 RAM 工作负载的很大一部分,这不太可能发生。

PS:注意这个博客已经快十年了。从那时起,实施可能会发生变化。

于 2016-01-08T08:53:47.493 回答