@Override public double getMedianTimeRequestInMillis() { return getPercentileMillis(50); } }
@Override public long getTimePerCallInMillis() { long denominator = totalCalls; if (denominator <= 0) { return 0; } return getTotalTime() / denominator; }
public void collectCallTimeNanos(long timeInNs) { super.collectOperationTimeNanos(timeInNs); }
@Override public double getPercentCallsFinishedInMillis(int millis) { if (millis <= 0) { return 0.0; } long localTotalCalls = totalCalls; if (localTotalCalls == 0) { return 100.0; } long upper = 1; int comparisonPoint = 1; // comparisonPoint = 1 corresponds to % of numbers > 1 while (upper < millis) { upper <<= 1; comparisonPoint++; } resizeUnderStats(comparisonPoint); double prev = 1.0 - ((double) underStatsMillis.get(comparisonPoint - 1).get()) / localTotalCalls; double next = 1.0 - ((double) underStatsMillis.get(comparisonPoint).get()) / localTotalCalls; // lerp(x0, y0, x1, y1, x) -> y return 100.0 * lerp(upper / 2.0, prev, upper, next, millis); }
@SuppressWarnings("cast") protected synchronized void collectOperationTimeNanos(long timeInNanos) { operationTimeNanos += timeInNanos; totalCalls++; double doubleTimeInNanos = (double) timeInNanos; doubleSumTimeNanos += doubleTimeInNanos; doubleSumSquaredTimeNanos += doubleTimeInNanos * doubleTimeInNanos; if (timeInNanos > maxCall) { maxCall = timeInNanos; } if (timeInNanos < minCall) { minCall = timeInNanos; } populateStatsBuckets(timeInNanos); }
private void populateStatsBuckets(long timeInNanos) { long timeInMillis = (timeInNanos + ONE_MILLION - 1) / ONE_MILLION; int index = 0; long upperInclusive = 1; while (upperInclusive < timeInMillis) { resizeUnderStats(index); underStatsMillis.get(index).incrementAndGet(); index++; upperInclusive <<= 1; } resizeUnderStats(index); underStatsMillis.get(index).incrementAndGet(); }
@Override public Handle start(String module, final String sqlKey, final String rawSql) { final TimingState timingState; if (LoggerFactory.getLogger("com.palantir.nexus.db.SQL").isTraceEnabled()) { String sql = rawSql.replaceAll("[\n]+", ""); String msg = System.currentTimeMillis() + "\tSQL\t" + module + "\t" + sql; timingState = timer.begin(msg); } else { timingState = null; } return () -> { if (timingState != null && logger.isTraceEnabled()) { timingState.end(); } }; } }
resizeUnderStats(comparisonPoint); comparisonPoint++; millis <<= 1; resizeUnderStats(comparisonPoint); prevPerc = percent; percent = 100.0 * ((double) underStatsMillis.get(comparisonPoint).get()) / localTotalCalls; double ret = lerp(prevPerc, millis / 2.0, percent, millis, mustBeBellow); if (ret > maxInMillis) { return maxInMillis;
protected synchronized void collectOperationTimeMillis(long timeInMillis) { collectOperationTimeNanos(timeInMillis * ONE_MILLION); }
@Override public double getMedianTimeRequestInMillis() { return getPercentileMillis(50); } }
@Override public long getTimePerCallInMillis() { long denominator = totalCalls; if (denominator <= 0) { return 0; } return getTotalTime() / denominator; }
@SuppressWarnings("cast") protected synchronized void collectOperationTimeNanos(long timeInNanos) { operationTimeNanos += timeInNanos; totalCalls++; double doubleTimeInNanos = (double) timeInNanos; doubleSumTimeNanos += doubleTimeInNanos; doubleSumSquaredTimeNanos += doubleTimeInNanos * doubleTimeInNanos; if (timeInNanos > maxCall) { maxCall = timeInNanos; } if (timeInNanos < minCall) { minCall = timeInNanos; } populateStatsBuckets(timeInNanos); }
private void populateStatsBuckets(long timeInNanos) { long timeInMillis = (timeInNanos + ONE_MILLION - 1) / ONE_MILLION; int index = 0; long upperInclusive = 1; while (upperInclusive < timeInMillis) { resizeUnderStats(index); underStatsMillis.get(index).incrementAndGet(); index++; upperInclusive <<= 1; } resizeUnderStats(index); underStatsMillis.get(index).incrementAndGet(); }
private Map<RangeRequest, TokenBackedBasicResultsPage<RowResult<Value>, byte[]>> getFirstPages( TableReference tableRef, List<RangeRequest> requests, long timestamp) { List<String> subQueries = Lists.newArrayList(); List<Object> argsList = Lists.newArrayList(); for (int i = 0; i < requests.size(); i++) { RangeRequest request = requests.get(i); Pair<String, List<Object>> queryAndArgs = getRangeQueryAndArgs( tableRef, request.getStartInclusive(), request.getEndExclusive(), request.isReverse(), request.getBatchHint() == null ? 1 : request.getBatchHint(), i); subQueries.add(queryAndArgs.lhSide); argsList.addAll(queryAndArgs.rhSide); } String query = Joiner.on(") UNION ALL (").appendTo(new StringBuilder("("), subQueries).append(")").toString(); Object[] args = argsList.toArray(); TimingState timer = logTimer.begin("Table: " + tableRef.getQualifiedName() + " get_page"); try { return getFirstPagesFromDb(tableRef, requests, timestamp, query, args); } finally { timer.end(); } }
@Override public double getPercentCallsFinishedInMillis(int millis) { if (millis <= 0) { return 0.0; } long localTotalCalls = totalCalls; if (localTotalCalls == 0) { return 100.0; } long upper = 1; int comparisonPoint = 1; // comparisonPoint = 1 corresponds to % of numbers > 1 while (upper < millis) { upper <<= 1; comparisonPoint++; } resizeUnderStats(comparisonPoint); double prev = 1.0 - ((double) underStatsMillis.get(comparisonPoint - 1).get()) / localTotalCalls; double next = 1.0 - ((double) underStatsMillis.get(comparisonPoint).get()) / localTotalCalls; // lerp(x0, y0, x1, y1, x) -> y return 100.0 * lerp(upper / 2.0, prev, upper, next, millis); }
protected synchronized void collectOperationTimeMillis(long timeInMillis) { collectOperationTimeNanos(timeInMillis * ONE_MILLION); }
public void collectCallTimeNanos(long timeInNs) { super.collectOperationTimeNanos(timeInNs); }
@Override public Handle start(String module, final String sqlKey, final String rawSql) { final TimingState timingState; if (LoggerFactory.getLogger("com.palantir.nexus.db.SQL").isTraceEnabled()) { String sql = rawSql.replaceAll("[\n]+", ""); String msg = System.currentTimeMillis() + "\tSQL\t" + module + "\t" + sql; timingState = timer.begin(msg); } else { timingState = null; } return () -> { if (timingState != null && logger.isTraceEnabled()) { timingState.end(); } }; } }