I have a program ./pgm
taking some arguments (say -a file1 -b val
), which requires 2 seconds to execute. I would like to use all the processors on my machine to run this program on all the input files in parallel (about 1000). What I do now, is put all the commands
./pgm -a file1 -b 12 > out1.txt &
./pgm -a file2 -b 14 > out2.txt &
./pgm -a file3 -b 16 > out3.txt &
./pgm -a file4 -b 18 > out4.txt &
...
in a file, and execute this file. I thought this would use all the available processors, but the number of parallel execution is very limited.
How can I achieve this? Note that parallel
command is not an option.
vmstat 1 1
in a second terminal whilst other is running for a few secconds would give you a rough idea.