Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在磁盘上读/写文件时,如何限制硬盘I/O?_Windows_Io_Rust_Hard Drive - Fatal编程技术网

Windows 在磁盘上读/写文件时,如何限制硬盘I/O?

Windows 在磁盘上读/写文件时,如何限制硬盘I/O?,windows,io,rust,hard-drive,Windows,Io,Rust,Hard Drive,我有一些Rust程序,可以从一个文件中读取数据,执行一些操作,并在另一个文件中写入数据。 很简单,但我遇到了一个大问题,我的程序饱和了HDD max I/O,只能在没有其他进程使用时执行 更准确地说,我目前正在使用缓冲区大小为64 KB的BufReader和BufWriter,这本身就非常适合尽快读/写文件。但以250MB/s的速度读取数据,同时以250MB/s的速度写入数据,往往会超出硬盘的容量。我只想说,我完全支持速度之类的东西,但我意识到那些生锈的程序要求从硬盘驱动器获得太多的资源,并且似

我有一些Rust程序,可以从一个文件中读取数据,执行一些操作,并在另一个文件中写入数据。 很简单,但我遇到了一个大问题,我的程序饱和了HDD max I/O,只能在没有其他进程使用时执行

更准确地说,我目前正在使用缓冲区大小为64 KB的BufReader和BufWriter,这本身就非常适合尽快读/写文件。但以250MB/s的速度读取数据,同时以250MB/s的速度写入数据,往往会超出硬盘的容量。我只想说,我完全支持速度之类的东西,但我意识到那些生锈的程序要求从硬盘驱动器获得太多的资源,并且似乎被操作系统(Windows)暂停,以便让其他进程和平地工作。我正在读/写的文件通常只有几GB

现在我知道我可以在磁盘上的每个读/写操作之间添加某种形式的wait(),但是,我不知道如何找出我当前读/写的速度,并寻找一个更优化的解决方案。此外,即使在阅读了这些文档之后,我仍然无法在BufReader/BufWriter上找到一个选项,可以将HDD I/O操作限制为任意值(例如100MB/s)

我查看了sysinfo机箱,但它似乎无助于找出硬盘的当前和最大I/O


我是不是运气不好,我是否应该深入研究系统编程以找到解决方案?或者已经有什么东西可以教我如何对我对硬盘的调用进行优先级排序,或者简单地将我的调用限制在根据当前可用的硬盘I/O速率计算出的某个任意值?

在阅读了更多有关该主题的内容后,除了尝试读取/写入大量数据并根据其性能进行计算之外,在程序执行期间,您似乎无法找到HDD最大I/O速率,只能猜测HDD I/O速率不能再高的常数。(见附件)

但是,您仍然可以监视磁盘活动,根据前面猜测的数字,您可以使用
wait()
比始终以恒定速度限制自己更准确。(这是一个装铁锈的板条箱:)


使用操作系统对流程进行优先级排序可能有些过分,因为我试图在其他流程之间切换,并共享当时可用的任何资源。

在阅读了更多关于该主题的内容后,除了尝试读取/写入大量数据并根据其性能进行计算之外,在程序执行期间,您似乎无法找到HDD最大I/O速率,只能猜测HDD I/O速率不能再高的常数。(见附件)

但是,您仍然可以监视磁盘活动,根据前面猜测的数字,您可以使用
wait()
比始终以恒定速度限制自己更准确。(这是一个装铁锈的板条箱:)


使用操作系统对流程进行优先级排序可能有些过分,因为我试图在其他流程之间切换,并共享当时可用的任何资源。

在这里可能很有用:非常有趣,如果我理解正确,这很像是通过调用具有正确参数的API设置的配置(对于那些好奇的人,这里有一个铁锈链接:)。通过这种方式对我对硬盘的I/O调用进行优先级排序似乎是可行的,但我仍然不知道如何选择一个特定的速度,在这个速度下,我可以从磁盘读/写,而不必太麻烦同时运行的其他进程。这可能是有用的:非常有趣,如果我理解正确的话,这很像一个confi通过调用具有正确参数的API来设置的配置(这里有一个链接供那些想知道的人使用:)。通过这种方式对我对硬盘的I/O调用进行优先级排序似乎是可行的,但我仍然不知道如何选择一个特定的速度,以便在不干扰同时运行的其他进程的情况下从磁盘读取/写入数据。