当写入已满 96% 以上的 HFS+ 分区时,OSX 性能会严重下降。似乎每个写入请求都会触发某种耗时约 10 秒的过程,在此期间,对该分区的所有 I/O 访问都会被阻止。
在此期间,分区并不空闲,正如在将文件复制到完整分区期间 iostat 的此输出所示:
disk2 cpu load average
KB/t tps MB/s us sy id 1m 5m 15m
4.45 29 0.13 19 12 69 2.34 2.00 1.78
4.00 4472 17.47 6 12 82 2.34 2.00 1.78
4.00 4454 17.40 4 12 84 2.31 2.00 1.79
4.00 4394 17.16 6 13 82 2.31 2.00 1.79
4.00 4352 17.00 6 12 82 2.31 2.00 1.79
4.00 4425 17.28 4 12 84 2.31 2.00 1.79
6.00 4089 23.97 6 11 82 2.31 2.00 1.79
4.00 4450 17.38 6 12 83 2.21 1.98 1.78
4.00 4433 17.31 4 11 84 2.21 1.98 1.78
4.00 4464 17.44 6 11 84 2.21 1.98 1.78
4.00 4465 17.44 6 11 83 2.21 1.98 1.78
4.00 4424 17.28 5 12 83 2.21 1.98 1.78
4.00 4482 17.51 6 11 84 2.11 1.97 1.78
4.00 4388 17.14 6 11 83 2.11 1.97 1.78
4.00 4265 16.66 5 12 83 2.11 1.97 1.78
4.00 4573 17.86 10 12 77 2.11 1.97 1.78
5.84 4437 25.30 6 12 82 2.11 1.97 1.78
4.00 4424 17.28 4 12 83 2.02 1.95 1.77
4.00 4647 18.15 10 13 77 2.02 1.95 1.77
4.00 4511 17.62 6 13 81 2.02 1.95 1.77
disk2 cpu load average
KB/t tps MB/s us sy id 1m 5m 15m
4.00 4430 17.30 5 12 83 2.02 1.95 1.77
4.00 4480 17.50 6 11 83 2.02 1.95 1.77
4.00 4466 17.44 6 11 83 2.02 1.95 1.77
4.00 4343 16.97 4 11 84 2.02 1.95 1.77
4.00 4317 16.86 5 12 83 2.02 1.95 1.77
4.00 4471 17.47 6 11 83 2.02 1.95 1.77
5.86 4387 25.10 4 11 85 2.02 1.95 1.77
4.00 4453 17.40 6 12 82 1.94 1.94 1.77
4.00 4465 17.44 6 11 83 1.94 1.94 1.77
4.00 4427 17.29 4 11 84 1.94 1.94 1.77
4.00 4435 17.32 6 12 82 1.94 1.94 1.77
4.00 4468 17.45 6 12 82 1.94 1.94 1.77
4.00 4435 17.33 4 12 84 1.94 1.94 1.77
4.00 4433 17.32 6 12 81 2.02 1.95 1.77
4.00 4320 16.88 6 12 82 2.02 1.95 1.77
4.00 4417 17.25 4 12 84 2.02 1.95 1.77
4.00 4465 17.44 6 12 82 2.02 1.95 1.77
5.85 4410 25.19 6 11 83 2.02 1.95 1.77
4.00 4439 17.34 4 11 84 2.02 1.95 1.77
4.00 4478 17.49 6 11 83 2.02 1.95 1.77
可以看到 10 秒间隔,在此期间驱动器执行 17 MB/s 的 I/O。然后 10 秒后,它将约 8 MB 的文件副本写入磁盘并返回到块中。
我认为我已经看到了 Linux 上的 ext3 的一个选项,当驱动器达到可配置的已满百分比时,分区将从优化性能切换到优化空间。
我想知道 OSX 是否有某种类似的选项,我可以通过该选项优化我的 HFS+ 分区以避免出现此问题。
我知道答案很简单:“所以不要让你的分区变得那么满”。对于我的 750 GB 内置驱动器来说,这是一个很好的解决方案。但我有一个 8 TB 的外部 RAID,最后 300 GB 的空间实际上无法使用。因为这个问题损失几 GB 我可以接受……损失 300 GB 就很痛苦了。
谢谢你!
答案1
这是碎片整理,没有办法绕过它。当 HFS+ 驱动器几乎已满时,它必须不断移动块以保持连续的可用空间。碎片整理工具可用,但我怀疑它们不会有太大帮助。您应该将 90% 的使用率视为 HFS+ 卷上的实际已满。