1

Эта функция влияет на производительность файлов с отображением памяти?Does SetFileBandwidthReservation влияет на производительность файлов с отображением памяти?

Вот проблема, мне нужно решить:

У меня есть два приложения, конкурирующих за доступ к диску: «читателя» и «Updater». Вся система работает на Windows Server 2008 R2 x64

«Updater» постоянно обращается к диску в линейном режиме, обновляя данные. Их система настроена таким образом, что у updater всегда есть бесконечные данные для обновления. Подумайте, что он постоянно аппроксимирует решение огромного набора уравнений, занимающего весь 2TB-диск. Updater использует ReadFile и WriteFile для обработки данных линейным способом.

«Читатель» иногда вызывается пользователем, чтобы получить некоторые данные. Обычно пользователь считывает несколько блоков 4kb с диска и останавливается. Иногда пользователю необходимо читать до 100 мб последовательно. В исключительных случаях до нескольких гигабайт. Reader отображает файлы в память, чтобы получить нужные ему данные.

То, что я хотел бы достичь, заключается в том, чтобы «читатель» имел абсолютный приоритет, так что «updater» полностью остановился, если понадобится, чтобы «читатель» мог получить потребности пользователей данных как можно скорее.

Эта проблема разрешима с помощью вызовов SetPriorityClass и SetFileBandwidthReservation?

Мне очень жаль было бы вводить синхронизацию в «читатель» и «обновление», и, скорее, ОС позаботится о приоритетах.

ответ

0

Функции, о которых вы упомянули, не имеют ничего общего с вашей задачей, ИМО.

Кажется, что на самом деле требуется одновременный доступ к файлам из нескольких процессов - и ОС просто сделает то, о чем вы просили. Таким образом, вам нужно будет сделать то, что вы ~ ненавидите, добавить логику синхронизации, чтобы обеспечить правильность.

Согласно вашему описанию - открытие файла для эксклюзивного доступа как от читателя, так и от ресивера решает задачу обеспечения непрерывности чтения программой обновления. Вторая цель - сделать программу обновления прерываемой по просьбе читателя.

Способ справиться с этим зависит от того, можно ли остановить обновление в середине своей работы. В простом случае читатель может уведомить обновителя о том, что он должен прекратить свою работу как можно скорее и ждать.

Смежные вопросы