2011-10-23 18 views
2

JPL에서는 시스템 엔지니어링 작업에 모델 변환 기술을 사용합니다. 우리는 OMG의 QVT 사양의 Eclipse QVTO 구현을 사용합니다.JProfiler 사용자 정의 프로브 원격 측정법을 사용하여 Guava 캐시 통계를 모니터링하는 방법

http://www.eclipse.org/modeling/m2m/downloads/index.php?project=qvtoml

그러나, 이클립스 QVTO 컴파일러는 절망적 느립니다. Guava의 캐시를 적절하게 적용하여 Eclispe QVTO 컴파일러의 성능이 크게 향상되었습니다. 더 많은 것은 을 수행 할 수 있었지만, 내가 가지고있는 것으로, 런타임시 캐쉬 통계를 모니터함으로써 캐싱 최적화의 효과 성을 볼 수 있습니다 ( ). 즉, com.google.common.cache.CacheStats

아무도 제안하지 않았습니다. w.r.t. JProfiler 맞춤형 원격 측정 프로브를 정의하는 방법 ?

http://resources.ej-technologies.com/jprofiler/help/doc/indexRedirect.html?http&&&resources.ej-technologies.com/jprofiler/help/doc/helptopics/probes/custom.html

  • 니콜라스.

답변

0

정적 메서드로 액세스 할 수있는 단일 캐시의 경우 매우 쉽습니다. 사용자 정의 프로브 마법사에서 CacheTest.getSingleCache()는 캐시에서 얻을 수있는 후크입니다

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; 

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); 

과 원격 스크립트에 메타 데이터 스크립트를 설정합니다.

이 모든 캐시 통계 측정을 위해 원격 조정 얻을 것이다, 화면에 표시된 것처럼 아래 촬영 :

enter image description here

+0

감사합니다! 여러 캐시에 대해 무엇을 제안합니까? –

+0

CacheBuilder 문서에 표시된 그래프 변수를 갖는 GraphTest 클래스라고합니다. http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilder.html –

+0

동일한 방식으로 원격 측정을위한 여러 캐시를 병합 할 수 있습니다. 캐시 별보기는 컨트롤 개체보기에 대한 것이지만 컨트롤 개체는 이벤트에 의해서만 업데이트 될 수 있으므로 주기적으로 업데이트 할 수 없으므로 현재 불가능합니다. 전용 Guava 캐시 프로브는 JProfiler 문제 추적기에 있으며 7.1 또는 8.0에서 사용할 수 있습니다. –