Say the soundcard collects block-size audio-samples. e.g. 1msec (48 samples / 48kHz).
After this is complete, the samples are immediately processed and the result is placed on the output buffer for the next cycle. The result becomes audible 2 msec after it was captured:
This is what happens with jack1 (or when running jack2 in --sync) mode using 2 periods:
time ------------>
Capture A B C D
Process - A B C
Play - - A B
At best, audio-data is audible exactly two cycles after it was captured. This does not account for systemic latency (additional buffers in the driver or the device or hardware).
Note that jackd2’s async mode (enabled by default) adds one extra period of latency. qjackctl’s info does not account for this.