Ho uno script Bash che elabora i file letti da input standard, un percorso per riga e esegue un'attività intensiva della CPU su ciascun file. Mi è capitato di notare che anche con quattro core ( grep -c ^processor /proc/cpuinfo
) veniva utilizzato solo circa il 25% del processore e che la velocità IO del disco era molto inferiore alla sua capacità. Pertanto, è possibile migliorare facilmente le prestazioni suddividendo l'input in quattro parti e assegnando ciascuna a uno script separato.
L'approccio più semplice che riesco a pensare è quello di dividere l'input in tante parti quante il numero di core (ovviamente, non voglio che l'utente si preoccupi del numero di core) usando alcune variazioni del split
comando e apporta modifiche allo script in modo che possa chiamarsi passando una parte dell'input.
Quali sono alcune idee a riguardo?