cleanup Intel RDT readme (#8268)

* cleanup Intel RDT readme

* Update intel_rdt.go
This commit is contained in:
Samantha Wang 2020-10-15 09:09:09 -07:00 committed by GitHub
parent d5f0a120d8
commit 4872d7b4a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 43 deletions

View File

@ -1,19 +1,26 @@
# Intel RDT Input Plugin
The intel_rdt plugin collects information provided by monitoring features of
Intel Resource Director Technology (Intel(R) RDT) like Cache Monitoring Technology (CMT),
Memory Bandwidth Monitoring (MBM), Cache Allocation Technology (CAT) and Code
and Data Prioritization (CDP) Technology provide the hardware framework to monitor
and control the utilization of shared resources, like last level cache, memory bandwidth.
These Technologies comprise Intels Resource Director Technology (RDT).
As multithreaded and multicore platform architectures emerge,
running workloads in single-threaded, multithreaded, or complex virtual machine environment,
the last level cache and memory bandwidth are key resources to manage. Intel introduces CMT,
MBM, CAT and CDP to manage these various workloads across shared resources.
The `intel_rdt` plugin collects information provided by monitoring features of
the Intel Resource Director Technology (Intel(R) RDT). Intel RDT provides the hardware framework to monitor
and control the utilization of shared resources (ex: last level cache, memory bandwidth).
To gather Intel RDT metrics plugin uses _pqos_ cli tool which is a part of [Intel(R) RDT Software Package](https://github.com/intel/intel-cmt-cat).
### About Intel RDT
Intels Resource Director Technology (RDT) framework consists of:
- Cache Monitoring Technology (CMT)
- Memory Bandwidth Monitoring (MBM)
- Cache Allocation Technology (CAT)
- Code and Data Prioritization (CDP)
As multithreaded and multicore platform architectures emerge, the last level cache and
memory bandwidth are key resources to manage for running workloads in single-threaded,
multithreaded, or complex virtual machine environments. Intel introduces CMT, MBM, CAT
and CDP to manage these workloads across shared resources.
### Prerequsities - PQoS Tool
To gather Intel RDT metrics, the `intel_rdt` plugin uses _pqos_ cli tool which is a
part of [Intel(R) RDT Software Package](https://github.com/intel/intel-cmt-cat).
Before using this plugin please be sure _pqos_ is properly installed and configured regarding that the plugin
run _pqos_ to work with `OS Interface` mode. This plugin supports _pqos_ version 4.0.0 and above.
Be aware pqos tool needs root privileges to work properly.
Note: pqos tool needs root privileges to work properly.
Metrics will be constantly reported from the following `pqos` commands within the given interval:
@ -46,29 +53,29 @@ More about Intel RDT: https://www.intel.com/content/www/us/en/architecture-and-t
### Configuration
```toml
# Read Intel RDT metrics
[[inputs.IntelRDT]]
## Optionally set sampling interval to Nx100ms.
## This value is propagated to pqos tool. Interval format is defined by pqos itself.
## If not provided or provided 0, will be set to 10 = 10x100ms = 1s.
# sampling_interval = "10"
[[inputs.intel_rdt]]
## Optionally set sampling interval to Nx100ms.
## This value is propagated to pqos tool. Interval format is defined by pqos itself.
## If not provided or provided 0, will be set to 10 = 10x100ms = 1s.
# sampling_interval = "10"
## Optionally specify the path to pqos executable.
## If not provided, auto discovery will be performed.
# pqos_path = "/usr/local/bin/pqos"
## Optionally specify the path to pqos executable.
## If not provided, auto discovery will be performed.
# pqos_path = "/usr/local/bin/pqos"
## Optionally specify if IPC and LLC_Misses metrics shouldn't be propagated.
## If not provided, default value is false.
# shortened_metrics = false
## Specify the list of groups of CPU core(s) to be provided as pqos input.
## Mandatory if processes aren't set and forbidden if processes are specified.
## e.g. ["0-3", "4,5,6"] or ["1-3,4"]
# cores = ["0-3"]
## Specify the list of processes for which Metrics will be collected.
## Mandatory if cores aren't set and forbidden if cores are specified.
## e.g. ["qemu", "pmd"]
# processes = ["process"]
## Optionally specify if IPC and LLC_Misses metrics shouldn't be propagated.
## If not provided, default value is false.
# shortened_metrics = false
## Specify the list of groups of CPU core(s) to be provided as pqos input.
## Mandatory if processes aren't set and forbidden if processes are specified.
## e.g. ["0-3", "4,5,6"] or ["1-3,4"]
# cores = ["0-3"]
## Specify the list of processes for which Metrics will be collected.
## Mandatory if cores aren't set and forbidden if cores are specified.
## e.g. ["qemu", "pmd"]
# processes = ["process"]
```
### Exposed metrics
@ -78,20 +85,20 @@ More about Intel RDT: https://www.intel.com/content/www/us/en/architecture-and-t
| MBR | Memory Bandwidth on Remote NUMA Node | Memory bandwidth utilization by the relevant CPU core/process on the remote NUMA memory channel |
| MBT | Total Memory Bandwidth | Total memory bandwidth utilized by a CPU core/process on local and remote NUMA memory channels |
| LLC | L3 Cache Occupancy | Total Last Level Cache occupancy by a CPU core/process |
| *LLC_Misses | L3 Cache Misses | Total Last Level Cache misses by a CPU core/process |
| *IPC | Instructions Per Cycle | Total instructions per cycle executed by a CPU core/process |
| LLC_Misses* | L3 Cache Misses | Total Last Level Cache misses by a CPU core/process |
| IPC* | Instructions Per Cycle | Total instructions per cycle executed by a CPU core/process |
*optional
### Troubleshooting
Pointing to non-existing core will lead to throwing an error by _pqos_ and plugin will not work properly.
Be sure to check if provided core number exists within desired system.
Pointing to non-existing cores will lead to throwing an error by _pqos_ and the plugin will not work properly.
Be sure to check provided core number exists within desired system.
Be aware reading Intel RDT metrics by _pqos_ cannot be done simultaneously on the same resource.
So be sure to not use any other _pqos_ instance which is monitoring the same cores or PIDs within working system.
Also there is no possibility to monitor same cores or PIDs on different groups.
Be aware, reading Intel RDT metrics by _pqos_ cannot be done simultaneously on the same resource.
Do not use any other _pqos_ instance that is monitoring the same cores or PIDs within the working system.
It is not possible to monitor same cores or PIDs on different groups.
Pids association for the given process could be manually checked by `pidof` command. E.g:
PIDs associated for the given process could be manually checked by `pidof` command. E.g:
```
pidof PROCESS
```
@ -105,4 +112,4 @@ where `PROCESS` is process name.
> rdt_metric,cores=12\,19,host=r2-compute-20,name=MBL,process=top value=0 1598962030000000000
> rdt_metric,cores=12\,19,host=r2-compute-20,name=MBR,process=top value=0 1598962030000000000
> rdt_metric,cores=12\,19,host=r2-compute-20,name=MBT,process=top value=0 1598962030000000000
```
```

View File

@ -541,7 +541,7 @@ func makeRange(min, max int) []int {
}
func init() {
inputs.Add("IntelRDT", func() telegraf.Input {
inputs.Add("intel_rdt", func() telegraf.Input {
rdt := IntelRDT{}
pathPqos, _ := exec.LookPath("pqos")
if len(pathPqos) > 0 {