有没有办法强制WindowscachingRAM中的文件

我有一个Windows Server 2008 R2文件服务器,它有一些大的文件,在极less数情况下是非常重要的,尽快复制到另一个系统。

有没有办法强制这些文件总是被caching到内存?

大多数情况下,瓶颈并不是从磁盘到RAM而是从RAM到networking。 除非系统在活动或内存不足方面陷入困境,否则Windows应该相当聪明地处理文件caching。

你可能想要做一些testing,看看你的系统是否真的存在一个瓶颈,当Windows认为它应该被保存到磁盘时,通过将某些文件保存在内存中而不是交换到磁盘,可以看到显着的改进。 我敢打赌,你将节省很less的时间,因为瓶颈最有可能是networking,当文件排队到networking的时候,驱动器已经填满了内存中的缓冲区,因为它将文件从驾驶。

也就是说,我知道将数据文件保存在内存中的唯一真正可靠的方法是创build一个RAM磁盘并将其中的文件复制,假设它们是静态的。 否则,你有停电,他们走了。

否则,你可能想投资大量的RAM和高速磁盘驱动器。 甚至可能是镜像RAIDconfiguration,因为它具有较高的读取(较慢的写入)性能。 我会让Windows和内存pipe理器做这件事情,并且专注于通过更好的子系统(快速磁盘,RAID,大量内存,高速和高质量的NIC)来最小化访问时间,而不是调整到debugging或故障排除可能会成为更多的痛苦之路。

您可以尝试超级caching或其他备用caching解决scheme,或者您可能需要考虑使用具有高速读取访问权限的SSD – 这几乎可以使任何networking连接饱和。

我不认为唯一的其他select符合您的需求,但我会提到它:

如果您正在应用程序中写入文件,则可以尝试使用以下方法创build:

FILE_ATTRIBUTE_TEMPORARY和FILE_FLAG_DELETE_ON_CLOSE

这告诉Windows试图保留在RAM而不是在磁盘上的文件 – 我不认为这将符合您的需求,但你可以阅读更多在http://msdn.microsoft.com/en-us/library/aa363858% 28VS.85%29.aspx#caching_behavior

Steve Radich – http://www.BitShop.com/blogs.aspx

没有标准的方法来做到这一点。 Windows缺乏这样的钩子。 如果这对你来说真的很重要,你可以尝试通过频繁访问networking上的文件来游戏Windows文件cachingalgorithm。 这应该保持文件caching,但没有保证。 IIRC,你不需要读整个文件来获得整个文件的caching,所以读文件的一个子集就足够了。

您可以使用内存映射文件预映射文件来加快速度https://www.microsoft.com/store/apps/9N9TWRVC493H

是的,有一种方法可以欺骗OS内存pipe理器,并将整个文件/文件夹加载到OS系统caching中。 看看这里的post: http : //www.arcgis.com/home/item.html?id=08a5a05ff82446bb8a8befad03b1bb86