Как использовать пользовательскую пробную телеметрию JProfiler для мониторинга статистики кэша Гуавы
В JPL мы используем методы преобразования моделей для наших системотехнических работ. Мы используем Eclipse QVTO реализацию спецификации OMG QVT.
http://www.eclipse.org/modeling/m2m/downloads/index.php?project=qvtoml
Однако компилятор Eclipse QVTO очень удручает. Благодаря разумному применению кэша Guava мне удалось значительно повысить производительность компилятора Eclispe QVTO. Можно было бы сделать больше, но, имея то, что у меня есть, я хотел бы получить представление об эффективности оптимизации кэширования, отслеживая статистику кэша во время выполнения; т.е. com.google.common.cache.CacheStats
Кто-нибудь предлагает, как определить пользовательский телеметрический зонд JProfiler для этого?
- Николя.
1 ответ
Для одного кеша, к которому вы можете получить доступ статическим методом, это довольно просто. В мастере пользовательских тестов установите сценарий метаданных на
metaData.recordOnStartup(true);
metaData.telemetry(true);
metaData.addCustomTelemetry("Request count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Hit count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Hit rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Miss count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Miss rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Load success count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Load exception count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Load exception rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Eviction count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Total load time", Unit.MICROSECONDS, 1f);
metaData.addCustomTelemetry("Average load penalty", Unit.MICROSECONDS, 1f);
и сценарий телеметрии для
import test.CacheTest;
import com.google.common.cache.*;
Cache cache = CacheTest.getSingleCache();
if (cache == null) {
return;
}
CacheStats stats = cache.stats();
data[0] = (int)stats.requestCount();
data[1] = (int)stats.hitCount();
data[2] = (int)(stats.hitRate() * 100);
data[3] = (int)stats.missCount();
data[4] = (int)(stats.missRate() * 100);
data[5] = (int)stats.loadSuccessCount();
data[6] = (int)stats.loadExceptionCount();
data[7] = (int)(stats.loadExceptionRate() * 100);
data[8] = (int)stats.evictionCount();
data[9] = (int)stats.totalLoadTime() / 1000;
data[10] = (int)stats.averageLoadPenalty() / 1000;
где CacheTest.getSingleCache()
это крюк, чтобы попасть в ваш кеш.
Это даст вам телеметрию для всех измерений статистики кэша, как показано на снимке экрана ниже: