【发布时间】:2023-04-09 04:11:01
【问题描述】:
输出速率怎么可能高于硬盘写入速率?
更新 1:我已更改以下内容:
已关闭防病毒软件。没有变化。
插入了新的物理磁盘并使用了第一个分区 为测试。 (初始测试的磁盘在 最后一个分区,与系统分区分开,但是 在同一个物理磁盘上。)。结果:有相同的 循环模式,但系统不再 测试期间无反应。写入速度为 稍高(可能是由于使用了第一个 分区和/或不再干扰系统 划分)。初步结论:有某种 系统分区的干扰。
已安装 64 位 Perl。周期消失了 一切都在 2 秒的时间范围内稳定:55% CPU 开启 单核,写入速度约 65 MB/s。
在原始驱动器上尝试使用 64 位 Perl。结果: 在。。。之间的某处。周期为 8 秒,CPU 20-50%, 35 - 65 MB/秒(而不是 0-100% 的深度循环,0 - 120 MB/秒)。系统只是轻微反应迟钝。 写入速度为 50 MB/秒。这支持了干涉理论。
在 Perl 脚本中刷新。还没试过。
好的,我通过了first hurdle。我写了一个 Perl 可以生成非常大的文本文件(例如 20 GB)的脚本和 本质上只是一些:
print NUMBERS_OUTFILE $line;
其中 $line 是一个以“\n”结尾的长字符串。
当 Perl 脚本启动时,写入速率约为 120 MB/s (与脚本计算的内容一致, Process Explorer 和进程 Perl 的“IO 写入字节/秒” 在性能监视器中。)和单核上的 100% CPU 正在运行。我相信这个比率比写的要高 硬盘的速度。
然后在一段时间后(例如 20 秒和 2.7 GB 写入) 整个系统变得非常无响应,CPU 下降到 0%。这最后例如30秒。平均写入速度 这两个阶段的写入速度是一致的 硬盘。本文中提到的时间和大小 段落因运行而异。范围 1 GB 到目前为止,已经观察到第一阶段达到 4.3 GB。 这是transcript for the run with 4.3 GB。
一个 9.2 GB 的文本文件有几个这样的周期 测试中生成:
发生了什么事?
完整的Perl script 和BAT driver script(HTML 格式为 前标签)。如果两个环境变量 MBSIZE 和 OUTFILE 已设置,然后 Perl 脚本应该能够运行 在 Windows 以外的其他平台上保持不变。
平台:来自 ActiveState 的 Perl 5.10.0; (最初是 32 位,后来是 64 位);建造 1004。 Windows XP x64 SP2,无页面文件,8 GB RAM,AMD 四核 CPU, 500 GB Green Caviar 硬盘(写入速度 85 MB/s?)。
【问题讨论】:
标签: performance perl hard-drive