All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.lucene.benchmark.byTask.stats.TaskStats Maven / Gradle / Ivy

There is a newer version: 9.11.1
Show newest version
package org.apache.lucene.benchmark.byTask.stats;

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import org.apache.lucene.benchmark.byTask.tasks.PerfTask;

/**
 * Statistics for a task run. 
 * 
The same task can run more than once, but, if that task records statistics, * each run would create its own TaskStats. */ public class TaskStats implements Cloneable { /** task for which data was collected */ private PerfTask task; /** round in which task run started */ private int round; /** task start time */ private long start; /** task elapsed time. elapsed >= 0 indicates run completion! */ private long elapsed = -1; /** max tot mem during task */ private long maxTotMem; /** max used mem during task */ private long maxUsedMem; /** serial run number of this task run in the perf run */ private int taskRunNum; /** number of other tasks that started to run while this task was still running */ private int numParallelTasks; /** number of work items done by this task. * For indexing that can be number of docs added. * For warming that can be number of scanned items, etc. * For repeating tasks, this is a sum over repetitions. */ private int count; /** Number of similar tasks aggregated into this record. * Used when summing up on few runs/instances of similar tasks. */ private int numRuns = 1; /** * Create a run data for a task that is starting now. * To be called from Points. */ TaskStats (PerfTask task, int taskRunNum, int round) { this.task = task; this.taskRunNum = taskRunNum; this.round = round; maxTotMem = Runtime.getRuntime().totalMemory(); maxUsedMem = maxTotMem - Runtime.getRuntime().freeMemory(); start = System.currentTimeMillis(); } /** * mark the end of a task */ void markEnd (int numParallelTasks, int count) { elapsed = System.currentTimeMillis() - start; long totMem = Runtime.getRuntime().totalMemory(); if (totMem > maxTotMem) { maxTotMem = totMem; } long usedMem = totMem - Runtime.getRuntime().freeMemory(); if (usedMem > maxUsedMem) { maxUsedMem = usedMem; } this.numParallelTasks = numParallelTasks; this.count = count; } private int[] countsByTime; private long countsByTimeStepMSec; public void setCountsByTime(int[] counts, long msecStep) { countsByTime = counts; countsByTimeStepMSec = msecStep; } public int[] getCountsByTime() { return countsByTime; } public long getCountsByTimeStepMSec() { return countsByTimeStepMSec; } /** * @return the taskRunNum. */ public int getTaskRunNum() { return taskRunNum; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder res = new StringBuilder(task.getName()); res.append(" "); res.append(count); res.append(" "); res.append(elapsed); return res.toString(); } /** * @return Returns the count. */ public int getCount() { return count; } /** * @return elapsed time. */ public long getElapsed() { return elapsed; } /** * @return Returns the maxTotMem. */ public long getMaxTotMem() { return maxTotMem; } /** * @return Returns the maxUsedMem. */ public long getMaxUsedMem() { return maxUsedMem; } /** * @return Returns the numParallelTasks. */ public int getNumParallelTasks() { return numParallelTasks; } /** * @return Returns the task. */ public PerfTask getTask() { return task; } /** * @return Returns the numRuns. */ public int getNumRuns() { return numRuns; } /** * Add data from another stat, for aggregation * @param stat2 the added stat data. */ public void add(TaskStats stat2) { numRuns += stat2.getNumRuns(); elapsed += stat2.getElapsed(); maxTotMem += stat2.getMaxTotMem(); maxUsedMem += stat2.getMaxUsedMem(); count += stat2.getCount(); if (round != stat2.round) { round = -1; // no meaning if aggregating tasks of different round. } if (countsByTime != null && stat2.countsByTime != null) { if (countsByTimeStepMSec != stat2.countsByTimeStepMSec) { throw new IllegalStateException("different by-time msec step"); } if (countsByTime.length != stat2.countsByTime.length) { throw new IllegalStateException("different by-time msec count"); } for(int i=0;i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy