private void logIt(double elapsedTotal) {
            LOGGER.info(PERIOD_LOG_FORMAT,
                DURATION_FORMAT.format(elapsedTotal),
                PERCENT_FORMAT.format(cpuUsage * 100),
                MEMORY_FORMAT.format(heapMemoryUsed / BYTES_PER_MB),
                MEMORY_FORMAT.format(directMemoryUsed / BYTES_PER_MB),
                RATE_FORMAT.format(produceRate),
                THROUGHPUT_FORMAT.format(produceThroughputBps / BYTES_PER_MB),
                RATE_FORMAT.format(errorRate),
                RATE_FORMAT.format(consumeRate),
                THROUGHPUT_FORMAT.format(consumeThroughputBps / BYTES_PER_MB),
                COUNT_FORMAT.format(backlog / 1_000.0),
                LATENCY_FORMAT.format(produceLatencyMeanMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(produceLatencyMinMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(produceLatency50thMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(produceLatency99thMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(produceLatency999thMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(produceLatencyMaxMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(endToEndLatencyMeanMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(endToEndLatencyMinMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(endToEndLatency50thMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(endToEndLatency99thMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(endToEndLatency999thMicros / MICROS_PER_MILLI),
                LATENCY_FORMAT.format(endToEndLatencyMaxMicros / MICROS_PER_MILLI)
            );
        }
Check if the loop in {@link StatsCollector#printAndCollectStats} should stop.

@param startNanos start time in nanoseconds
@param nowNanos   current time in nanoseconds
@return true if the loop should stop
tools/src/main/java/org/apache/kafka/tools/automq/perf/StatsCollector.java