C ++ реализует удушенную копию файла - PullRequest
0 голосов
/ 06 января 2019

Мне нужно реализовать ограниченную копию в моем проекте, пожалуйста, учитывая, что сценарий похож на то, что веб-сервису нужно читать хранилище для каждого запроса. Тем временем данные магазина могут быть обновлены. Данные размещаются на SSD, а новые данные загружаются на другой диск. Во время работы системы, если новые данные доступны, мне нужно скопировать новые данные на диск SSD, это нужно ограничить копирование, чтобы минимизировать влияние чтения SSD.

максимальная скорость записи (SSD) без ограничения может составлять 100-150 МБ / с.

В моей реализации:

TotalCopyTime = FileSize / CopySpeed(from config)
TotalCopyLoops = FileSize / WriteUnitSize
Get each write time T in runtime.
SleepTimeBetweenEachWrite = [TotalCopyTime - (T * TotalCopyLoops)] / n

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

Проблема в том, что если скорость копирования составляет 16 МБ / с, реальное время записи больше, чем SleepTimeBetweenEachWrite. Таким образом, даже скорость копирования составляет 16 МБ / с, но это все равно оказывает большое влияние на чтение.

Кроме того, я использую какой-то инструмент для копирования с настройкой скорости, копирование со скоростью 16 МБ / с, не влияет на чтение.

Мне интересно, как инструмент реализует дросселированную копию? (такие инструменты, как UltraCopier)

...