我正在写大量数据,这些数据将在几周内不会再被读取。当我的程序运行时,机器上的可用内存量(显示为“free”或“top”)迅速下降,但我的应用程序使用的内存量并没有增加,其他进程使用的内存量也没有增加。
这导致我相信内存被文件系统缓存所消耗 - 由于我不打算长时间读取这些数据,我希望绕过系统缓冲区,使我的数据直接写入磁盘。我并没有改进性能或成为超级忍者的梦想,我的希望是给文件系统一个提示,告诉它我不会很快回来获取这些内存,因此不要花费时间为这些情况进行优化。
在Windows上,我面临着类似的问题,并通过 FILE_FLAG_NO_BUFFERING|FILE_FLAG_WRITE_THROUGH 解决了这个问题 - 机器的内存没有被我的应用程序占用,并且机器在一般情况下更易用。我希望能够复制我看到的改进,但在Linux上。在Windows上,有按扇区大小写入的限制,对于我测量到的收益,我对此限制感到满意。
在Linux中是否有类似的方法?