是否值得同步IO密集的线程,以提高总磁盘性能?

是否值得同步IO密集的线程,以提高总磁盘性能?,第1张

概述是否值得同步I / O密集的线程,以提高总磁盘性能?

我们的windows .NET应用程序有几个I / O密集的线程不断写入磁盘(旋转媒体)。 来自一个线程的写入 *** 作在不知道其他线程的写入 *** 作的情况下完成,因此这意味着写入请求按照与正在执行的调用相同的顺序到达windows I / Opipe理器。

在我们的项目中有一个讨论,如果这是正确的做法,或者我们可以通过同步写入 *** 作来获得一些性能,以便只有一个(或几个)线程执行对磁盘的写入 *** 作在同一时间(也许通过共享锁)。 理论上说,这样可以减轻cpu的压力,并且可以提高吞吐量(请注意,我们已经在所有 *** 作中使用了asynchronousI / O)。

我对这个想法有些怀疑,因为我认为我们将会完成 *** 作系统最初devise要解决的一部分工作。 现在已经进行了一些实验,并指出根本没有任何好处。 我的印象是,只要缓冲区大小足够,决定何时将块写入磁盘最好留给 *** 作系统来决定。

那么有人可以请我们吗? 为了获得性能,同步multithreading进程中的磁盘访问是一个好主意吗? 例如windows或linux在这方面有什么区别?

将数据从string传输到数据视图

从Perl调用.NET

为什么通过WMI只应用一次静态IP地址?

由于对象的当前状态, *** 作无效

DataGrIDVIEw不填充

防止对象被分页(VirtualLock相当于)

获取.net应用程序的活动窗口

.NET – 从代码中设置电源选项

问题与windows服务以编程方式重新启动自己

如何将文本文件的行添加到ListBox(C#)上的单个项目

理论是这样可以减轻cpu的压力

怎么可能? 这是相同数量的写入,但现在增加了同步。 它会创建(一点)更多的cpu负载。

那么我们将会完成 *** 作系统最初设计要解决的一部分工作。

可悲的是,windows不能执行任何类型的智能IO调度。 我不确定什么是磁盘驱动程序。 有了NCQ和SATA,对 *** 作进行一定程度的重新排序。 但是我从来没有注意到windows在IO方面做了一些聪明的事情(除了预取工作正常)。

主要的问题是你想要执行顺序还是随机IO。

顺序:多个顺序流导致windows将数据流分成64KB或256KB的块,使得它们具有高度的随机性。 这真是太糟糕了。 在这种情况下,您可以通过智能地发出大IO来获得数量级的性能。

随机:一次发出多个IO,以便磁盘硬件可以对它们重新排序。 例如sql server有时会发出数千个(在此期间完全阻止其他进程 – 请注意,windows实际上没有IO公平的概念)。

我不太了解linux,但至少有一些IO调度。 windows团队似乎不想解决这个问题。

总结

以上是内存溢出为你收集整理的是否值得同步I / O密集的线程,以提高总磁盘性能?全部内容,希望文章能够帮你解决是否值得同步I / O密集的线程,以提高总磁盘性能?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1292477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存