TimerMeter

Aus SDQ-Wiki
ByCounter logo

Description

  • TimerMeter is a novel solution for platform-independent quantification of accuracy and invocation cost of any timer methods, without inspecting the implementation of the timer methods.
  • TimerMeter addresses quality attributes such as accuracy, resolution, granularity and precision.
  • Currently, a Java implementation and an implementation in C# (for both .NET and Mono) are available.
  • TimerMeter is also applicable to counters and comes with many examples and JNI-based bindings of native timer methods, e.g. Windows API QueryPerformanceCounter.

Download

  • We provide TimerMeter to interested parties free of charge, and several researchers have already used TimerMeter in their work (e.g. a journal paper on a new implementation method of timer for periodic tasks, and the Faban benchmark harness that used in SPEC benchmarks).
  • If you want to use TimerMeter in your research or commercial product, please email us at WritetoByCounterKIT.png.
  • We will also provide support for TimerMeter, and source code can be made available as well.

Documentation and Publications

  1. TimerMeter: Quantifying Properties of Software Timers for System Analysis
    • Contents: the initial paper (QEST 2009), it describes TimerMeter including the evaluation of its Java implementation on several platforms and for several counters and timers (TSC, QueryPerformanceCounter, System.nanoTime(), System.currentTimeMillis() etc.)
    • Download of published paper: official page at IEEE, with PDF download (may require IEEExplore login, please contact if you cannot access the PDF)
    • Download of the preprint version (for private and educational use only!): PDF, 369 KB
    • BibTeX entry for the conference paper
    • Slides: contact Michael Kuperberg for slides
  2. Metric-based Selection of Timer Methods for Accurate Measurements
    • Contents: follow-up work (ICPE 2011) on systematically selecting timer methods on the basis of their quality attributes, using a novel unified metric.
    • Download of published paper: official page at IEEE, with PDF download (may require IEEExplore login, please contact if you cannot access neither this PDF nor the PDF on the IEEE page)
      • Alternative download of the published paper: official page at ACM, with PDF download (may require IEEExplore login, please contact Michael Kuperberg if you cannot access the PDF)
    • Download of the preprint version (for private and educational use only!): [[1]]
    • BibTeX entry for the conference paper
    • Slides: contact Michael Kuperberg for slides
  3. Analysing the Fidelity of Measurements Performed with Hardware Performance Counters
    • Contents: paper and poster presentation (ICPE 2011) on problems with direct usage of hardware performance counters, such as TSC (Timerstamp Counter).
    • Download of published paper: official page at IEEE, with PDF download (may require IEEExplore login, please contact if you cannot access neither this PDF nor the PDF on the ACM page, linked below)
      • Alternative download of published paper: official page at ACM, with PDF download (may require ACM login, please contact if you cannot access the PDF)
    • Download of the preprint version (for private and educational use only!): [[2]]
    • BibTeX entry for the conference paper
    • Poster: contact Michael Kuperberg for the poster itself (as PDF)

Implementation

  • TimerMeter has been implemented by Michael Kuperberg and Martin Krogmann from the research group "Software Design and Quality"
  • The work is carried out in the context of the Palladio project led by Prof. Ralf Reussner.
  • The following timer methods are currently covered:
    1. java.lang.System.nanoTime()
    2. java.lang.System.currentTimeMillis()
    3. java.lang.management.ThreadMXBean.getCurrentThreadCpuTime()
    4. java.lang.management.ThreadMXBean.getCurrentThreadUserTime()
    5. java.lang.management.OperatingSystemMXBean.getProcessCpuTime() (on supported JVMs)
    6. sun.misc.Perf.highResCounter() (on supported JVMs)
    7. gettimeofday function (Linux platforms, using JNI)
    8. QueryPerformanceCounter function (Windows platforms, using both Java JNI and access from C#)
    9. TimeStampCounter function (known as TSC or RDTSC, implemented for Linux and Windows platforms using JNI)
    10. System.DateTime.Now.Ticks used from C# (both .NET and Mono are supported)
    11. System.Diagnostics.StopWatch class used from C# (both .NET and Mono are supported)

Contact