# Run Sysreport

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/sysreport/)
- [Before you begin](https://learn.arm.com/learning-paths/servers-and-cloud-computing/sysreport/before-you-begin/)
- [Run Sysreport](https://learn.arm.com/learning-paths/servers-and-cloud-computing/sysreport/run-sysreport/)
- [Analyze the results](https://learn.arm.com/learning-paths/servers-and-cloud-computing/sysreport/analyse-results/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/sysreport/_next-steps/)

## About Sysreport
Sysreport is a system capability reporting tool that gives application developers a quick summary of the performance features available on a Linux system. It reports the system configuration in a way that is focused on performance analysis.

The tool is aimed at anyone trying to profile performance on Arm Linux systems; this includes cloud instances, bare metal servers, small developer boards, and Raspberry Pi devices.

After running Sysreport, a summary is generated and displayed on screen. Information reported includes hardware configuration, operating system configuration (build time), and other configuration settings that can be changed. By default, the tool displays advice about possible configuration changes you can make in order to improve the ability to collect performance information. You can disable the advice using the `--no-advice` option.

Example use cases for Sysreport include:
- As a developer, you want to know if a cloud instance supports a particular performance feature so that you can debug a performance problem
- As a developer, you want a quick, single-page summary of a system’s performance configuration so that you don’t need to run multiple commands manually to gather what you need
- As a developer, you would like to know suggested configuration changes you can make to a system so that you can improve your ability to collect performance information

## Run Sysreport
Run Sysreport with the following command:

```bash
python3 sysreport.py
```

Below is the output from an Arm Neoverse N1 System Development Platform (N1SDP), a reference board based on the Neoverse N1 core, running Ubuntu 20.04.6 LTS:

```
__output__
System feature report:
__output__
  Collected:           2024-03-20 12:24:18.102663
__output__
  Script version:      2024-03-20 11:42:11.356472
__output__
  Running as root:     False
__output__
System hardware:
__output__
  Architecture:        ARMv8.2
__output__
  CPUs:                4
__output__
  CPU types:           4 x ARM Neoverse N1 r1p0
__output__
  cache info:          size, associativity, sharing
__output__
  cache line size:     64
__output__
  Caches:
__output__
    4 x L1D 64K 4-way 64b-line
__output__
    4 x L1I 64K 4-way 64b-line
__output__
    4 x L2U 1M 8-way 64b-line
__output__
    2 x L3U 1M 8-way 64b-line
__output__
    1 x L4U 8M 16-way 64b-line
__output__
  System memory:       15.6G
__output__
  Atomic operations:   True
__output__
  interconnect:        CMN-600 x 1
__output__
  NUMA nodes:          1
__output__
  Sockets:             1
__output__
OS configuration:
__output__
  Kernel:              5.18.4+
__output__
  config:              /boot/config-5.18.4+
__output__
  32-bit support:      True
__output__
  build dir:           /lib/modules/5.18.4+/build
__output__
  uses atomics:        True
__output__
  huge pages:          False
__output__
    transparent:       madvise
__output__
  MPAM configured:     False
__output__
  resctrl:             False
__output__
  Distribution:        Ubuntu 20.04.6 LTS
__output__
  libc version:        glibc 2.29
__output__
  boot info:           ACPI
__output__
  KPTI enabled:        False
__output__
  Lockdown:            landlock, lockdown, yama, integrity, apparmor
__output__
  Mitigations:         spectre_v2:CSV2, BHB; spectre_v1:__user pointer sanitization
__output__
Performance features:
__output__
  perf tools:          True
__output__
  perf installed at:   /usr/lib/linux-tools/5.18.4+/perf
__output__
	not a dynamic executable
__output__
  perf with OpenCSD:   False
__output__
  perf counters:       6
__output__
  perf sampling:       SPE
__output__
  perf HW trace:       ETM
__output__
  perf paranoid:       0
__output__
  perf in userspace:   disabled
__output__
  interconnect perf:   True
__output__
  /proc/kcore:         True
__output__
  /dev/mem:            True
__output__
	not a dynamic executable
__output__
Actions that can be taken to improve performance tools experience:
__output__
  perf tools cannot decode hardware trace
__output__
    build with CORESIGHT=1
```

Here is the output from an AWS EC2 cloud instance, running Ubuntu 22.04.3 LTS:

```
__output__
System feature report:
__output__
  Collected:           2024-03-21 13:37:51.248565
__output__
  Script version:      2024-03-21 11:50:23.254919
__output__
  Running as root:     False
__output__
System hardware:
__output__
  Architecture:        ARMv8.4
__output__
  CPUs:                16
__output__
  CPU types:           16 x ARM Neoverse V1 r1p1
__output__
  cache info:          size, associativity, sharing
__output__
  cache line size:     64
__output__
  Caches:
__output__
    16 x L1D 64K 4-way 64b-line
__output__
    16 x L1I 64K 4-way 64b-line
__output__
    16 x L2U 1M 8-way 64b-line
__output__
    1 x L3U 32M 16-way 64b-line
__output__
  System memory:       30.8G
__output__
  Atomic operations:   True
__output__
  interconnect:        <unknown> x 1
__output__
  NUMA nodes:          1
__output__
  Sockets:             1
__output__
OS configuration:
__output__
  Kernel:              6.5.0
__output__
  config:              /boot/config-6.5.0-1015-aws
__output__
  32-bit support:      True
__output__
  build dir:           /lib/modules/6.5.0-1015-aws/build
__output__
  uses atomics:        True
__output__
  huge pages:          False
__output__
    transparent:       madvise
__output__
  MPAM configured:     False
__output__
  resctrl:             False
__output__
  Distribution:        Ubuntu 22.04.3 LTS
__output__
  libc version:        glibc 2.35
__output__
  boot info:           ACPI
__output__
  KPTI enabled:        False
__output__
  Lockdown:            landlock, lockdown, yama, integrity, apparmor
__output__
  Mitigations:         spectre_v2:CSV2, BHB; spec_store_bypass:Speculative Store Bypass disabled via prctl; spectre_v1:__user pointer sanitization
__output__
Performance features:
__output__
  perf tools:          False
__output__
  perf installed at:   /usr/lib/linux-tools/6.5.0-1015-aws/perf (does not exist)
__output__
ldd: /usr/lib/linux-tools/6.5.0-1015-aws/perf: No such file or directory
__output__
  perf with OpenCSD:   False
__output__
  perf counters:       None
__output__
  perf sampling:       None
__output__
  perf HW trace:       None
__output__
  perf paranoid:       4
__output__
  perf in userspace:   disabled
__output__
  interconnect perf:   None
__output__
  /proc/kcore:         True
__output__
  /dev/mem:            True
__output__
Actions that can be taken to improve performance tools experience:
__output__
  perf tools not installed
__output__
    install perf package
__output__
    or build from kernel sources
__output__
  System-level events can only be monitored by privileged users
__output__
    set kernel.perf_event_paranoid=0
__output__
  Hardware perf events are not available
__output__
    ensure APIC table describes PMU interrupt
__output__
  non-invasive sampling (SPE) not enabled
__output__
    ensure APIC table describes SPE interrupt
__output__
    kernel module arm_spe_pmu.ko must be built
__output__
  hardware trace not enabled
__output__
    rebuild kernel with CONFIG_CORESIGHT
__output__
    ensure ACPI describes CoreSight trace fabric
```
