Я использую Dropwizard InstrumentedExecutorService для получения метрик производительности задач, переданных в ExecutorService. Однако результаты, которые я получаю, не совпадают с метками времени, которые я получаю.
Я настроил это так:
ExecutorService threadPool = Executors.newFixedThreadPool(70);
iESetupAlpha = new InstrumentedExecutorService(threadPool,
SharedMetricRegistries.getOrCreate(Test.class.getName()), "tasks");
Затем я отправляю N задач, где N >> 70, а полученные результаты не совпадают с простыми временными метками журнала.
Пример вывода из метрики:
type=TIMER,
count=813,
min=33.891322118,
max=1635.392204016,
mean=892.1431402913386,
stddev=634.6671899797109,
median=1274.678485876,
p75=1399.769615913,
p95=1622.484479188,
p98=1635.392204016,
p99=1635.392204016,
p999=1635.392204016,
mean_rate=0.49225509747896123,
m1=0.522476741044238,
m5=0.5214019552264931,
m15=0.4319405781793925,
rate_unit=events/second, duration_unit=seconds
Среднее значение прибл. 892 секунд и в общей сложности 813 заданий. Учитывая, что в любой момент количество выполняемых задач равно 50, я подсчитал, что общее время, затраченное на это:
892 x 813/70 = 10359 с
однако по моим данным:
Test Event took 1648.98569607s to run
Я использовал System.nanotime () для вычисления этого.
Я что-то упускаю здесь очевидное?