我需要在我的项目中实现限制复制,请考虑这种情况,就像Web服务需要为每个请求读取存储。同时,可以刷新商店数据。 数据托管在SSD中,新数据下载到另一个磁盘。 在系统运行期间,如果有新数据可用,我需要将新数据复制到SSD磁盘上,这需要限制复制,以最大程度地减少对SSD读取的影响。
最大写入速度(SSD)不受限制,可以为100-150MB / s。
在我的实现中:
TotalCopyTime = FileSize / CopySpeed(from config)
TotalCopyLoops = FileSize / WriteUnitSize
Get each write time T in runtime.
SleepTimeBetweenEachWrite = [TotalCopyTime - (T * TotalCopyLoops)] / n
基于上述内容,代码将继续从源读取数据,并写入目标,并在每次写入之间插入Sleep。
问题是:如果复制速度为16MB / s,则实际写入时间大于SleepTimeBetweenEachWrite。因此,即使复制速度为16MB / s,对读取操作仍然有很大影响。
此外,我使用了一些具有快速配置的复制工具,复制速度为16MB / s,对读取操作没有影响。
我想知道该工具如何实现限制复制? (UltraCopier之类的工具)