For now, Ignite has not build-in profiling tool for user's operations and internal processes. Such a tool will be able to collect performance statistics and create a human-readable report. It will help to analyze workload and to tune configuration and applications.
Example of similar tools in other products: AWR [1] [2] [3] (Oracle) ; pgbadger [4], pgmetrics [5], powa [6] (PostgresSQL).
We should provide a way to execute cluster profiling. Consider the following scenario:
The performance report will be in a human-readable format (html page) and should contain:
Additional investigation required to gather following statistics:
The Ignite will log some additional internal statistics to profiling files (IgniteProfiling
interface). The format is like WAL logging.
One disk-writer thread and off-heap memory buffer will be used to minimize affect on performance. Maximum file size and buffer size can be configured on start.
The new ignite-profiling
module will be introduced. It will contain the tool to build the report: profiling.sh(bat).
The JSON format is used to store aggregated statistics and next draw in the report.
The report is based on the bootstrap library and can be viewed in a browser.
The new module will be created: ignite-profiling
.
The script to build the report: profiling.sh(bat)
The JMX bean to manage cluster profiling.
Enabled profiling mode will cause performance degradation.