This project involves advancing the performance analysis capabilities provided by the PCP Grafana integration in grafana-pcp.
The student will work on:
Based on performance metrics from PCP and a predefined rule set, the 'reactive' dashboard should display only relevant metrics to the user. For example, if the CPU utilization is high, it should show an overview of CPU statistics and processes contributing load. The user should then be able to drill down into more specific areas of interest - e.g. present graphs about lock contention.
For each recognized performance issue a link should be presented to the user on how to resolve the issue. In this way the dashboards guide users toward possible root cause of performance problems.
As a starting point, an initial checklist schema shows a tree structure, rules, help text and links to further information.
Expected results: The student will extend their TypeScript and React programming skills, will gain insight into the semantics of various forms of performance data available from systems and applications, and visualization techniques appropriate to their analysis. They will also learn a great detail about the inner workings of Grafana, a popular open-source visualization tool.
Prerequisite knowledge: TypeScript, JavaScript and React programming, operating systems.
Skill level: Intermediate
Primary mentor: Andreas Gerstmayr <agerstmayr@redhat.com> , secondary mentor: Jason Koch <jkoch@netflix.com>
Interested students so far: 3
This project involves advancing the performance analysis capabilities provided by the PCP integration within the pbench benchmarking and analysis framework.
The student will work on:
Expected results: The student will extend their Python and Bash programming skills, learn about extensible system benchmarking with pbench, learn how to export data to Redis for the grafana-pcp data source, work with the PCP pmlogger tool to efficiently collect data, and discover the kinds of operating system and application metrics PCP is capable of collecting to match various workloads.
Prerequisite knowledge: Python and Bash programming, operating systems.
Skill level: Intermediate
Primary mentor: Peter Portant <pportant@redhat.com> , secondary mentor: Nick Dokos <ndokos@redhat.com>
Interested students so far: 4
Performance Co-Pilot timeseries are series of time-stamped values gathered centrally from hosts making performance data available. This data could be gathered for many metrics, at high frequency, and from many hosts. It is potentially high volume data, and searching it efficiently (querying) at speed is a non-trivial problem.
The Performance Co-Pilot timeseries query language is designed to allow fast querying based on metric names and labels. A command line utility and a REST API are available from pmseries and the pmproxy daemon.
The following is a simple example query which extracts the five most recently sampled values for aggregate disk read throughput (disk.all.read metric) for two hosts:
disk.all.read { hostname: "app1.acme.com" || hostname: "app2.acme.com" } [count: 5]
Internally, the PCP query language makes use of the Redis distributed data store and its native timeseries features. The pmseries command line utility provides low-level access to the language.
This project will extend the existing query language with:
Expected results: The student will extend their C language programming skills, learn about the lex and yacc language parsing tools, performance analysis with PCP and the Redis distributed data store.
Prerequisite knowledge: C programming.
Skill level: Intermediate-Advanced
Primary mentor: Mark Goodwin <goodwinos@gmail.com> , secondary mentor: Nathan Scott <nathans@redhat.com>
Interested students so far: 3
The Performance Co-Pilot approach to scalable, multi-host performance analysis builds on the Redis distributed data store and its native timeseries support. The pmseries utility and pmproxy daemon provide the tooling and APIs to support this. This project will improve scalability in these programs through:
Expected results: The student will extend their C language programming skills, learn about the Redis distributed data store (and Redis clustering in particular), gain deep familiarity with low-level Linux performance tuning tools such as perf and bpftrace as well as learning to apply PCP tools to analyse complex distributed system performance problems.
Prerequisite knowledge: C programming, Linux experience.
Skill level: Intermediate-Advanced
Primary mentor: Nathan Scott <nathans@redhat.com> , secondary mentor: Mark Goodwin <goodwinos@gmail.com>
Interested students so far: 2