Thermostat
From IcedTea
This wiki is mainly for Thermostat developers and organized as such. If you are not a Thermostat developer, please start at the home page instead. If you are a new user, please see the User Guide on how to get started.
Thermostat.next Developer Resources
Contents |
1 What is Thermostat?
Thermostat is an instrumentation tool for the Hotspot JVM, with support for monitoring multiple JVM instances on multiple hosts, optionally in a cloud environment.
- We want a tool that allows users of IcedTea/OpenJDK to monitor running JVMs, especially remote JVMs.
- Both high level (uptime, cpu and memory usage) and low level (including hotspot's perf data) information should be available through the tool.
- The tool should be usable in a production environment, with minimal overhead.
Please see the home page and the User Guide on how to get, install and use Thermostat.
The name Thermostat is intended as a play on words - Thermostat is to Hotspot much as IcedTea is to Java. There are a number of ways of accessing information about the running Hotspot JVM. These include jstatd, JMX, JVMTI, and Systemtap. There is also information available from the host system that would be relevant to developers and administrators. Thermostat should provide a pluggable framework for using one or more of these information sources to monitor local or remote JVMs, in order to best allow us as well as other members of the Open Source Java community to extend the collection capability of the system.
It is worth noting that there is some overlap in terms of the information that several of these monitoring tools/APIs can provide.
2 Why Thermostat?
Here is some discussion about what makes Thermostat stand out.
3 Screenshots
3.1 Thermostat Swing GUI
3.2 Thermostat Shell (CLI)
4 Using Thermostat
Thermostat users are encouraged to read our Thermostat User Guide.
See also: Thermostat Security Considerations
5 Thermostat Development
Do you want to contribute to Thermostat? Here are a few pages you might find useful.
For a quick-start guide to getting Thermostat setup and running see: Quick-start Guide
5.1 Development Environment Setup
Please select a link below for instructions as to how to set up a development environment on the given operating system:
5.2 Design And Architecture
5.3 Miscellaneous Development Related Pages
- Thermostat.next Wiki
- Thermostat road map
- Development style guide
- Building Thermostat FAQs
- Branches and Release Process
- Useful Mercurial configuration
- Archive: Iterative releases and planned milestones
- Writing plugins (extensions) for thermostat
- Developing the Eclipse plug-in Client (now obsolete)
- Thermostat and Bugzilla - tracking bugs and features
- Programming for the Thermostat Command Channel
- Access Control Design Documentation
- Notes on Hotspot
- Serviceability Support In OpenJDK
- Deploy web storage in Tomcat using SSL for development/testing.
- Database schema
- Statement descriptors format
- Using the thermostat performance logger and analyzer. Useful for performance tuning.
- Using mongostat in order to see query load. Useful for inspecting DB load.
- Developer notes on the instrumenting profiler.
- Adding tab-completions for plugin-provided commands in Thermostat shell
- Inter-process Communication Design Documentation
- Thermostat-ng Web-Client Manual Testing
6 Thermostat Features
Thermostat is currently past our 1.4.4 release. Please see our features page for a general overview of what's been implemented so far.
7 Thermostat Talks and Presentations
Some talks and presentations about thermostat are available too.
8 OSGi Services
Thermostat exports a number of services:
Client
- com.redhat.thermostat.client.osgi.service.VMContextAction
- com.redhat.thermostat.client.osgi.service.ApplicationService
- com.redhat.thermostat.client.osgi.service.ContextAction
- com.redhat.thermostat.client.osgi.service.VmInformationService
- com.redhat.thermostat.service.process.UNIXProcessHandler
9 NUMA
It would be nice to be able to get some NUMA related information out of Thermostat. The linux kernel provides a variety of tools:
- numactl
- numastat
- getcpu system call
- get_mempolicy sytem call
- man numa_maps
Together with Hotspot NUMA support we should be able to get some information out of the system. Related docs: JEP 157; http://osdir.com/ml/java.openjdk.hotspot.devel/2008-03/msg00009.html

