osx:如何找到磁盘i / o缓存的大小(例如,写缓存)

时间:2009-08-28 12:50:42

标签: macos iokit

我希望优化我的磁盘IO,并且正在寻找尝试找出磁盘缓存大小的内容。 system_profiler没有告诉我,我还能在哪里看到它?

编辑:我的程序正在处理整个卷:我正在进行安全擦除,所以我遍历卷上的所有块,读取,随机化数据,写入...如果我读/写4k块对于每个IO操作,整个作业明显快于每个操作的r / wa单个块。所以我的问题源于我的搜索,以找到理想的r / w操作大小(理想的性能:速度)。请不要指出,对于擦除程序,我不需要读取操作,只是假设我这样做。 THX。

1 个答案:

答案 0 :(得分:7)

Mac OS X使用统一缓冲区缓存。这意味着在内核VM对象和文件中它们在某种程度上是相同的,并且用于缓存的可用内存的大小完全取决于系统其余部分中的VM压力。这也意味着读写缓存是统一的,如果读缓存中的项被写入它只是被标记为脏,然后将在提交更改时写入磁盘。

因此磁盘缓存可能非常小或大到千兆字节,并且在使用系统时会动态更改。因为这试图确定缓存大小并根据它进行优化是一场失败的斗争。你可以更好地处理通知缓存如何更好地运行的事情,例如检查底层设备的最佳IO大小,或者识别不应缓存的数据并使用F_NOCACHE。