然而,更大的问题是系统负载在这8-10小时内变得至关重要.无论如何,在删除期间我可以控制系统负载.
我试过用
nice -n19 rm -rf *
但这对系统负载没有帮助.
附:我在superuser.com问了同样的问题,但没有得到足够好的答案,所以在这里尝试.
解决方法
如果我在你的椅子上,我会尝试获得该场景的基线基准:
>确定操作将在与其他所有设备隔离的裸硬件上花费多长时间(是的,它应该花费很多,甚至在相当旧的硬件上需要7-8小时).
>尝试添加通常以受控方式发生的其他操作,并查看实际运行这么长时间的操作
一些数字.
在5岁的笔记本上,
ext3安装rw,noatime,跑顶,没什么
使用shell脚本create10kdirs.sh创建10k目录
#!/bin/bash for i in $(seq 10000) do mkdir $i done
sudo时间./create10kdirs.sh
24.59user
20.70system
0:47.04elapsed
96%cpu(0avgtext 0avgdata 0maxresident)k80inputs 8outputs(1major 2735150minor)pagefaults 0swaps
删除10k目录
sudo time rm -rf
0.10user
19.75system
0:20.71elapsed
95%cpu(0avgtext 0avgdata 0maxresident)k0inputs 8outputs(0major 222minor)pagefaults 0swaps
相同的硬件,ext4安装rw,noatime
用shell脚本创建10k目录
sudo时间create10kdirs.sh
23.96user
22.31system
0:49.26elapsed
93%cpu(0avgtext 0avgdata0maxresident)k1896inputs 8outputs(20major 2715174minor)pagefaults 0swaps
删除10k目录
sudo time rm -rf
0.13user
16.96system
0:28.21elapsed
60%cpu(0avgtext 0avgdata0maxresident)k10160inputs 0outputs(1major 219minor)pagefaults0swaps
4岁的笔记本电脑,xfs安装了rw,relatime,nobarrier在USB上
sudo时间create10kdirs.sh
14.19user
13.86system
0:29.75elapsed
94%cpu(0avgtext 0avgdata0maxresident)k432inputs 0outputs(1major 2735243minor)pagefaults 0swaps
删除10k目录
sudo time rm -rf
0.13user
2.65system
0:08.20elapsed
33%cpu(0avgtext 0avgdata 0maxresident)k120inputs 0outputs(1major 222minor)pagefaults 0swaps
结论:
这个旧硬件将在大约21s * 40 = 12m40s内擦除ext3上的400k小文件夹.在xfs(与nobarriers)上,它将在大约5分20秒内完成.
在两个测试用例中,测试机器都没有负载很重,但对我来说,似乎你的问题与你选择的文件系统没有严格的关系.
EDIT2
此外,在运行上面的基准测试后,我去尝试删除
找 . -mindepth 1 -maxdepth 1 -delete
和结果!:
EXT3
删除10k目录
sudo时间找到. -mindepth 1 -maxdepth 1 -delete
0.04user
0.44system
0:00.88elapsed
55%cpu(0avgtext 0avgdata 0maxresident)k516inputs 8outputs(1major 688minor)pagefaults0swaps
EXT4
删除10k目录
sudo时间找到. -mindepth 1 -maxdepth 1 -delete
0.05user
0.66system
0:01.02elapsed
70%cpu(0avgtext 0avgdata 0maxresident)k568inputs 0outputs(1major 689minor)pagefaults swaps
XFS
删除10k目录
sudo时间找到. -mindepth 1 -maxdepth 1 -delete
0.06user
0.84system
0:04.55elapsed
19%cpu(0avgtext 0avgdata 0maxresident)k416inputs 0outputs(3major 685minor)pagefaults 0swaps
真正的结论是rm -rf不是很聪明,而且它对大树的表现不佳. (假设我的测试用例真的很有代表性).
注意:我也测试了xargs变体并且速度很快,但速度不如上面那么快.