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

ken*_*ent 1 macos iokit

我希望优化我的磁盘IO,并期待尝试找出磁盘缓存大小是什么.system_profiler没有告诉我,我还能在哪里看到?

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

Lou*_*arg 7

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

因此,磁盘高速缓存可能非常小或大到千兆字节,并且随着系统的使用而动态地改变.因为这试图确定缓存大小并根据它进行优化是一场失败的斗争.最好的做法是通知缓存如何更好地运行,比如检查底层设备的最佳IO大小,或者识别不应缓存的数据并使用F_NOCACHE.