SetFileBandwidthReservation是否会影响内存映射文件的性能?

时间:2010-06-11 07:36:30

标签: windows performance windows-server-2008 memory-mapped-files

此功能是否会影响内存映射文件的性能?

这是我需要解决的问题:

我有两个竞争磁盘访问的应用程序:“reader”和“updater”。整个系统在Windows Server 2008 R2 x64上运行

“Updater”以线性方式不断访问磁盘,更新数据。它们的系统设置方式使更新程序始终具有无限数据以进行更新。考虑到它总是逼近占用整个2TB磁盘驱动器的大量方程组的解决方案。 Updater使用ReadFile和WriteFile以线性方式处理数据。

用户偶尔会调用“Reader”来获取一些数据。通常用户会从驱动器中读取几个4kb的块并停止。有时,用户需要按顺序读取最多100mb。在特殊情况下高达几千兆字节。 Reader将文件映射到内存以获取所需的数据。

我想要实现的是“读者”具有绝对优先权,以便“updater”在需要时完全停止,以便“读者”可以尽快获得用户需要的数据。

使用SetPriorityClass和SetFileBandwidthReservation调用是否可以解决此问题?

我真的很讨厌将同步登录放在“阅读器”和“更新程序”中,而是让操作系统处理优先级。

1 个答案:

答案 0 :(得分:0)

你提到的功能与你的任务没关系,IMO。

似乎实际上要求从多个进程同时访问文件 - 操作系统只会按照您的要求执行操作。因此,你必须做你讨厌的事情〜添加一些同步逻辑以确保正确性。

根据您的描述 - 打开文件以供读取器和更新程序独占访问,解决了使读取器不被更新程序中断的任务。第二个目标是根据读者的要求使更新程序可以中断。

处理它的方法取决于更新程序是否可以在其工作中停止。在简单的情况下,读者可以通知更新者它必须尽快停止工作并等待。