输出速率怎么可能高于硬盘写入速率?
更新 1:我更改了以下内容:
关闭了杀毒软件。不用找了。
插入新的物理磁盘并使用第一个分区进行测试。(初始测试的磁盘在最后一个分区上,与系统分区分开,但在同一个物理磁盘上。)。结果:存在相同的循环模式,但系统在测试期间不再无响应。写入速度稍高(可能是由于使用了第一个分区和/或不再干扰系统分区)。初步结论:系统分区存在某种干扰。
安装 64 位 Perl。周期消失了,一切都在 2 秒的时间范围内稳定:单核 CPU 占 55%,写入速度约为 65 MB/s。
使用 64 位 Perl 在原始驱动器上进行了尝试。结果:介于两者之间。周期为 8 秒,CPU 20-50%,35 - 65 MB/秒(而不是 0-100%,0 - 120 MB/秒的深度周期)。系统只是轻微反应迟钝。写入速度为 50 MB/秒。这支持了干涉理论。
在 Perl 脚本中刷新。还没试过。
好的,我通过了第一关。我编写了一个 Perl 脚本,它可以生成一个非常大的文本文件(例如 20 GB),并且基本上只是一些:
print NUMBERS_OUTFILE $line;
其中 $line 是一个以“\n”结尾的长字符串。
当 Perl 脚本启动时,写入速率约为 120 MB/s(与脚本、 Process Explorer和 Performance Monitor 中进程 Perl 的“IO Write Bytes/sec”计算的结果一致)和 100% CPU 在单核上它正在运行。我相信这个速度比硬盘的写入速度要高。
然后在一段时间后(例如 20 秒和 2.7 GB 写入)整个系统变得非常无响应并且 CPU 下降到 0%。这持续例如30秒。这两个阶段的平均写入速度与硬盘的写入速度一致。本段中提到的时间和大小因运行而异。到目前为止,已观察到第一阶段的范围为 1 GB 到 4.3 GB。这是运行 4.3 GB 的成绩单。
测试中生成的 9.2 GB 文本文件有几个这样的周期:
到底是怎么回事?
完整的Perl 脚本和BAT 驱动程序脚本(使用 pre 标签格式化的 HTML)。如果设置了两个环境变量 MBSIZE 和 OUTFILE,那么 Perl 脚本应该能够在 Windows 以外的其他平台上不加改变地运行。
平台:来自 ActiveState 的 Perl 5.10.0;(最初是 32 位,后来是 64 位);build 1004。Windows XP x64 SP2,无页面文件,8 GB RAM,AMD 四核 CPU,500 GB Green Caviar 硬盘(写入速度 85 MB/s?)。