{"id":40551055,"url":"https://github.com/intel/perfspect","last_synced_at":"2026-01-21T00:02:09.841Z","repository":{"id":38320970,"uuid":"409727475","full_name":"intel/PerfSpect","owner":"intel","description":"Open-source Linux performance suite for engineers—profiling and tuning workloads and system configurations.","archived":false,"fork":false,"pushed_at":"2026-01-18T23:16:24.000Z","size":3859,"stargazers_count":427,"open_issues_count":11,"forks_count":53,"subscribers_count":17,"default_branch":"main","last_synced_at":"2026-01-19T08:44:49.929Z","etag":null,"topics":["arm","cpu","intel","linux","metrics","micro-architecture","monitoring","observability","perf","performance","perfspect","power","profiling","telemetry","tma","tool","x86","xeon"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-09-23T19:58:33.000Z","updated_at":"2026-01-18T23:13:58.000Z","dependencies_parsed_at":"2025-12-24T19:10:39.257Z","dependency_job_id":null,"html_url":"https://github.com/intel/PerfSpect","commit_stats":null,"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/intel/PerfSpect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2FPerfSpect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2FPerfSpect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2FPerfSpect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2FPerfSpect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intel","download_url":"https://codeload.github.com/intel/PerfSpect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2FPerfSpect/sbom","scorecard":{"id":490432,"data":{"date":"2025-08-11","repo":{"name":"github.com/intel/PerfSpect","commit":"e3811ca89c107aa8eeb03906f012589b0d4894b8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":7.1,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 6/25 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:21","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:22","Info: topLevel 'contents' permission set to 'read': .github/workflows/build-test.yml:11","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:13","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.9.0 not signed: https://api.github.com/repos/intel/PerfSpect/releases/240117198","Warn: release artifact v3.8.0 not signed: https://api.github.com/repos/intel/PerfSpect/releases/230236594","Warn: release artifact v3.7.0 not signed: https://api.github.com/repos/intel/PerfSpect/releases/223748800","Warn: release artifact v3.6.1 not signed: https://api.github.com/repos/intel/PerfSpect/releases/215342081","Warn: release artifact v3.6.0 not signed: https://api.github.com/repos/intel/PerfSpect/releases/215248743","Warn: release artifact v3.9.0 does not have provenance: https://api.github.com/repos/intel/PerfSpect/releases/240117198","Warn: release artifact v3.8.0 does not have provenance: https://api.github.com/repos/intel/PerfSpect/releases/230236594","Warn: release artifact v3.7.0 does not have provenance: https://api.github.com/repos/intel/PerfSpect/releases/223748800","Warn: release artifact v3.6.1 does not have provenance: https://api.github.com/repos/intel/PerfSpect/releases/215342081","Warn: release artifact v3.6.0 does not have provenance: https://api.github.com/repos/intel/PerfSpect/releases/215248743"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Info: 'branch protection settings apply to administrators' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Warn: codeowners review is not required on branch 'main'","Warn: no status checks found to merge onto branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating ubuntu:22.04 to ubuntu:22.04@sha256:1aa979d85661c488ce030ac292876cf6ed04535d3a237e49f61542d8e5de5ae0","Warn: containerImage not pinned by hash: builder/build.Dockerfile:14","Warn: containerImage not pinned by hash: tools/build.Dockerfile:10","Warn: containerImage not pinned by hash: tools/build.Dockerfile:47","Info:  16 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   5 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (28) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T18:59:24.388Z","repository_id":38320970,"created_at":"2025-08-19T18:59:24.389Z","updated_at":"2025-08-19T18:59:24.389Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28618863,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T23:49:58.628Z","status":"ssl_error","status_checked_at":"2026-01-20T23:47:29.996Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","cpu","intel","linux","metrics","micro-architecture","monitoring","observability","perf","performance","perfspect","power","profiling","telemetry","tma","tool","x86","xeon"],"created_at":"2026-01-21T00:02:09.122Z","updated_at":"2026-01-21T00:02:09.833Z","avatar_url":"https://github.com/intel.png","language":"Go","readme":"# Intel\u0026reg; PerfSpect\n\n[![Build](https://github.com/intel/PerfSpect/actions/workflows/build-test.yml/badge.svg)](https://github.com/intel/PerfSpect/actions/workflows/build-test.yml)[![CodeQL](https://github.com/intel/PerfSpect/actions/workflows/codeql.yml/badge.svg)](https://github.com/intel/PerfSpect/actions/workflows/codeql.yml)[![License](https://img.shields.io/badge/License-BSD--3-blue)](https://github.com/intel/PerfSpect/blob/master/LICENSE)\n\n[Getting PerfSpect](#getting-perfspect) | [Running PerfSpect](#running-perfspect) | [Building PerfSpect](#building-perfspect-from-source)\n\nIntel\u0026reg; PerfSpect is a command-line tool designed to help you analyze and optimize Linux servers and the software running on them. Whether you’re a system administrator, a developer, or a performance engineer, PerfSpect provides comprehensive insights and actionable recommendations to enhance performance and efficiency.\n\nWe welcome bug reports and enhancement requests, which can be submitted via the [Issues](https://github.com/intel/PerfSpect/issues) section on GitHub. For those interested in contributing to the code, please refer to the guidelines outlined in the [CONTRIBUTING.md](CONTRIBUTING.md) file.\n\n## Getting PerfSpect\n\nPre-built PerfSpect releases are available in the repository's [Releases](https://github.com/intel/PerfSpect/releases). Download and extract perfspect.tgz.\n\n```text\nwget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar -xvz\ncd perfspect\n```\n\n## Running PerfSpect\n\nPerfSpect includes a suite of commands designed to analyze and optimize both system and software performance.\n\n```text\nUsage:\n  perfspect [command] [flags]\n```\n\n### Commands\n\n| Command | Description |\n| ------- | ----------- |\n| [`metrics`](#metrics-command) | CPU core and uncore metrics |\n| [`report`](#report-command) | System configuration and health |\n| [`benchmark`](#benchmark-command) | Performance benchmarks |\n| [`telemetry`](#telemetry-command) | System telemetry |\n| [`flamegraph`](#flamegraph-command) | Software call-stacks as flamegraphs |\n| [`lock`](#lock-command) | Software hot spot, cache-to-cache and lock contention |\n| [`config`](#config-command) | Modify system configuration |\n\n\u003e [!TIP]\n\u003e Run `perfspect [command] -h` to view command-specific help text.\n\n#### Metrics Command\n\nThe `metrics` command generates reports containing CPU architectural performance characterization metrics in HTML and CSV formats. Run `perfspect metrics`.\n\n![screenshot of the TMAM page from the metrics command HTML report, provides a description of TMAM on the left and a pie chart showing the 1st and 2nd level TMAM metrics on the right](docs/metrics_html_tma.png)\n\n##### Live Metrics\n\nThe `metrics` command supports two modes -- default and \"live\". Default mode behaves as above -- metrics are collected and saved into report files for review.  The \"live\" mode prints the metrics to stdout where they can be viewed in the console and/or redirected into a file or observability pipeline. Run `perfspect metrics --live`.\n\n![screenshot of live CSV metrics in a text terminal](docs/metrics_live.png)\n\n##### Metrics Without Root Permissions\n\nIf neither sudo nor root access is available, an administrator must apply the following configuration to the target system(s):\n\n- sysctl -w kernel.perf_event_paranoid=0\n- sysctl -w kernel.nmi_watchdog=0\n- write '125' to all perf_event_mux_interval_ms files found under /sys/devices/*, for example, `for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 \u003e $i; done`\n\nOnce the configuration changes are applied, use the `--noroot` flag on the command line, for example, `perfspect metrics --noroot`.\n\n##### Refining Metrics to a Specific Time Range\n\nAfter collecting metrics, you can generate new summary reports for a specific time interval using the `metrics trim` subcommand. This is useful when you've collected metrics for an entire workload but want to analyze only a specific portion, excluding setup, teardown, or other unwanted phases.\n\nThe time range can be specified using either absolute timestamps (seconds since epoch) or relative offsets from the beginning/end of the data. At least one time parameter must be specified.\n\nThe trimmed CSV and HTML summary files will be placed in a new output directory. The output directory can be specified using the `--output` flag.\n\n**Examples:**\n\n```text\n# Skip the first 10 seconds and last 5 seconds\n$ ./perfspect metrics trim --input perfspect_2025-11-28_09-21-56 --start-offset 10 --end-offset 5\n\n# Use absolute timestamps (seconds since epoch)\n$ ./perfspect metrics trim --input perfspect_2025-11-28_09-21-56 --start-time 1764174327 --end-time 1764174351\n```\n\n##### Prometheus Endpoint\n\nThe `metrics` command can expose metrics via a Prometheus compatible `metrics` endpoint. This allows integration with Prometheus monitoring systems. To enable the Prometheus endpoint, use the `--prometheus-server` flag. By default, the endpoint listens on port 9090. The port can be changed using the `--prometheus-server-addr` flag. Run `perfspect metrics --prometheus-server`. See the [example daemonset](docs/perfspect-daemonset.md) for deploying in Kubernetes.\n\nSee `perfspect metrics -h` for the extensive set of options and examples.\n\n#### Report Command\n\nThe `report` command generates system configuration reports in a variety of formats. All categories of information are collected by default. See `perfspect report -h` for all options.\n\n![screenshot of a small section of the HTML report from the report command](docs/report_html.png)\n\nIt's possible to report a subset of information by providing command line options. Note that by specifying only the `txt` format, it is printed to stdout, as well as written to a report file.\n\n```text\n$ ./perfspect report --bios --format txt\nBIOS\n====\nVendor:       Intel Corporation\nVersion:      EGSDCRB1.SYS.1752.P05.2401050248\nRelease Date: 01/05/2024\n```\n\n#### Benchmark Command\n\nThe `benchmark` command runs performance micro-benchmarks to evaluate system health and performance characteristics. All benchmarks are run by default unless specific benchmarks are selected. A brief system summary is included in the output by default.\n\n\u003e [!IMPORTANT]\n\u003e Benchmarks should be run on idle systems to ensure accurate measurements and to avoid interfering with active workloads.\n\n**Examples:**\n\n```text\n./perfspect benchmark                  # Run all benchmarks with system summary\n./perfspect benchmark --speed --power  # Run specific benchmarks\n./perfspect benchmark --no-summary     # Exclude system summary from output\n```\n\nSee `perfspect benchmark -h` for all options.\n\n| Benchmark | Description |\n| --------- | ----------- |\n| speed | runs each [stress-ng](https://github.com/ColinIanKing/stress-ng) cpu-method for 1s each, reports the geo-metric mean of all results. |\n| power | runs stress-ng to load all cpus to 100% for 60s. Uses [turbostat](https://github.com/torvalds/linux/tree/master/tools/power/x86/turbostat) to measure power. |\n| temperature | runs the same micro benchmark as 'power', but extracts maximum temperature from turbostat output. |\n| frequency | runs [avx-turbo](https://github.com/travisdowns/avx-turbo) to measure scalar and AVX frequencies across processor's cores. **Note:** Runtime increases with core count. |\n| memory | runs [Intel(r) Memory Latency Checker](https://www.intel.com/content/www/us/en/download/736633/intel-memory-latency-checker-intel-mlc.html) (MLC) to measure memory bandwidth and latency across a load range. **Note: MLC is not included with PerfSpect.** It can be downloaded from [Intel Memory Latency Checker](https://www.intel.com/content/www/us/en/download/736633/intel-memory-latency-checker-intel-mlc.html). Once downloaded, extract the Linux executable and place it in the perfspect/tools/x86_64 directory. |\n| numa | runs Intel(r) Memory Latency Checker(MLC) to measure bandwidth between NUMA nodes. See Note above about downloading MLC. |\n| storage | runs [fio](https://github.com/axboe/fio) for 2 minutes across multiple I/O patterns to measure storage latency, IOPs, and bandwidth. Use --storage-dir to override the default location (/tmp). Minimum 32GB disk space required. |\n\n#### Telemetry Command\n\nThe `telemetry` command reports CPU utilization, instruction mix, disk stats, network stats, and more on the specified target(s). All telemetry types are collected by default. To choose telemetry types, see the additional command line options (`perfspect telemetry -h`).\n\n![screenshot of the CPU utilization chart from the HTML output of the telemetry command](docs/telemetry_html.png)\n\n#### Flamegraph Command\n\nSoftware flamegraphs are useful in diagnosing software performance bottlenecks. Run `perfspect flamegraph` to capture a system-wide software flamegraph.\n\n\u003e [!TIP]\n\u003e By default, flamegraphs are collected using the `cycles:P` event. To analyze different performance aspects, use the `--perf-event` flag to specify an alternative perf event (e.g., `cache-misses`, `instructions`, `branches`, `context-switches`, `mem-loads`, `mem-stores`, etc.).\n\n![screenshot of a flamegraph from the HTML output of the flamegraph command](docs/flamegraph.png)\n\n#### Lock Command\n\nAs systems contain more and more cores, it can be useful to analyze the Linux kernel lock overhead and potential false-sharing that impacts system scalability. Run `perfspect lock` to collect system-wide hot spot, cache-to-cache and lock contention information. Experienced performance engineers can analyze the collected information to identify bottlenecks.\n\n#### Config Command\n\nThe `config` command provides a method to view and change various system configuration parameters. Run `perfspect config -h` to view the parameters that can be modified.\n\n\u003e [!WARNING]\n\u003e Misconfiguring the system may cause it to stop functionining. In some cases, a reboot may be required to restore default settings.\n\nExample:\n\n```text\n$ ./perfspect config --cores 24 --llc 2.0 --uncore-max 1.8\n...\n```\n\n##### Recording Configuration\n\nThe current configuration can, optionally, be saved to a file using the `--record` flag. This creates a human-readable configuration file that can be used to restore settings later.\n\nExample:\n\n```text\n$ ./perfspect config --tdp 300 --record\nConfiguration recorded to: perfspect_2025-12-01_14-30-45/gnr_config.txt\n```\n\n##### Restoring Configuration\n\nThe `config restore` subcommand restores configuration from a previously recorded file. This is useful for reverting changes or applying a known-good configuration across multiple systems.\n\nExample:\n\n```text\n$ ./perfspect config restore perfspect_2025-12-01_14-30-45/gnr_config.txt\nConfiguration settings to restore from perfspect_2025-12-01_14-30-45/gnr_config.txt:\n  Cores per Socket    : 86\n  L3 Cache            : 336\n  Package Power / TDP : 350\n  ...\nApply these configuration changes? [y/N]: y\n...\n```\n\nUse the `--yes` flag to skip the confirmation prompt:\n\n```text\n./perfspect config restore perfspect_2025-12-01_14-30-45/gnr_config.txt --yes\n```\n\n\u003e [!TIP]\n\u003e The restore command works with remote targets too. Use `--target` or `--targets` to restore configuration on remote systems.\n\n### Common Command Options\n\n#### Local vs. Remote Targets\n\nBy default, PerfSpect targets the local host, that is, the host where PerfSpect is running. Remote systems can also be targeted if they are reachable via SSH from the local host.\n\n\u003e [!IMPORTANT]\n\u003e Ensure the remote user has password-less sudo access (or root privileges) to fully utilize PerfSpect's capabilities.\n\nTo target a single remote system with a pre-configured private key:\n\n```text\n./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey\n```\n\nTo target a single remote system with a password:\n\n```text\n./perfspect report --target 192.168.1.42 --user fred\nfred@192.168.1.42's password: ******\n```\n\nTo target more than one remote system, a YAML file with the necessary connection parameters is provided to PerfSpect. Refer to the example YAML file: [targets.yaml](targets.yaml).\n\n```text\n./perfspect report --targets mytargets.yaml\n```\n\n\u003e [!NOTE]\n\u003e All PerfSpect commands support remote targets, but some command options are limited to the local target.\n\n#### Output\n\n##### Logging\n\nBy default, PerfSpect writes to a log file (perfspect.log) in the user's current working directory. Optionally, PerfSpect can direct logs to the local system's syslog daemon.\n\n```text\n./perfspect metrics --syslog\n```\n\n##### Report Files\n\nBy default, PerfSpect creates a unique directory in the user's current working directory to store output files. Users can specify a custom output directory with the --output flag.\n\n```text\n./perfspect telemetry --output /home/elaine/perfspect/telemetry\n```\n\n## Building PerfSpect from Source\n\n\u003e [!TIP]\n\u003e Skip the build. Pre-built PerfSpect releases are available in the repository's [Releases](https://github.com/intel/PerfSpect/releases). Download and extract perfspect.tgz.\n\n### 1st Build\n\nUse `builder/build.sh` to build the dependencies and the application in Docker containers with the required build environments. Ensure Docker is properly configured on your build system before running the script.\n\n### Subsequent Builds\n\n`make` builds the app. It assumes the dependencies have been built previously and that you have Go installed on your development system. See [go.mod](go.mod) for the minimum Go version.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintel%2Fperfspect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintel%2Fperfspect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintel%2Fperfspect/lists"}