consente di dire, ho un server a 64-core, e ho bisogno di calcolare md5sum
di tutti i file in /mnt/data
, e memorizzare i risultati in un file di testo:Bash: parallelizzare md5sum checksum su molti file
find /mnt/data -type f -exec md5sum {} \; > md5.txt
Il problema con il comando precedente è che solo un processo viene eseguito in un dato momento. Vorrei sfruttare tutta la potenza dei miei 64 core. Idealmente, vorrei assicurarmi che in qualsiasi momento siano in esecuzione 64 processi paralleli md5
(ma non più di 64).
anche. Avrei bisogno dell'output di tutti i processi da memorizzare in un unico file.
NOTA: non sto cercando un modo per calcolare md5sum
di un file in parallelo. Sto cercando un modo per calcolare 64 md5sum di 64 file diversi in parallelo, a patto che ci siano file provenienti da find
.
io non sono sicuro che questo sarà un bene. Potrei immaginare che la roba diventerà IO legata molto presto e che l'uso di 64 processi porterà a slooow IO pur avendo molti core in riposo. – glglgl
Ma d'altra parte, i file system moderni sono memorizzati molto nella RAM, quindi usare più di uno alla volta ha senso. – Alfe
@Alfe: il kernel dovrà comunque recuperare i dati * in * RAM, quindi il collo di bottiglia rimane. –