我有一个应用程序,它以单个文件的形式生成数据流。生成的数据量是可变的,但平均而言不会使我的网络或 NAS 速度饱和。但是,可能会出现几秒钟的峰值,完全超出可能的范围。
我无法控制应用程序的行为,如果传输跟不上,应用程序的行为只会丢弃数据。如果我将数据流生成到本地 SSD 或 HDD(比我的 NAS 慢得多),一切都会正常。我猜后者是由于 Windows 在 RAM 中内部缓存写入操作的行为造成的。有没有办法在我的 NAS 上也启用写入操作?或者还有其他解决方案可以解决这个问题?
此外,整个数据流无法存放在我的 SSD 甚至 HDD 上,因此,仅将其转储在那里并稍后复制或同步/异步对我来说不是一个选择。理想情况下,如果可以的话,我只希望文件的未同步部分驻留在本地计算机上的某个位置。
我在本地机器上使用 Windows 10 Pro。NAS 是 DS220+,通过 SMB 安装。
答案1
Windows 使用缓存内存来执行所有文件写入操作,这也适用于驻留在网络共享上的文件。缓存内存非常重要 - 如果其容量不足以容纳这几秒钟的高峰活动期间生成的数据,则最佳解决方案是增加计算机中的 RAM 容量,直到其可以容纳所有数据,并在活动平静下来时将其写入。
您还可以增加页面文件的大小,这样 RAM 就可以交换更多。确保页面文件位于 SSD 上,而不是 HDD 上。
您可以尝试提高网络速度,以帮助 Windows 更快地将 RAM 清空到 NAS,从而推迟 RAM 填满的时间。
以下操作可能会有帮助(也可能没有帮助)。您需要尝试一下才能知道。一个好的测试可能是测量将大型文件复制到 NAS(大于 RAM)的速度。
如果 NAS 支持,请购买更快的网络适配器
在 Windows 和 NAS 中配置网络适配器 巨型帧、接收缓冲区和中断调节率。
在 Windows 上,这可以在设备管理中完成,右键单击网络适配器,属性,高级选项卡。可用的设置取决于适配器和驱动程序。接收缓冲区在 NAS 端可能更重要,这可以通过或
完成,具体取决于适配器。modprobe
ethtool
关闭 Windows 防火墙并禁用防病毒软件。
使用 NFS 可获得更好的性能。请参阅文章
网络共享:NFS 与 SMB 之间的性能差异。
您可以在文章中找到更多详细信息: