2016-05-20 3 views
0

Я пытаюсь одновременно копировать и записывать большие объемы данных на серверную системе с помощью Windows Server 2012.нагрузки передача зависимого файл

Сочинения происходит из нескольких приложений с высокими данными расценками, приближающихся приблизительно 30% пределов ввода-вывода локальной системы.

Передача происходит между локальным хранилищем и сетевым хранилищем со скоростью передачи до нескольких Гбит.

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

Были предприняты попытки применить базовые инструменты на базе Windows (x/copy, robocopy). x/copy не подходит, поскольку он не обеспечивает возможности дросселирования. Robocopy доказал, что он вызвал проблемы с памятью с помощью метода дросселирования или при отсутствии дросселирования, превысив доступные пределы сети/памяти.

Теперь вот забавная часть: с помощью стандартного окна просмотра проводника графического интерфейса пользователя не обнаружено ни одной из этих проблем. Фактически, он копирует невероятно быстро, показывая no заметное влияние на производительность системы.

Следующим шагом будет создание пользовательского процесса копирования с использованием основного win api для имитации желаемого поведения процесса копирования экземпляра.

В: Какая основная команда копирования api является копией проводника, используя ... copyFile2? ... полностью недоступная внутренняя команда копирования? Должны ли я рассматривать другие варианты?

+1

Интерфейс 'IFileOperation' позволяет вам использовать функцию копирования, которую использует Explorer. –

+0

Спасибо, я посмотрю. –

+0

@JonathanPotter Я реализовал и развернул инструмент, используя интерфейс IFileOperation. Не стесняйтесь публиковать ответ, и я соглашусь с ним. –

ответ

1

Интерфейс IFileOperation позволяет получить доступ к функции копирования, которую использует Explorer.

В документации для IFileOperation::CopyItem приведен полный пример того, как его использовать.

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