并行化

并行化
dd if=/dev/zero of=/dev/null bs=2048k count=100000
dd if=/dev/zero of=/dev/null bs=2048k count=100000
dd if=/dev/zero of=/dev/null bs=2048k count=100000
dd if=/dev/zero of=/dev/null bs=2048k count=100000
dd if=/dev/zero of=/dev/null bs=2048k count=100000
dd if=/dev/zero of=/dev/null bs=2048k count=100000

209715200000 bytes (210 GB) copied, 4.2765 seconds, 49.0 GB/s
209715200000 bytes (210 GB) copied, 4.30042 seconds, 48.8 GB/s
209715200000 bytes (210 GB) copied, 4.31607 seconds, 48.6 GB/s
209715200000 bytes (210 GB) copied, 4.29339 seconds, 48.8 GB/s
209715200000 bytes (210 GB) copied, 4.29755 seconds, 48.8 GB/s
209715200000 bytes (210 GB) copied, 4.29938 seconds, 48.8 GB/s

real    0m25.791s
user    0m0.153s
sys     0m25.625s

为什么这些要按顺序执行?

在后台运行它们之后

209715200000 bytes (210 GB) copied, 75.8795 seconds, 2.8 GB/s
209715200000 bytes (210 GB) copied, 75.946 seconds, 2.8 GB/s
209715200000 bytes (210 GB) copied, 76.5718 seconds, 2.7 GB/s
209715200000 bytes (210 GB) copied, 81.5599 seconds, 2.6 GB/s
209715200000 bytes (210 GB) copied, 83.3975 seconds, 2.5 GB/s
209715200000 bytes (210 GB) copied, 83.4965 seconds, 2.5 GB/s

有趣。谢谢你的帮助。

答案1

因为您在前台运行它们 - 需要在每个 dd 行的末尾放置一个 & 以将它们置于后台,例如

dd if=/dev/zero of=/dev/null bs=2048k count=100000 & 
dd if=/dev/zero of=/dev/null bs=2048k count=100000 & 
dd if=/dev/zero of=/dev/null bs=2048k count=100000 & 
dd if=/dev/zero of=/dev/null bs=2048k count=100000 & 
dd if=/dev/zero of=/dev/null bs=2048k count=100000 & 
dd if=/dev/zero of=/dev/null bs=2048k count=100000 & 

亚历克斯

答案2

shell 按照给定的顺序一个接一个地运行命令。如果您在后台启动程序(&在管道末尾添加)或将其放在后台(例如,^Z然后bg),则进程将并行运行。

此外,如果您运行命令管道(即cmd1 | cmd2 | cmd3),这些命令也会并行运行,只有在等待前一个命令的数据时它们才会停止。

相关内容