我们有一个从多个硬件设备中提取数据的应用程序。每个设备的数据应存储在不同的文件中。
目前我们有一个FileStream by file并在数据到来时进行写操作。
我们有很多数据进入,磁盘正在与硬盘(而不是SSD)挣扎,我猜因为闪存更快,但也因为我们不必一直跳到不同的文件位置。
默认情况下的一些指标:400个不同的数据源(每个都应该有自己的文件),每个数据收到~50KB / s(20MB / s)。每个数据源采集同时运行,总共我们使用了大约6%的CPU。
有没有办法将刷新组织到磁盘上以确保更好的流量?
我们也会考虑改进硬件,但这不是真正的主题,因为它是改善读/写的好方法
答案 0 :(得分:3)
Windows和NTFS将多个并发顺序IO流处理到同一磁盘的效率非常低。可能你正遭受随机IO的困扰。您需要自己以更大的块安排IO。
你可能也会看到极端的碎片化。在这种情况下,NTFS有时会将每个第N个扇区分配给N个文件中的每一个。很难相信NTFS在这种情况下有多糟糕。
每个文件的缓冲区数据,直到你有16MB。然后,将其冲洗掉。不要同时写入多个文件。这样,每个16MB段就有一个磁盘搜索,从而将搜索开销减少到接近零。