单核CPU:
seq 1000000 |xargs -i dd if=/dev/zero of={}.data bs=1024 count=1 >> /dev/null 2>&1
#生成百万不为空的随机文件
seq 1000000 |xargs -i dd if=/dev/urandom of={}.data bs=1024 count=1 >> /dev/null 2>&1
多核CPU:
seq 1000000 |xargs -i -P 0 dd if=/dev/zero of={}.data bs=1024 count=1 >> /dev/null 2>&1
#生成百万不为空的随机文件
seq 1000000 |xargs -i -P 0 dd if=/dev/urandom of={}.data bs=1024 count=1 >> /dev/null 2>&1
验证:
单核命令是顺序执行,效率慢
time seq 1000 |xargs -i dd if=/dev/zero of={}.data bs=1024 count=1 >> /dev/null 2>&1
real 0m1.025s
user 0m0.236s
sys 0m0.813s
可以看到,生成1000个小文件需要1s。
多核执行效率:
time seq 1000 |xargs -i -P 0 dd if=/dev/zero of={}.data bs=1024 count=1 >> /dev/null 2>&1
real 0m0.369s
user 0m0.530s
sys 0m0.421s
可以看到处理速度快了接近3倍。
上面用-P 0选项指定了尽可能多地开启并发进程数量,如果要保证最高效率,应当设置并发进程数量等于cpu的核心数量
执行命令时查看进度:df -i
查看inode数基本可以判断创建文件的速度。
其他:
文件生成完成需要ls时,会发现文件太多不能ls出来,使用ls -f |head -n 10 即可查看前10行