Für die Leute, die denken, dass das keine großartige Idee ist, würde ich sagen, dass es davon abhängt. Sie können ein großes RAID-System oder ein paralleles Dateisystem haben, das eine wirklich bessere Leistung liefert, als ein CP-Prozess verarbeiten kann. Dann müssen Sie ja ein "paralleles Werkzeug" verwenden.
Nehmen wir dieses Beispiel:
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
dann das
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
Daher ist jeder von "cp" in diesem Fall erstellte Syscall-Schreibvorgang 64 KB und für 10 Sekunden auf meinem System kann ich diese Bandbreite bereitstellen: 65536 * 166222/10 = 1089352499 = ~ 1,08 GB / s
Lassen Sie uns nun diese Workload mit 2 Prozessen starten (ich habe 4 Kerne, aber mein Desktop wird für andere Dinge verwendet, und hier ist es nur ein Beispiel):
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
Wir sehen also, dass wir die Leistung mit 2 Kernen nahezu verdoppeln können, um dies zu starten.
Wenn wir uns also in einem anderen Kontext als 1xHard-Laufwerk von 1xHard-Laufwerk befinden, aber ein RAID-Array (oder mehrere NVMe, also nicht der häufigste Fall, dem ich zustimme, aber ich arbeite jeden Tag daran), zeigt es definitiv eine bessere Leistung, mehrere Common-In-Laufwerke zu verwenden parallel.