Đối với những người nghĩ rằng đó không phải là một ý tưởng tuyệt vời, tôi sẽ nói nó phụ thuộc. Bạn có thể có một hệ thống đột kích lớn hoặc một hệ thống tệp song song sẽ mang lại hiệu suất thực sự tốt hơn so với quy trình một cp có thể xử lý. Sau đó, có, bạn cần sử dụng một "công cụ song song".
Hãy lấy ví dụ này:
timeout 10 strace -e write -c cp /dev/zero /dev/null
strace: Process 24187 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.655188 4 166222 write
------ ----------- ----------- --------- --------- ----------------
100.00 0.655188 166222 total
thì đây
timeout 0.01 strace -e write cp /dev/zero /dev/null
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 65536) = 65536
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 65536) = 65536
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 65536) = 65536
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 65536) = 65536
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 65536) = 65536
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 65536) = 65536
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 65536) = 65536
strace: Process 24567 detached
do đó, mỗi lần viết của tòa nhà được tạo bởi "cp" trong trường hợp này là 64KiB và trong 10 giây trên hệ thống của tôi, tôi có thể cung cấp băng thông này: 65536 * 166222/10 = 1089352499 = ~ 1.08GB / s
Bây giờ, hãy khởi chạy khối lượng công việc này với 2 quy trình (Tôi có 4 lõi nhưng máy tính để bàn của tôi được sử dụng cho các công cụ khác và đây chỉ là một ví dụ):
timeout 10 strace -e write -c cp /dev/zero /dev/null & timeout 10 strace -e write -c cp /dev/zero /dev/null & wait
[1] 26106
[2] 26107
strace: Process 26113 detached
strace: Process 26112 detached
% time seconds usecs/call calls errors syscall
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
------ ----------- ----------- --------- --------- ----------------
100.00 0.624108 4 162616 write
100.00 0.638468 4 162451 write
------ ----------- ----------- --------- --------- ----------------
100.00 0.624108 162616 total
100.00 0.638468 162451 total
------ ----------- ----------- --------- --------- ----------------
[1]- Exit 124 timeout 10 strace -e write -c cp /dev/zero /dev/null
Vì vậy, chúng tôi thấy chúng tôi có thể tăng gần gấp đôi hiệu suất bằng cách sử dụng 2 lõi để khởi chạy.
Vì vậy, nếu chúng ta ở trong một bối cảnh khác với ổ 1xHard sang ổ 1xHard nhưng là một mảng đột kích (hoặc nhiều NVMe thì không phải là trường hợp phổ biến nhất mà tôi đồng ý nhưng tôi làm việc này mỗi ngày), nó chắc chắn cho thấy hiệu suất tốt hơn để sử dụng nhiều phổ biến trong song song, tương đông.