Swap, I/O?
What does 1 of the threads look like? My first instinct is that the system is waiting for some resource to become available, perhaps disks? swap?
Built-in delay?
The other thought is that gpg
may have some delays built in for no other reason than to add to the expense of creating keys, and so the delays are causing your lull in CPU usage.
These would be a form of a NOOP, where the key generation algorithm waits idle for some period of time to pass before proceeding.
Also you can gain insight into what's going on by running 1 of the gpg
processes using strace
to see what system calls are being made.
Example
$ strace gpg --encrypt --recipient "[email protected]" "..."
Buffer?
The other thing I would be suspicious of is buffering. Perhaps there is a buffer in your pipeline that is being exhausted faster than can be replenished, so the gpg
processes are being starved for work to do.
You could use a tool such as pv
to ferret out this issue by putting it after the output from find
.
Example
$ find .... | sort | pv | ...
I'd look at these switches:
-a, --average-rate
Turn the average rate counter on. This will display the average
rate of data transfer so far.
-b, --bytes
Turn the total byte counter on. This will display the total
amount of data transferred so far.