diff --git a/.circleci/config.yml b/.circleci/config.yml index 478aa310..f252027e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,10 +7,10 @@ executors: # should also be updated. golang: docker: - - image: cimg/go:1.24 + - image: cimg/go:1.26 arm: docker: - - image: cimg/go:1.24 + - image: cimg/go:1.26 resource_class: arm.medium jobs: @@ -70,7 +70,7 @@ jobs: machine: image: ubuntu-2404:current environment: - DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.24-base + DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.26-base REPO_PATH: github.com/prometheus/node_exporter steps: - prometheus/setup_environment diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 202ae236..c0b195d2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,3 +4,7 @@ updates: directory: "/" schedule: interval: "monthly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 2f314913..1a455901 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -13,11 +13,7 @@ permissions: env: GNU_TAR_VERSION: "1.35" - GO_VERSION_DRAGONFLY: "1.24.1" - GO_VERSION_FREEBSD: "123" - GO_VERSION_NETBSD: "1.24.1" - GO_VERSION_OPENBSD: "1.23.1" - GO_VERSION_SOLARIS: "1.24.1" + GO_VERSION: "1.26.0" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions jobs: @@ -26,12 +22,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/freebsd-vm@8873d98fd1413b5977cb2f7348fe329775159892 # v1.1.9 + uses: vmactions/freebsd-vm@c9f815bc7aa0d34c9fdd0619b034a32d6ca7b57e # v1.4.2 with: + release: "15.0" copyback: false - envs: 'GO_VERSION_FREEBSD GNU_TAR_VERSION' + envs: 'GO_VERSION GNU_TAR_VERSION' usesh: true prepare: | pkg update -f @@ -40,7 +37,6 @@ jobs: git \ gmake \ gnugrep \ - go${GO_VERSION_FREEBSD} \ gsed \ gtar \ python \ @@ -49,7 +45,12 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - ln -s $(which go${GO_VERSION_FREEBSD}) $(pwd)/bin/go + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.freebsd-${GOARCH}.tar.gz" + wget https://go.dev/dl/${GOGZ} + gtar xzf ${GOGZ} + ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed @@ -73,12 +74,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/openbsd-vm@7ac70b6de6f33efc74a90c1964afa3bcf0ee4401 # v1.1.6 + uses: vmactions/openbsd-vm@7fd5a3e251db9d8bdff2f34aae11a43b6be5ad60 # v1.2.4 with: copyback: false - envs: 'GO_VERSION_OPENBSD GNU_TAR_VERSION' + envs: 'GO_VERSION GNU_TAR_VERSION' usesh: true prepare: | pkg_add -u @@ -87,15 +88,20 @@ jobs: ggrep \ git \ gmake \ - go-${GO_VERSION_OPENBSD} \ gsed \ - gtar-${GNU_TAR_VERSION}p0-static \ + gtar-${GNU_TAR_VERSION}p1-static \ python \ wget run: | echo "::group::Setup prerequisites" set -eu mkdir bin + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.openbsd-${GOARCH}.tar.gz" + wget https://go.dev/dl/${GOGZ} + gtar xzf ${GOGZ} + ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed @@ -119,16 +125,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/netbsd-vm@46a58bbf03682b4cb24142b97fa315ae52bed573 # v1.1.8 + uses: vmactions/netbsd-vm@e04aec09540429f9cebb0e7941f7cd0c0fc3b44f # v1.3.6 with: copyback: false - envs: 'GO_VERSION_NETBSD GNU_TAR_VERSION' + envs: 'GO_VERSION GNU_TAR_VERSION' usesh: true prepare: | - /usr/sbin/pkg_add -u - /usr/sbin/pkg_add \ + /usr/sbin/pkg_add -u \ git \ gmake \ grep \ @@ -140,7 +145,9 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - GOGZ="go${GO_VERSION_NETBSD}.netbsd-amd64.tar.gz" + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.netbsd-${GOARCH}.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go @@ -167,12 +174,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/dragonflybsd-vm@e3c420e8a2362c2496fca6e76a291abd46f5d8e7 # v1.1.0 + uses: vmactions/dragonflybsd-vm@04601322b25fa8eb14f0394e46e1103084ea0199 # v1.2.6 with: copyback: false - envs: 'GO_VERSION_DRAGONFLY' + envs: 'GO_VERSION' usesh: true prepare: | pkg update && pkg upgrade -y @@ -189,7 +196,9 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - GOGZ="go${GO_VERSION_DRAGONFLY}.dragonfly-amd64.tar.gz" + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.dragonfly-${GOARCH}.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go @@ -217,15 +226,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/solaris-vm@cc8f82fa1a7cc746153ec3f71bf11f311f16e225 # v1.1.1 + uses: vmactions/solaris-vm@69d382b4a775b25ea5955e6c1730e9d05047ca0d # v1.3.1 with: copyback: false - envs: 'GO_VERSION_SOLARIS' + envs: 'GO_VERSION' usesh: true prepare: | - pkg update pkg install \ bash \ curl \ @@ -239,7 +247,9 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - GOGZ="go${GO_VERSION_SOLARIS}.solaris-amd64.tar.gz" + GOARCH=$(uname -m) + if [ "${GOARCH}" = "i86pc" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.solaris-${GOARCH}.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go @@ -272,11 +282,11 @@ jobs: echo "::endgroup::" test_macos: - name: Run end-to-end tests on macOS + name: Run end-to-end tests on Darwin/MacOS runs-on: macos-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Install dependencies run: | brew install \ @@ -287,13 +297,18 @@ jobs: make \ gnu-sed \ gnu-tar \ - go \ python3 - name: test-e2e run: | echo "::group::Setup prerequisites" set -eu mkdir bin + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.darwin-${GOARCH}.tar.gz" + wget https://go.dev/dl/${GOGZ} + gtar xzf ${GOGZ} + ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed @@ -309,5 +324,5 @@ jobs: echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) - make test-e2e + make test-e2e E2E_EXTRA_FLAGS='--collector.diskstats.device-include=disk[04]' echo "::endgroup::" diff --git a/.github/workflows/container_description.yml b/.github/workflows/container_description.yml index dcca16ff..d7b879f9 100644 --- a/.github/workflows/container_description.yml +++ b/.github/workflows/container_description.yml @@ -18,7 +18,9 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false - name: Set docker hub repo name run: echo "DOCKER_REPO_NAME=$(make docker-repo-name)" >> $GITHUB_ENV - name: Push README to Dockerhub @@ -40,7 +42,9 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false - name: Set quay.io org name run: echo "DOCKER_REPO=$(echo quay.io/${GITHUB_REPOSITORY_OWNER} | tr -d '-')" >> $GITHUB_ENV - name: Set quay.io repo name diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 5342cbe0..dc8ffd02 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -3,6 +3,7 @@ name: golangci-lint on: push: + branches: [main, master, 'release-*'] paths: - "go.sum" - "go.mod" @@ -10,6 +11,7 @@ on: - "scripts/errcheck_excludes.txt" - ".github/workflows/golangci-lint.yml" - ".golangci.yml" + tags: ['v*'] pull_request: permissions: # added using https://github.com/step-security/secure-repo @@ -24,16 +26,21 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false - name: Install Go - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 with: - go-version: 1.24.x + go-version: 1.26.x - name: Install snmp_exporter/generator dependencies run: sudo apt-get update && sudo apt-get -y install libsnmp-dev if: github.repository == 'prometheus/snmp_exporter' + - name: Get golangci-lint version + id: golangci-lint-version + run: echo "version=$(make print-golangci-lint-version)" >> $GITHUB_OUTPUT - name: Lint - uses: golangci/golangci-lint-action@55c2c1448f86e01eaae002a5a3a9624417608d84 # v6.5.2 + uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0 with: args: --verbose - version: v1.64.6 + version: ${{ steps.golangci-lint-version.outputs.version }} diff --git a/.golangci.yml b/.golangci.yml index 8731aefd..16bec0de 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,32 +1,44 @@ +version: "2" linters: enable: - depguard - - goimports - misspell - revive - -issues: - exclude-rules: - - path: _test.go - linters: - - errcheck - -linters-settings: - depguard: - rules: - no_exec_policy: - files: - - "!$test" - deny: - - pkg: "os/exec" - desc: "Using os/exec to run sub processes it not allowed by policy" - errcheck: - exclude-functions: + settings: + depguard: + rules: + no_exec_policy: + files: + - '!$test' + deny: + - pkg: os/exec + desc: Using os/exec to run sub processes it not allowed by policy + errcheck: # Used in HTTP handlers, any error is handled by the server itself. - - (net/http.ResponseWriter).Write - revive: + exclude-functions: + - (net/http.ResponseWriter).Write + revive: + rules: + - name: unused-parameter + severity: warning + disabled: true + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling rules: - # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter - - name: unused-parameter - severity: warning - disabled: true + - linters: + - errcheck + path: _test.go +formatters: + enable: + - goimports + exclusions: + generated: lax + settings: + goimports: + local-prefixes: + - github.com/prometheus/node_exporter diff --git a/.promu-cgo.yml b/.promu-cgo.yml index 7ce1b201..aa40105c 100644 --- a/.promu-cgo.yml +++ b/.promu-cgo.yml @@ -1,7 +1,7 @@ go: # Whenever the Go version is updated here, .circle/config.yml and # .promu.yml should also be updated. - version: 1.24 + version: 1.25 cgo: true repository: path: github.com/prometheus/node_exporter diff --git a/.promu.yml b/.promu.yml index b38799f8..d0d602b6 100644 --- a/.promu.yml +++ b/.promu.yml @@ -1,7 +1,7 @@ go: # Whenever the Go version is updated here, .circle/config.yml and # .promu-cgo.yml should also be updated. - version: 1.24 + version: 1.26 repository: path: github.com/prometheus/node_exporter build: diff --git a/.yamllint b/.yamllint index 8d09c375..b329f464 100644 --- a/.yamllint +++ b/.yamllint @@ -2,6 +2,7 @@ extends: default ignore: | **/node_modules + web/api/v1/testdata/openapi_*_golden.yaml rules: braces: diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a39ddaa..e4e07db7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,44 @@ * [ENHANCEMENT] * [BUGFIX] +## 1.10.2 / 2025-10-25 + +* [BUGFIX] meminfo: Fix typo in Zswap metric name #3455 + +## 1.10.1 / 2025-10-25 + +* [BUGFIX] filesystem: Fix mount points being collected multiple times #3376 +* [BUGFIX] filesystem: Refactor mountinfo parsing #3452 +* [BUGFIX] meminfo: Add Zswap/Zswapped metrics #3453 + +## 1.10.0 / 2025-10-24 + +* [CHANGE] mdadm: Use sysfs for RAID metrics #3031 +* [CHANGE] filesystem: Add erofs in default excluded fs #3313 +* [CHANGE] tcpstat: Use std lib binary.NativeEndian #3386 +* [FEATURE] pcidevice: Add new collector for PCIe devices #3339 +* [FEATURE] AIX: Add more metrics #3338 +* [FEATURE] systemd: Add Virtualization metrics #3254 +* [FEATURE] swaps: Add new collector #3428 +* [ENHANCEMENT] wifi: Add packet received and transmitted metrics #3382 +* [ENHANCEMENT] filesystem: Take super options into account for read-only #3387 +* [ENHANCEMENT] pcidevice: Add additional metrics #3425 +* [ENHANCEMENT] perf: Add `tlb_data` metrics #3436 +* [BUGFIX] interrupts: Fix OpenBSD interrupt device parsing #3288 +* [BUGFIX] diskstats: Simplify condition #3290 +* [BUGFIX] thermal: Sanitize darwin thermal strings #3294 +* [BUGFIX] filesystem: Fix Darwin collector cgo memory leak #3315 +* [BUGFIX] cpufreq: Fix: collector enable #3318 +* [BUGFIX] ethtool: Fix returning 0 for sanitized metrics #3335 +* [BUGFIX] netdev: Fix Darwin netdev i/o bytes metric #3336 +* [BUGFIX] systemd: Fix logging race #3364 +* [BUGFIX] filesystem: Fix duplicate Darwin CGO import #3391 + +## 1.9.1 / 2025-04-01 + +* [BUGFIX] pressure: Fix missing IRQ on older kernels #3263 +* [BUGFIX] Fix Darwin memory leak #3277 + ## 1.9.0 / 2025-02-17 * [CHANGE] meminfo: Convert linux implementation to use procfs lib #3049 diff --git a/Makefile b/Makefile index 0b2ff6f2..f280cfbb 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,7 @@ include Makefile.common PROMTOOL_VERSION ?= 2.30.0 PROMTOOL_URL ?= https://github.com/prometheus/prometheus/releases/download/v$(PROMTOOL_VERSION)/prometheus-$(PROMTOOL_VERSION).$(GO_BUILD_PLATFORM).tar.gz PROMTOOL ?= $(FIRST_GOPATH)/bin/promtool +E2E_EXTRA_FLAGS ?= DOCKER_IMAGE_NAME ?= node-exporter MACH ?= $(shell uname -m) @@ -121,7 +122,7 @@ tools: .PHONY: test-e2e test-e2e: build collector/fixtures/sys/.unpacked collector/fixtures/udev/.unpacked tools @echo ">> running end-to-end tests" - ./end-to-end-test.sh + ./end-to-end-test.sh -e "$(E2E_EXTRA_FLAGS)" .PHONY: skip-test-e2e skip-test-e2e: diff --git a/Makefile.common b/Makefile.common index 8cb38385..cce3ef1d 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1,4 +1,4 @@ -# Copyright 2018 The Prometheus Authors +# Copyright The Prometheus Authors # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -55,13 +55,14 @@ ifneq ($(shell command -v gotestsum 2> /dev/null),) endif endif -PROMU_VERSION ?= 0.17.0 +PROMU_VERSION ?= 0.18.0 PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v1.64.6 +GOLANGCI_LINT_VERSION ?= v2.10.1 +GOLANGCI_FMT_OPTS ?= # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) @@ -81,11 +82,50 @@ endif PREFIX ?= $(shell pwd) BIN_DIR ?= $(shell pwd) DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) -DOCKERFILE_PATH ?= ./Dockerfile DOCKERBUILD_CONTEXT ?= ./ DOCKER_REPO ?= prom +# Check if deprecated DOCKERFILE_PATH is set +ifdef DOCKERFILE_PATH +$(error DOCKERFILE_PATH is deprecated. Use DOCKERFILE_VARIANTS ?= $(DOCKERFILE_PATH) in the Makefile) +endif + DOCKER_ARCHS ?= amd64 +DOCKERFILE_VARIANTS ?= Dockerfile $(wildcard Dockerfile.*) + +# Function to extract variant from Dockerfile label. +# Returns the variant name from io.prometheus.image.variant label, or "default" if not found. +define dockerfile_variant +$(strip $(or $(shell sed -n 's/.*io\.prometheus\.image\.variant="\([^"]*\)".*/\1/p' $(1)),default)) +endef + +# Check for duplicate variant names (including default for Dockerfiles without labels). +DOCKERFILE_VARIANT_NAMES := $(foreach df,$(DOCKERFILE_VARIANTS),$(call dockerfile_variant,$(df))) +DOCKERFILE_VARIANT_NAMES_SORTED := $(sort $(DOCKERFILE_VARIANT_NAMES)) +ifneq ($(words $(DOCKERFILE_VARIANT_NAMES)),$(words $(DOCKERFILE_VARIANT_NAMES_SORTED))) +$(error Duplicate variant names found. Each Dockerfile must have a unique io.prometheus.image.variant label, and only one can be without a label (default)) +endif + +# Build variant:dockerfile pairs for shell iteration. +DOCKERFILE_VARIANTS_WITH_NAMES := $(foreach df,$(DOCKERFILE_VARIANTS),$(call dockerfile_variant,$(df)):$(df)) + +# Shell helper to check whether a dockerfile/arch pair is excluded. +define dockerfile_arch_is_excluded +case " $(DOCKERFILE_ARCH_EXCLUSIONS) " in \ + *" $$dockerfile:$(1) "*) true ;; \ + *) false ;; \ +esac +endef + +# Shell helper to check whether a registry/arch pair is excluded. +# Extracts registry from DOCKER_REPO (e.g., quay.io/prometheus -> quay.io) +define registry_arch_is_excluded +registry=$$(echo "$(DOCKER_REPO)" | cut -d'/' -f1); \ +case " $(DOCKER_REGISTRY_ARCH_EXCLUSIONS) " in \ + *" $$registry:$(1) "*) true ;; \ + *) false ;; \ +esac +endef BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS)) PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS)) @@ -111,7 +151,7 @@ common-all: precheck style check_license lint yamllint unused build test .PHONY: common-style common-style: @echo ">> checking code style" - @fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \ + @fmtRes=$$($(GOFMT) -d $$(git ls-files '*.go' ':!:vendor/*' || find . -path ./vendor -prune -o -name '*.go' -print)); \ if [ -n "$${fmtRes}" ]; then \ echo "gofmt checking failed!"; echo "$${fmtRes}"; echo; \ echo "Please ensure you are using $$($(GO) version) for formatting code."; \ @@ -121,13 +161,19 @@ common-style: .PHONY: common-check_license common-check_license: @echo ">> checking license header" - @licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \ + @licRes=$$(for file in $$(git ls-files '*.go' ':!:vendor/*' || find . -path ./vendor -prune -o -type f -iname '*.go' -print) ; do \ awk 'NR<=3' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \ done); \ if [ -n "$${licRes}" ]; then \ echo "license header checking failed:"; echo "$${licRes}"; \ exit 1; \ fi + @echo ">> checking for copyright years 2026 or later" + @futureYearRes=$$(git grep -E 'Copyright (202[6-9]|20[3-9][0-9])' -- '*.go' ':!:vendor/*' || true); \ + if [ -n "$${futureYearRes}" ]; then \ + echo "Files with copyright year 2026 or later found (should use 'Copyright The Prometheus Authors'):"; echo "$${futureYearRes}"; \ + exit 1; \ + fi .PHONY: common-deps common-deps: @@ -138,7 +184,7 @@ common-deps: update-go-deps: @echo ">> updating Go dependencies" @for m in $$($(GO) list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \ - $(GO) get -d $$m; \ + $(GO) get $$m; \ done $(GO) mod tidy @@ -156,9 +202,13 @@ $(GOTEST_DIR): @mkdir -p $@ .PHONY: common-format -common-format: +common-format: $(GOLANGCI_LINT) @echo ">> formatting code" $(GO) fmt $(pkgs) +ifdef GOLANGCI_LINT + @echo ">> formatting code with golangci-lint" + $(GOLANGCI_LINT) fmt $(GOLANGCI_FMT_OPTS) +endif .PHONY: common-vet common-vet: @@ -215,28 +265,194 @@ common-docker-repo-name: .PHONY: common-docker $(BUILD_DOCKER_ARCHS) common-docker: $(BUILD_DOCKER_ARCHS) $(BUILD_DOCKER_ARCHS): common-docker-%: - docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" \ - -f $(DOCKERFILE_PATH) \ - --build-arg ARCH="$*" \ - --build-arg OS="linux" \ - $(DOCKERBUILD_CONTEXT) + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + if $(call dockerfile_arch_is_excluded,$*); then \ + echo "Skipping $$variant_name variant for linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + distroless_arch="$*"; \ + if [ "$*" = "armv7" ]; then \ + distroless_arch="arm"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Building default variant ($$variant_name) for linux-$* using $$dockerfile"; \ + docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" \ + -f $$dockerfile \ + --build-arg ARCH="$*" \ + --build-arg OS="linux" \ + --build-arg DISTROLESS_ARCH="$$distroless_arch" \ + $(DOCKERBUILD_CONTEXT); \ + if [ "$$variant_name" != "default" ]; then \ + echo "Tagging default variant with $$variant_name suffix"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" \ + "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + fi; \ + else \ + echo "Building $$variant_name variant for linux-$* using $$dockerfile"; \ + docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" \ + -f $$dockerfile \ + --build-arg ARCH="$*" \ + --build-arg OS="linux" \ + --build-arg DISTROLESS_ARCH="$$distroless_arch" \ + $(DOCKERBUILD_CONTEXT); \ + fi; \ + done .PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS) common-docker-publish: $(PUBLISH_DOCKER_ARCHS) $(PUBLISH_DOCKER_ARCHS): common-docker-publish-%: - docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + if $(call dockerfile_arch_is_excluded,$*); then \ + echo "Skipping push for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$*); then \ + echo "Skipping push for $$variant_name variant on linux-$* to $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Pushing $$variant_name variant for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Pushing default variant ($$variant_name) for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)"; \ + fi; \ + if [ "$(DOCKER_IMAGE_TAG)" = "latest" ]; then \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Pushing $$variant_name variant version tags for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Pushing default variant version tag for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)"; \ + fi; \ + fi; \ + done DOCKER_MAJOR_VERSION_TAG = $(firstword $(subst ., ,$(shell cat VERSION))) .PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS) common-docker-tag-latest: $(TAG_DOCKER_ARCHS) $(TAG_DOCKER_ARCHS): common-docker-tag-latest-%: - docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest" - docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)" + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + if $(call dockerfile_arch_is_excluded,$*); then \ + echo "Skipping tag for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$*); then \ + echo "Skipping tag for $$variant_name variant on linux-$* for $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Tagging $$variant_name variant for linux-$* as latest"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest-$$variant_name"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Tagging default variant ($$variant_name) for linux-$* as latest"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)"; \ + fi; \ + done .PHONY: common-docker-manifest common-docker-manifest: - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)) - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Creating manifest for $$variant_name variant"; \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping manifest for $$variant_name variant (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" $$refs; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Creating default variant ($$variant_name) manifest"; \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping default variant manifest (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $$refs; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)"; \ + fi; \ + if [ "$(DOCKER_IMAGE_TAG)" = "latest" ]; then \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Creating manifest for $$variant_name variant version tag"; \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping version-tag manifest for $$variant_name variant (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name" $$refs; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Creating default variant version tag manifest"; \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping default variant version-tag manifest (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)" $$refs; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)"; \ + fi; \ + fi; \ + done .PHONY: promu promu: $(PROMU) @@ -248,8 +464,8 @@ $(PROMU): cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu rm -r $(PROMU_TMP) -.PHONY: proto -proto: +.PHONY: common-proto +common-proto: @echo ">> generating code from proto files" @./scripts/genproto.sh @@ -261,6 +477,10 @@ $(GOLANGCI_LINT): | sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION) endif +.PHONY: common-print-golangci-lint-version +common-print-golangci-lint-version: + @echo $(GOLANGCI_LINT_VERSION) + .PHONY: precheck precheck:: diff --git a/README.md b/README.md index a871dc88..914e90fc 100644 --- a/README.md +++ b/README.md @@ -195,6 +195,7 @@ drm | Expose GPU metrics using sysfs / DRM, `amdgpu` is the only driver which ex drbd | Exposes Distributed Replicated Block Device statistics (to version 8.4) | Linux ethtool | Exposes network interface information and network driver statistics equivalent to `ethtool`, `ethtool -S`, and `ethtool -i`. | Linux interrupts | Exposes detailed interrupts statistics. | Linux, OpenBSD +kernel_hung | Exposes number of tasks that have been detected as hung from `/proc/sys/kernel/hung_task_detect_count`. | Linux ksmd | Exposes kernel and system statistics from `/sys/kernel/mm/ksm`. | Linux lnstat | Exposes stats from `/proc/net/stat/`. | Linux logind | Exposes session counts from [logind](http://www.freedesktop.org/wiki/Software/systemd/logind/). | Linux @@ -208,6 +209,7 @@ qdisc | Exposes [queuing discipline](https://en.wikipedia.org/wiki/Network_sched slabinfo | Exposes slab statistics from `/proc/slabinfo`. Note that permission of `/proc/slabinfo` is usually 0400, so set it appropriately. | Linux softirqs | Exposes detailed softirq statistics from `/proc/softirqs`. | Linux sysctl | Expose sysctl values from `/proc/sys`. Use `--collector.sysctl.include(-info)` to configure. | Linux +swap | Expose swap information from `/proc/swaps`. | Linux systemd | Exposes service and system status from [systemd](http://www.freedesktop.org/wiki/Software/systemd/). | Linux tcpstat | Exposes TCP connection status information from `/proc/net/tcp` and `/proc/net/tcp6`. (Warning: the current version has potential performance issues in high load situations.) | Linux wifi | Exposes WiFi device and station statistics. | Linux diff --git a/VERSION b/VERSION index f8e233b2..5ad2491c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.0 +1.10.2 diff --git a/collector/arp_linux.go b/collector/arp_linux.go index e1ba52c8..c3d47151 100644 --- a/collector/arp_linux.go +++ b/collector/arp_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noarp -// +build !noarp package collector diff --git a/collector/bcache_linux.go b/collector/bcache_linux.go index 97064e21..90366cc3 100644 --- a/collector/bcache_linux.go +++ b/collector/bcache_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobcache -// +build !nobcache package collector diff --git a/collector/bcachefs_linux.go b/collector/bcachefs_linux.go new file mode 100644 index 00000000..08aa47b2 --- /dev/null +++ b/collector/bcachefs_linux.go @@ -0,0 +1,275 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !nobcachefs + +package collector + +import ( + "fmt" + "log/slog" + "os" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/procfs/bcachefs" +) + +const subsystem = "bcachefs" + +var ( + bcachefsInfoDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "info"), + "Filesystem information.", + []string{"uuid"}, + nil, + ) + bcachefsBtreeCacheSizeBytes = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "btree_cache_size_bytes"), + "Btree cache memory usage in bytes.", + []string{"uuid"}, + nil, + ) + bcachefsCompressionCompressedBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "compression_compressed_bytes"), + "Compressed size by algorithm.", + []string{"uuid", "algorithm"}, + nil, + ) + bcachefsCompressionUncompressedBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "compression_uncompressed_bytes"), + "Uncompressed size by algorithm.", + []string{"uuid", "algorithm"}, + nil, + ) + bcachefsErrorsTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "errors_total"), + "Error count by error type.", + []string{"uuid", "error_type"}, + nil, + ) + bcachefsBtreeWritesTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "btree_writes_total"), + "Number of btree writes by type.", + []string{"uuid", "type"}, + nil, + ) + bcachefsBtreeWriteAverageSizeBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "btree_write_average_size_bytes"), + "Average btree write size by type.", + []string{"uuid", "type"}, + nil, + ) + bcachefsDeviceInfoDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_info"), + "Device information.", + []string{"uuid", "device", "label", "state"}, + nil, + ) + bcachefsDeviceBucketSizeBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_bucket_size_bytes"), + "Bucket size in bytes.", + []string{"uuid", "device"}, + nil, + ) + bcachefsDeviceBucketsDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_buckets"), + "Total number of buckets.", + []string{"uuid", "device"}, + nil, + ) + bcachefsDeviceDurabilityDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_durability"), + "Device durability setting.", + []string{"uuid", "device"}, + nil, + ) + bcachefsDeviceIODoneBytesTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_io_done_bytes_total"), + "IO bytes by operation type and data type.", + []string{"uuid", "device", "operation", "data_type"}, + nil, + ) + bcachefsDeviceIOErrorsTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_io_errors_total"), + "IO errors by error type.", + []string{"uuid", "device", "type"}, + nil, + ) +) + +func init() { + registerCollector(subsystem, defaultEnabled, NewBcachefsCollector) +} + +// bcachefsCollector collects metrics from bcachefs filesystems. +type bcachefsCollector struct { + fs bcachefs.FS + logger *slog.Logger +} + +// NewBcachefsCollector returns a new Collector exposing bcachefs statistics. +func NewBcachefsCollector(logger *slog.Logger) (Collector, error) { + fs, err := bcachefs.NewFS(*sysPath) + if err != nil { + return nil, fmt.Errorf("failed to open sysfs: %w", err) + } + + return &bcachefsCollector{ + fs: fs, + logger: logger, + }, nil +} + +// Update retrieves and exports bcachefs statistics. +func (c *bcachefsCollector) Update(ch chan<- prometheus.Metric) error { + stats, err := c.fs.Stats() + if err != nil { + if os.IsNotExist(err) { + c.logger.Debug("bcachefs sysfs path does not exist", "path", sysFilePath("fs/bcachefs")) + return ErrNoData + } + return fmt.Errorf("failed to retrieve bcachefs stats: %w", err) + } + + if len(stats) == 0 { + return ErrNoData + } + + for _, s := range stats { + uuid := s.UUID + + ch <- prometheus.MustNewConstMetric( + bcachefsInfoDesc, + prometheus.GaugeValue, + 1, + uuid, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsBtreeCacheSizeBytes, + prometheus.GaugeValue, + float64(s.BtreeCacheSizeBytes), + uuid, + ) + + for algorithm, comp := range s.Compression { + ch <- prometheus.MustNewConstMetric( + bcachefsCompressionCompressedBytesDesc, + prometheus.GaugeValue, + float64(comp.CompressedBytes), + uuid, algorithm, + ) + ch <- prometheus.MustNewConstMetric( + bcachefsCompressionUncompressedBytesDesc, + prometheus.GaugeValue, + float64(comp.UncompressedBytes), + uuid, algorithm, + ) + } + + for errorType, errStats := range s.Errors { + ch <- prometheus.MustNewConstMetric( + bcachefsErrorsTotalDesc, + prometheus.CounterValue, + float64(errStats.Count), + uuid, errorType, + ) + } + + for counterName, counterStats := range s.Counters { + metricName := SanitizeMetricName(counterName) + "_total" + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, metricName), + fmt.Sprintf("Bcachefs counter %s since filesystem creation.", counterName), + []string{"uuid"}, + nil, + ), + prometheus.CounterValue, + float64(counterStats.SinceFilesystemCreation), + uuid, + ) + } + + for writeType, writeStats := range s.BtreeWrites { + ch <- prometheus.MustNewConstMetric( + bcachefsBtreeWritesTotalDesc, + prometheus.CounterValue, + float64(writeStats.Count), + uuid, writeType, + ) + ch <- prometheus.MustNewConstMetric( + bcachefsBtreeWriteAverageSizeBytesDesc, + prometheus.GaugeValue, + float64(writeStats.SizeBytes), + uuid, writeType, + ) + } + + for device, devStats := range s.Devices { + if devStats == nil { + continue + } + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceInfoDesc, + prometheus.GaugeValue, + 1, + uuid, device, devStats.Label, devStats.State, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceBucketSizeBytesDesc, + prometheus.GaugeValue, + float64(devStats.BucketSizeBytes), + uuid, device, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceBucketsDesc, + prometheus.GaugeValue, + float64(devStats.Buckets), + uuid, device, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceDurabilityDesc, + prometheus.GaugeValue, + float64(devStats.Durability), + uuid, device, + ) + + for op, dataTypes := range devStats.IODone { + for dataType, value := range dataTypes { + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceIODoneBytesTotalDesc, + prometheus.CounterValue, + float64(value), + uuid, device, op, dataType, + ) + } + } + + for errorType, value := range devStats.IOErrors { + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceIOErrorsTotalDesc, + prometheus.CounterValue, + float64(value), + uuid, device, errorType, + ) + } + } + } + + return nil +} diff --git a/collector/bonding_linux.go b/collector/bonding_linux.go index bfec32fd..a1e0a987 100644 --- a/collector/bonding_linux.go +++ b/collector/bonding_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobonding -// +build !nobonding package collector @@ -78,13 +77,13 @@ func readBondingStats(root string) (status map[string][2]int, err error) { if err != nil { return nil, err } - for _, master := range strings.Fields(string(masters)) { + for master := range strings.FieldsSeq(string(masters)) { slaves, err := os.ReadFile(filepath.Join(root, master, "bonding", "slaves")) if err != nil { return nil, err } sstat := [2]int{0, 0} - for _, slave := range strings.Fields(string(slaves)) { + for slave := range strings.FieldsSeq(string(slaves)) { state, err := os.ReadFile(filepath.Join(root, master, fmt.Sprintf("lower_%s", slave), "bonding_slave", "mii_status")) if errors.Is(err, os.ErrNotExist) { // some older? kernels use slave_ prefix diff --git a/collector/bonding_linux_test.go b/collector/bonding_linux_test.go index 98af73fa..87481922 100644 --- a/collector/bonding_linux_test.go +++ b/collector/bonding_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobonding -// +build !nobonding package collector diff --git a/collector/boot_time_bsd.go b/collector/boot_time_bsd.go index d632fef0..fe1ddcac 100644 --- a/collector/boot_time_bsd.go +++ b/collector/boot_time_bsd.go @@ -12,15 +12,14 @@ // limitations under the License. //go:build (freebsd || dragonfly || openbsd || netbsd || darwin) && !noboottime -// +build freebsd dragonfly openbsd netbsd darwin -// +build !noboottime package collector import ( + "log/slog" + "github.com/prometheus/client_golang/prometheus" "golang.org/x/sys/unix" - "log/slog" ) type bootTimeCollector struct { diff --git a/collector/boot_time_solaris.go b/collector/boot_time_solaris.go index 4c336fb3..4b2ef457 100644 --- a/collector/boot_time_solaris.go +++ b/collector/boot_time_solaris.go @@ -12,14 +12,14 @@ // limitations under the License. //go:build !noboottime -// +build !noboottime package collector import ( + "log/slog" + "github.com/illumos/go-kstat" "github.com/prometheus/client_golang/prometheus" - "log/slog" ) type bootTimeCollector struct { diff --git a/collector/btrfs_linux.go b/collector/btrfs_linux.go index acb7e64c..bc6fb604 100644 --- a/collector/btrfs_linux.go +++ b/collector/btrfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobtrfs -// +build !nobtrfs package collector diff --git a/collector/btrfs_linux_test.go b/collector/btrfs_linux_test.go index c2ed57e5..7be7bc39 100644 --- a/collector/btrfs_linux_test.go +++ b/collector/btrfs_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobtrfs -// +build !nobtrfs package collector diff --git a/collector/buddyinfo.go b/collector/buddyinfo.go index 62392b96..e0b54fb3 100644 --- a/collector/buddyinfo.go +++ b/collector/buddyinfo.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobuddyinfo && !netbsd -// +build !nobuddyinfo,!netbsd package collector diff --git a/collector/cgroups_linux.go b/collector/cgroups_linux.go index 2a4e288e..f8da892e 100644 --- a/collector/cgroups_linux.go +++ b/collector/cgroups_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nostat -// +build !nostat package collector diff --git a/collector/collector.go b/collector/collector.go index 9768fb6a..18ff7388 100644 --- a/collector/collector.go +++ b/collector/collector.go @@ -199,7 +199,7 @@ func IsNoDataError(err error) bool { } // pushMetric helps construct and convert a variety of value types into Prometheus float64 metrics. -func pushMetric(ch chan<- prometheus.Metric, fieldDesc *prometheus.Desc, name string, value interface{}, valueType prometheus.ValueType, labelValues ...string) { +func pushMetric(ch chan<- prometheus.Metric, fieldDesc *prometheus.Desc, name string, value any, valueType prometheus.ValueType, labelValues ...string) { var fVal float64 switch val := value.(type) { case uint8: diff --git a/collector/conntrack_linux.go b/collector/conntrack_linux.go index 309857c7..376ab05a 100644 --- a/collector/conntrack_linux.go +++ b/collector/conntrack_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noconntrack -// +build !noconntrack package collector diff --git a/collector/cpu_aix.go b/collector/cpu_aix.go index 017e1a0c..1368f1b3 100644 --- a/collector/cpu_aix.go +++ b/collector/cpu_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_common.go b/collector/cpu_common.go index 6f644516..cb34facb 100644 --- a/collector/cpu_common.go +++ b/collector/cpu_common.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_darwin.go b/collector/cpu_darwin.go index 31b11702..e4e312ae 100644 --- a/collector/cpu_darwin.go +++ b/collector/cpu_darwin.go @@ -15,7 +15,6 @@ // BSD. See https://github.com/shirou/gopsutil/blob/master/LICENSE for details. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_dragonfly.go b/collector/cpu_dragonfly.go index c53aaef0..3571f436 100644 --- a/collector/cpu_dragonfly.go +++ b/collector/cpu_dragonfly.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_dragonfly_test.go b/collector/cpu_dragonfly_test.go index 31f55c2e..c5d006fa 100644 --- a/collector/cpu_dragonfly_test.go +++ b/collector/cpu_dragonfly_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_freebsd.go b/collector/cpu_freebsd.go index 39b01185..6532029e 100644 --- a/collector/cpu_freebsd.go +++ b/collector/cpu_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_linux.go b/collector/cpu_linux.go index 078a4611..30fe305a 100644 --- a/collector/cpu_linux.go +++ b/collector/cpu_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector @@ -20,6 +19,7 @@ import ( "errors" "fmt" "log/slog" + "maps" "os" "path/filepath" "regexp" @@ -27,8 +27,6 @@ import ( "strconv" "sync" - "golang.org/x/exp/maps" - "github.com/alecthomas/kingpin/v2" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/procfs" @@ -89,7 +87,7 @@ func NewCPUCollector(logger *slog.Logger) (Collector, error) { if !os.IsNotExist(err) { return nil, fmt.Errorf("unable to get isolated cpus: %w", err) } - logger.Debug("Could not open isolated file", "error", err) + logger.Debug("couldn't open isolated file", "error", err) } c := &cpuCollector{ @@ -224,7 +222,7 @@ func (c *cpuCollector) updateInfo(ch chan<- prometheus.Metric) error { cpuFreqEnabled, ok := collectorState["cpufreq"] if !ok || cpuFreqEnabled == nil { c.logger.Debug("cpufreq key missing or nil value in collectorState map") - } else if !*cpuFreqEnabled { + } else if *cpuFreqEnabled { for _, cpu := range info { ch <- prometheus.MustNewConstMetric(c.cpuFrequencyHz, prometheus.GaugeValue, @@ -489,7 +487,7 @@ func (c *cpuCollector) updateCPUStats(newStats map[int64]procfs.CPUStat) { // Remove offline CPUs. if len(newStats) != len(c.cpuStats) { - onlineCPUIds := maps.Keys(newStats) + onlineCPUIds := slices.Collect(maps.Keys(newStats)) maps.DeleteFunc(c.cpuStats, func(key int64, item procfs.CPUStat) bool { return !slices.Contains(onlineCPUIds, key) }) diff --git a/collector/cpu_linux_test.go b/collector/cpu_linux_test.go index 158ae8ff..6d4bc450 100644 --- a/collector/cpu_linux_test.go +++ b/collector/cpu_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_netbsd.go b/collector/cpu_netbsd.go index 459365d6..49051a6e 100644 --- a/collector/cpu_netbsd.go +++ b/collector/cpu_netbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_netbsd_test.go b/collector/cpu_netbsd_test.go index 08498d52..4a872bff 100644 --- a/collector/cpu_netbsd_test.go +++ b/collector/cpu_netbsd_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_openbsd.go b/collector/cpu_openbsd.go index 2d59f547..2c8ce9a8 100644 --- a/collector/cpu_openbsd.go +++ b/collector/cpu_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_solaris.go b/collector/cpu_solaris.go index 550ba374..471d29f0 100644 --- a/collector/cpu_solaris.go +++ b/collector/cpu_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpufreq_common.go b/collector/cpufreq_common.go index e1eda589..4cd17808 100644 --- a/collector/cpufreq_common.go +++ b/collector/cpufreq_common.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpufreq_linux.go b/collector/cpufreq_linux.go index 79e2308c..725e64e0 100644 --- a/collector/cpufreq_linux.go +++ b/collector/cpufreq_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector @@ -106,8 +105,8 @@ func (c *cpuFreqCollector) Update(ch chan<- prometheus.Metric) error { ) } if stats.Governor != "" { - availableGovernors := strings.Split(stats.AvailableGovernors, " ") - for _, g := range availableGovernors { + availableGovernors := strings.SplitSeq(stats.AvailableGovernors, " ") + for g := range availableGovernors { state := 0 if g == stats.Governor { state = 1 diff --git a/collector/cpufreq_solaris.go b/collector/cpufreq_solaris.go index c13703e1..41826a99 100644 --- a/collector/cpufreq_solaris.go +++ b/collector/cpufreq_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/devstat_dragonfly.go b/collector/devstat_dragonfly.go index b1796860..28cc5228 100644 --- a/collector/devstat_dragonfly.go +++ b/collector/devstat_dragonfly.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodevstat -// +build !nodevstat package collector diff --git a/collector/devstat_freebsd.go b/collector/devstat_freebsd.go index a9d42720..0c8a11c9 100644 --- a/collector/devstat_freebsd.go +++ b/collector/devstat_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodevstat -// +build !nodevstat package collector diff --git a/collector/diskstats_aix.go b/collector/diskstats_aix.go index 4ad39ff3..f77eef06 100644 --- a/collector/diskstats_aix.go +++ b/collector/diskstats_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/diskstats_common.go b/collector/diskstats_common.go index 593d0558..c930ca48 100644 --- a/collector/diskstats_common.go +++ b/collector/diskstats_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nodiskstats && (openbsd || linux || darwin || aix) -// +build !nodiskstats -// +build openbsd linux darwin aix package collector diff --git a/collector/diskstats_darwin.go b/collector/diskstats_darwin.go index 98052fe7..abcf8540 100644 --- a/collector/diskstats_darwin.go +++ b/collector/diskstats_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/diskstats_linux.go b/collector/diskstats_linux.go index ad6ff3cb..daca55d9 100644 --- a/collector/diskstats_linux.go +++ b/collector/diskstats_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector @@ -60,30 +59,22 @@ const ( udevIDModel = "ID_MODEL" udevIDPath = "ID_PATH" udevIDRevision = "ID_REVISION" + udevIDSerial = "ID_SERIAL" udevIDSerialShort = "ID_SERIAL_SHORT" udevIDWWN = "ID_WWN" udevSCSIIdentSerial = "SCSI_IDENT_SERIAL" ) -type typedFactorDesc struct { - desc *prometheus.Desc - valueType prometheus.ValueType -} - type udevInfo map[string]string -func (d *typedFactorDesc) mustNewConstMetric(value float64, labels ...string) prometheus.Metric { - return prometheus.MustNewConstMetric(d.desc, d.valueType, value, labels...) -} - type diskstatsCollector struct { deviceFilter deviceFilter fs blockdevice.FS - infoDesc typedFactorDesc - descs []typedFactorDesc - filesystemInfoDesc typedFactorDesc - deviceMapperInfoDesc typedFactorDesc - ataDescs map[string]typedFactorDesc + infoDesc typedDesc + descs []typedDesc + filesystemInfoDesc typedDesc + deviceMapperInfoDesc typedDesc + ataDescs map[string]typedDesc logger *slog.Logger getUdevDeviceProperties func(uint32, uint32) (udevInfo, error) } @@ -109,14 +100,14 @@ func NewDiskstatsCollector(logger *slog.Logger) (Collector, error) { collector := diskstatsCollector{ deviceFilter: deviceFilter, fs: fs, - infoDesc: typedFactorDesc{ + infoDesc: typedDesc{ desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "info"), "Info of /sys/block/.", []string{"device", "major", "minor", "path", "wwn", "model", "serial", "revision", "rotational"}, nil, ), valueType: prometheus.GaugeValue, }, - descs: []typedFactorDesc{ + descs: []typedDesc{ { desc: readsCompletedDesc, valueType: prometheus.CounterValue, }, @@ -219,21 +210,21 @@ func NewDiskstatsCollector(logger *slog.Logger) (Collector, error) { ), valueType: prometheus.CounterValue, }, }, - filesystemInfoDesc: typedFactorDesc{ + filesystemInfoDesc: typedDesc{ desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "filesystem_info"), "Info about disk filesystem.", []string{"device", "type", "usage", "uuid", "version"}, nil, ), valueType: prometheus.GaugeValue, }, - deviceMapperInfoDesc: typedFactorDesc{ + deviceMapperInfoDesc: typedDesc{ desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "device_mapper_info"), "Info about disk device mapper.", []string{"device", "name", "uuid", "vg_name", "lv_name", "lv_layer"}, nil, ), valueType: prometheus.GaugeValue, }, - ataDescs: map[string]typedFactorDesc{ + ataDescs: map[string]typedDesc{ udevIDATAWriteCache: { desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "ata_write_cache"), "ATA disk has a write cache.", @@ -294,6 +285,11 @@ func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error { serial = info[udevIDSerialShort] } + // If still undefined, fallback to ID_SERIAL (used by virtio devices). + if serial == "" { + serial = info[udevIDSerial] + } + queueStats, err := c.fs.SysBlockDeviceQueueStats(dev) // Block Device Queue stats may not exist for all devices. if err != nil && !os.IsNotExist(err) { diff --git a/collector/diskstats_linux_test.go b/collector/diskstats_linux_test.go index fd90353f..08a5024c 100644 --- a/collector/diskstats_linux_test.go +++ b/collector/diskstats_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector @@ -119,9 +118,9 @@ node_disk_info{device="dm-2",major="252",minor="2",model="",path="",revision="", node_disk_info{device="dm-3",major="252",minor="3",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-4",major="252",minor="4",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-5",major="252",minor="5",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 +node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 node_disk_info{device="nvme0n1",major="259",minor="0",model="SAMSUNG EHFTF55LURSY-000Y9",path="pci-0000:02:00.0-nvme-1",revision="4NBTUY95",rotational="0",serial="S252B6CU1HG3M1",wwn="eui.p3vbbiejx5aae2r3"} 1 node_disk_info{device="sda",major="8",minor="0",model="TOSHIBA_KSDB4U86",path="pci-0000:3b:00.0-sas-phy7-lun-0",revision="0102",rotational="1",serial="2160A0D5FVGG",wwn="0x7c72382b8de36a64"} 1 node_disk_info{device="sdb",major="8",minor="16",model="SuperMicro_SSD",path="pci-0000:00:1f.2-ata-1",revision="0R",rotational="0",serial="SMC0E1B87ABBB16BD84E",wwn="0xe1b87abbb16bd84e"} 1 diff --git a/collector/diskstats_openbsd.go b/collector/diskstats_openbsd.go index 49415c17..c642a7bf 100644 --- a/collector/diskstats_openbsd.go +++ b/collector/diskstats_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats && !amd64 -// +build !nodiskstats,!amd64 package collector diff --git a/collector/diskstats_openbsd_amd64.go b/collector/diskstats_openbsd_amd64.go index b290d889..bbb9e8b9 100644 --- a/collector/diskstats_openbsd_amd64.go +++ b/collector/diskstats_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/dmi.go b/collector/dmi.go index 2282d7bd..575c3319 100644 --- a/collector/dmi.go +++ b/collector/dmi.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nodmi -// +build linux,!nodmi package collector diff --git a/collector/drbd_linux.go b/collector/drbd_linux.go index cbaf8161..f3102700 100644 --- a/collector/drbd_linux.go +++ b/collector/drbd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodrbd -// +build !nodrbd package collector diff --git a/collector/drm_linux.go b/collector/drm_linux.go index 61bb59ac..80356ee8 100644 --- a/collector/drm_linux.go +++ b/collector/drm_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nogpu -// +build !nogpu package collector diff --git a/collector/edac_linux.go b/collector/edac_linux.go index c14c96c3..d3a2a07a 100644 --- a/collector/edac_linux.go +++ b/collector/edac_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noedac -// +build !noedac package collector diff --git a/collector/entropy_linux.go b/collector/entropy_linux.go index 6da61125..1373bf36 100644 --- a/collector/entropy_linux.go +++ b/collector/entropy_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noentropy -// +build !noentropy package collector diff --git a/collector/ethtool_linux.go b/collector/ethtool_linux.go index d9f66469..e4d86bcd 100644 --- a/collector/ethtool_linux.go +++ b/collector/ethtool_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noethtool -// +build !noethtool // The hard work of collecting data from the kernel via the ethtool interfaces is done by // https://github.com/safchain/ethtool/ diff --git a/collector/ethtool_linux_test.go b/collector/ethtool_linux_test.go index c72adcb4..84cca888 100644 --- a/collector/ethtool_linux_test.go +++ b/collector/ethtool_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noethtool -// +build !noethtool package collector @@ -139,7 +138,7 @@ func (e *EthtoolFixture) Stats(intf string) (map[string]uint64, error) { func readModes(modes string) uint32 { var out uint32 - for _, mode := range strings.Split(modes, " ") { + for mode := range strings.SplitSeq(modes, " ") { switch mode { case "10baseT/Half": out |= (1 << unix.ETHTOOL_LINK_MODE_10baseT_Half_BIT) @@ -162,7 +161,7 @@ func readModes(modes string) uint32 { func readPortTypes(portTypes string) uint32 { var out uint32 - for _, ptype := range strings.Split(portTypes, " ") { + for ptype := range strings.SplitSeq(portTypes, " ") { ptype = strings.Trim(ptype, " \t") if ptype == "TP" { out |= (1 << unix.ETHTOOL_LINK_MODE_TP_BIT) diff --git a/collector/exec_bsd.go b/collector/exec_bsd.go index 07de879e..d3e5f70f 100644 --- a/collector/exec_bsd.go +++ b/collector/exec_bsd.go @@ -12,14 +12,13 @@ // limitations under the License. //go:build (freebsd || dragonfly) && !noexec -// +build freebsd dragonfly -// +build !noexec package collector import ( - "github.com/prometheus/client_golang/prometheus" "log/slog" + + "github.com/prometheus/client_golang/prometheus" ) type execCollector struct { diff --git a/collector/fibrechannel_linux.go b/collector/fibrechannel_linux.go index cb8be9db..a0528d16 100644 --- a/collector/fibrechannel_linux.go +++ b/collector/fibrechannel_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofibrechannel -// +build !nofibrechannel package collector @@ -22,8 +21,9 @@ import ( "os" "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/node_exporter/collector/utils" "github.com/prometheus/procfs/sysfs" + + "github.com/prometheus/node_exporter/collector/utils" ) const maxUint64 = ^uint64(0) diff --git a/collector/filefd_linux.go b/collector/filefd_linux.go index 39a72fcd..c24215c4 100644 --- a/collector/filefd_linux.go +++ b/collector/filefd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilefd -// +build !nofilefd package collector diff --git a/collector/filefd_linux_test.go b/collector/filefd_linux_test.go index f31a5c2c..b43c1ed2 100644 --- a/collector/filefd_linux_test.go +++ b/collector/filefd_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilefd -// +build !nofilefd package collector diff --git a/collector/filesystem_aix.go b/collector/filesystem_aix.go index 84bb8913..e4db6bce 100644 --- a/collector/filesystem_aix.go +++ b/collector/filesystem_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_bsd.go b/collector/filesystem_bsd.go index 2810a5a3..79dde087 100644 --- a/collector/filesystem_bsd.go +++ b/collector/filesystem_bsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build dragonfly && !nofilesystem -// +build dragonfly,!nofilesystem package collector diff --git a/collector/filesystem_common.go b/collector/filesystem_common.go index 4161b3fe..efcd26a0 100644 --- a/collector/filesystem_common.go +++ b/collector/filesystem_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nofilesystem && (linux || freebsd || netbsd || openbsd || darwin || dragonfly || aix) -// +build !nofilesystem -// +build linux freebsd netbsd openbsd darwin dragonfly aix package collector @@ -82,7 +80,7 @@ type filesystemCollector struct { } type filesystemLabels struct { - device, mountPoint, fsType, options, deviceError, major, minor string + device, mountPoint, fsType, mountOptions, superOptions, deviceError, major, minor string } type filesystemStats struct { diff --git a/collector/filesystem_freebsd.go b/collector/filesystem_freebsd.go index 502ae0a8..cbc99d9f 100644 --- a/collector/filesystem_freebsd.go +++ b/collector/filesystem_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index 127a3be1..3739f0fe 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -12,28 +12,30 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector import ( - "bufio" + "bytes" "errors" "fmt" - "io" "log/slog" "os" + "slices" + "strconv" "strings" "sync" "time" "github.com/alecthomas/kingpin/v2" "golang.org/x/sys/unix" + + "github.com/prometheus/procfs" ) const ( defMountPointsExcluded = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/)" - defFSTypesExcluded = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" + defFSTypesExcluded = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|erofs|sysfs|tracefs)$" ) var mountTimeout = kingpin.Flag("collector.filesystem.mount-timeout", @@ -56,10 +58,7 @@ func (c *filesystemCollector) GetStats() ([]filesystemStats, error) { statChan := make(chan filesystemStats) wg := sync.WaitGroup{} - workerCount := *statWorkerCount - if workerCount < 1 { - workerCount = 1 - } + workerCount := max(*statWorkerCount, 1) for i := 0; i < workerCount; i++ { wg.Add(1) @@ -110,11 +109,8 @@ func (c *filesystemCollector) GetStats() ([]filesystemStats, error) { func (c *filesystemCollector) processStat(labels filesystemLabels) filesystemStats { var ro float64 - for _, option := range strings.Split(labels.options, ",") { - if option == "ro" { - ro = 1 - break - } + if isFilesystemReadOnly(labels) { + ro = 1 } success := make(chan struct{}) @@ -132,6 +128,12 @@ func (c *filesystemCollector) processStat(labels filesystemLabels) filesystemSta } stuckMountsMtx.Unlock() + // Remove options from labels because options will not be used from this point forward + // and keeping them can lead to errors when the same device is mounted to the same mountpoint + // twice, with different options (metrics would be recorded multiple times). + labels.mountOptions = "" + labels.superOptions = "" + if err != nil { labels.deviceError = err.Error() c.logger.Debug("Error on statfs() system call", "rootfs", rootfsFilePath(labels.mountPoint), "err", err) @@ -177,57 +179,71 @@ func stuckMountWatcher(mountPoint string, success chan struct{}, logger *slog.Lo } func mountPointDetails(logger *slog.Logger) ([]filesystemLabels, error) { - file, err := os.Open(procFilePath("1/mountinfo")) + fs, err := procfs.NewFS(*procPath) + if err != nil { + return nil, fmt.Errorf("failed to open procfs: %w", err) + } + mountInfo, err := fs.GetProcMounts(1) if errors.Is(err, os.ErrNotExist) { // Fallback to `/proc/self/mountinfo` if `/proc/1/mountinfo` is missing due hidepid. logger.Debug("Reading root mounts failed, falling back to self mounts", "err", err) - file, err = os.Open(procFilePath("self/mountinfo")) + mountInfo, err = fs.GetMounts() } if err != nil { return nil, err } - defer file.Close() - return parseFilesystemLabels(file) + return parseFilesystemLabels(mountInfo) } -func parseFilesystemLabels(r io.Reader) ([]filesystemLabels, error) { +func parseFilesystemLabels(mountInfo []*procfs.MountInfo) ([]filesystemLabels, error) { var filesystems []filesystemLabels - scanner := bufio.NewScanner(r) - for scanner.Scan() { - parts := strings.Fields(scanner.Text()) - - if len(parts) < 10 { - return nil, fmt.Errorf("malformed mount point information: %q", scanner.Text()) - } - + for _, mount := range mountInfo { major, minor := 0, 0 - _, err := fmt.Sscanf(parts[2], "%d:%d", &major, &minor) + _, err := fmt.Sscanf(mount.MajorMinorVer, "%d:%d", &major, &minor) if err != nil { - return nil, fmt.Errorf("malformed mount point information: %q", scanner.Text()) - } - - m := 5 - for parts[m+1] != "-" { - m++ + return nil, fmt.Errorf("malformed mount point MajorMinorVer: %q", mount.MajorMinorVer) } // Ensure we handle the translation of \040 and \011 // as per fstab(5). - parts[4] = strings.ReplaceAll(parts[4], "\\040", " ") - parts[4] = strings.ReplaceAll(parts[4], "\\011", "\t") + mount.MountPoint = strings.ReplaceAll(mount.MountPoint, "\\040", " ") + mount.MountPoint = strings.ReplaceAll(mount.MountPoint, "\\011", "\t") filesystems = append(filesystems, filesystemLabels{ - device: parts[m+3], - mountPoint: rootfsStripPrefix(parts[4]), - fsType: parts[m+2], - options: parts[5], - major: fmt.Sprint(major), - minor: fmt.Sprint(minor), - deviceError: "", + device: mount.Source, + mountPoint: rootfsStripPrefix(mount.MountPoint), + fsType: mount.FSType, + mountOptions: mountOptionsString(mount.Options), + superOptions: mountOptionsString(mount.SuperOptions), + major: strconv.Itoa(major), + minor: strconv.Itoa(minor), + deviceError: "", }) } - return filesystems, scanner.Err() + return filesystems, nil +} + +// see https://github.com/prometheus/node_exporter/issues/3157#issuecomment-2422761187 +// if either mount or super options contain "ro" the filesystem is read-only +func isFilesystemReadOnly(labels filesystemLabels) bool { + if slices.Contains(strings.Split(labels.mountOptions, ","), "ro") || slices.Contains(strings.Split(labels.superOptions, ","), "ro") { + return true + } + + return false +} + +func mountOptionsString(m map[string]string) string { + b := new(bytes.Buffer) + for key, value := range m { + if value == "" { + fmt.Fprintf(b, "%s", key) + } else { + fmt.Fprintf(b, "%s=%s", key, value) + } + } + return b.String() } diff --git a/collector/filesystem_linux_test.go b/collector/filesystem_linux_test.go index d088598f..a838e932 100644 --- a/collector/filesystem_linux_test.go +++ b/collector/filesystem_linux_test.go @@ -12,39 +12,82 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector import ( "io" "log/slog" - "strings" "testing" "github.com/alecthomas/kingpin/v2" + + "github.com/prometheus/procfs" ) func Test_parseFilesystemLabelsError(t *testing.T) { tests := []struct { name string - in string + in []*procfs.MountInfo }{ { - name: "too few fields", - in: "hello world", + name: "malformed Major:Minor", + in: []*procfs.MountInfo{ + { + MajorMinorVer: "nope", + }, + }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if _, err := parseFilesystemLabels(strings.NewReader(tt.in)); err == nil { + if _, err := parseFilesystemLabels(tt.in); err == nil { t.Fatal("expected an error, but none occurred") } }) } } +func Test_isFilesystemReadOnly(t *testing.T) { + tests := map[string]struct { + labels filesystemLabels + expected bool + }{ + "/media/volume1": { + labels: filesystemLabels{ + mountOptions: "rw,nosuid,nodev,noexec,relatime", + superOptions: "rw,devices", + }, + expected: false, + }, + "/media/volume2": { + labels: filesystemLabels{ + mountOptions: "ro,relatime", + superOptions: "rw,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct", + }, expected: true, + }, + "/media/volume3": { + labels: filesystemLabels{ + mountOptions: "rw,user_id=1000,group_id=1000", + superOptions: "ro", + }, expected: true, + }, + "/media/volume4": { + labels: filesystemLabels{ + mountOptions: "ro,nosuid,noexec", + superOptions: "ro,nodev", + }, expected: true, + }, + } + + for _, tt := range tests { + if got := isFilesystemReadOnly(tt.labels); got != tt.expected { + t.Errorf("Expected %t, got %t", tt.expected, got) + } + } +} + func TestMountPointDetails(t *testing.T) { if _, err := kingpin.CommandLine.Parse([]string{"--path.procfs", "./fixtures/proc"}); err != nil { t.Fatal(err) @@ -81,6 +124,7 @@ func TestMountPointDetails(t *testing.T) { "/run/user/1000/gvfs": "", "/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore] bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk": "", "/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore] bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk": "", + "/var/lib/containers/storage/overlay": "", } filesystems, err := mountPointDetails(slog.New(slog.NewTextHandler(io.Discard, nil))) diff --git a/collector/filesystem_macos.go b/collector/filesystem_macos.go index cc5c97ce..be0a4906 100644 --- a/collector/filesystem_macos.go +++ b/collector/filesystem_macos.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build darwin && !nofilesystem -// +build darwin,!nofilesystem package collector @@ -20,8 +19,13 @@ package collector #cgo CFLAGS: -x objective-c #cgo LDFLAGS: -framework Foundation #import -Float64 purgeable(char *path) { - Float64 value = -1.0f; +#include +#include +#include +#include + +double purgeable(char *path) { + double value = -1.0f; @autoreleasepool { NSError *error = nil; @@ -49,14 +53,6 @@ import ( "unsafe" ) -/* -#include -#include -#include -#include -*/ -import "C" - const ( defMountPointsExcluded = "^/(dev)($|/)" defFSTypesExcluded = "^devfs$" diff --git a/collector/filesystem_netbsd.go b/collector/filesystem_netbsd.go index c7395893..21f73abb 100644 --- a/collector/filesystem_netbsd.go +++ b/collector/filesystem_netbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_openbsd.go b/collector/filesystem_openbsd.go index fa9f8eb8..3ca929d8 100644 --- a/collector/filesystem_openbsd.go +++ b/collector/filesystem_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt index 1914288e..8065c5fe 100644 --- a/collector/fixtures/e2e-64k-page-output.txt +++ b/collector/fixtures/e2e-64k-page-output.txt @@ -144,6 +144,597 @@ node_bcache_writeback_rate_proportional_term{backing_device="bdev0",uuid="deaddd # HELP node_bcache_written_bytes_total Sum of all data that has been written to the cache. # TYPE node_bcache_written_bytes_total counter node_bcache_written_bytes_total{cache_device="cache0",uuid="deaddd54-c735-46d5-868e-f331c5fd7c74"} 0 +# HELP node_bcachefs_accounting_key_to_wb_slowpath_total Bcachefs counter accounting_key_to_wb_slowpath since filesystem creation. +# TYPE node_bcachefs_accounting_key_to_wb_slowpath_total counter +node_bcachefs_accounting_key_to_wb_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.4105502e+07 +# HELP node_bcachefs_bkey_pack_pos_fail_total Bcachefs counter bkey_pack_pos_fail since filesystem creation. +# TYPE node_bcachefs_bkey_pack_pos_fail_total counter +node_bcachefs_bkey_pack_pos_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_btree_cache_cannibalize_lock_fail_total Bcachefs counter btree_cache_cannibalize_lock_fail since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_fail_total counter +node_bcachefs_btree_cache_cannibalize_lock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 24213 +# HELP node_bcachefs_btree_cache_cannibalize_lock_total Bcachefs counter btree_cache_cannibalize_lock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_total counter +node_bcachefs_btree_cache_cannibalize_lock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.2061408e+07 +# HELP node_bcachefs_btree_cache_cannibalize_total Bcachefs counter btree_cache_cannibalize since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_total counter +node_bcachefs_btree_cache_cannibalize_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.6587339e+07 +# HELP node_bcachefs_btree_cache_cannibalize_unlock_total Bcachefs counter btree_cache_cannibalize_unlock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_unlock_total counter +node_bcachefs_btree_cache_cannibalize_unlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.6260384e+07 +# HELP node_bcachefs_btree_cache_reap_total Bcachefs counter btree_cache_reap since filesystem creation. +# TYPE node_bcachefs_btree_cache_reap_total counter +node_bcachefs_btree_cache_reap_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9068459e+07 +# HELP node_bcachefs_btree_cache_scan_total Bcachefs counter btree_cache_scan since filesystem creation. +# TYPE node_bcachefs_btree_cache_scan_total counter +node_bcachefs_btree_cache_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 427545 +# HELP node_bcachefs_btree_cache_size_bytes Btree cache memory usage in bytes. +# TYPE node_bcachefs_btree_cache_size_bytes gauge +node_bcachefs_btree_cache_size_bytes{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_btree_key_cache_fill_total Bcachefs counter btree_key_cache_fill since filesystem creation. +# TYPE node_bcachefs_btree_key_cache_fill_total counter +node_bcachefs_btree_key_cache_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.69308144e+08 +# HELP node_bcachefs_btree_node_alloc_total Bcachefs counter btree_node_alloc since filesystem creation. +# TYPE node_bcachefs_btree_node_alloc_total counter +node_bcachefs_btree_node_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.665587e+06 +# HELP node_bcachefs_btree_node_compact_total Bcachefs counter btree_node_compact since filesystem creation. +# TYPE node_bcachefs_btree_node_compact_total counter +node_bcachefs_btree_node_compact_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.554425e+06 +# HELP node_bcachefs_btree_node_free_total Bcachefs counter btree_node_free since filesystem creation. +# TYPE node_bcachefs_btree_node_free_total counter +node_bcachefs_btree_node_free_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4112667e+07 +# HELP node_bcachefs_btree_node_merge_attempt_total Bcachefs counter btree_node_merge_attempt since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_attempt_total counter +node_bcachefs_btree_node_merge_attempt_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5868895e+07 +# HELP node_bcachefs_btree_node_merge_total Bcachefs counter btree_node_merge since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_total counter +node_bcachefs_btree_node_merge_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 559684 +# HELP node_bcachefs_btree_node_read_total Bcachefs counter btree_node_read since filesystem creation. +# TYPE node_bcachefs_btree_node_read_total counter +node_bcachefs_btree_node_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.0225874e+07 +# HELP node_bcachefs_btree_node_rewrite_total Bcachefs counter btree_node_rewrite since filesystem creation. +# TYPE node_bcachefs_btree_node_rewrite_total counter +node_bcachefs_btree_node_rewrite_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.130316e+06 +# HELP node_bcachefs_btree_node_set_root_total Bcachefs counter btree_node_set_root since filesystem creation. +# TYPE node_bcachefs_btree_node_set_root_total counter +node_bcachefs_btree_node_set_root_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 77958 +# HELP node_bcachefs_btree_node_split_total Bcachefs counter btree_node_split since filesystem creation. +# TYPE node_bcachefs_btree_node_split_total counter +node_bcachefs_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 710571 +# HELP node_bcachefs_btree_node_write_total Bcachefs counter btree_node_write since filesystem creation. +# TYPE node_bcachefs_btree_node_write_total counter +node_bcachefs_btree_node_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4796849e+08 +# HELP node_bcachefs_btree_path_relock_fail_total Bcachefs counter btree_path_relock_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_relock_fail_total counter +node_bcachefs_btree_path_relock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.6213103e+07 +# HELP node_bcachefs_btree_path_upgrade_fail_total Bcachefs counter btree_path_upgrade_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_upgrade_fail_total counter +node_bcachefs_btree_path_upgrade_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.103667e+06 +# HELP node_bcachefs_btree_reserve_get_fail_total Bcachefs counter btree_reserve_get_fail since filesystem creation. +# TYPE node_bcachefs_btree_reserve_get_fail_total counter +node_bcachefs_btree_reserve_get_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11706 +# HELP node_bcachefs_btree_write_average_size_bytes Average btree write size by type. +# TYPE node_bcachefs_btree_write_average_size_bytes gauge +node_bcachefs_btree_write_average_size_bytes{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 720 +node_bcachefs_btree_write_average_size_bytes{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 28876 +node_bcachefs_btree_write_average_size_bytes{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 102400 +node_bcachefs_btree_write_average_size_bytes{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1290 +node_bcachefs_btree_write_average_size_bytes{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 697 +# HELP node_bcachefs_btree_writes_total Number of btree writes by type. +# TYPE node_bcachefs_btree_writes_total counter +node_bcachefs_btree_writes_total{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 14401 +node_bcachefs_btree_writes_total{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.055926e+06 +node_bcachefs_btree_writes_total{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.298401e+06 +node_bcachefs_btree_writes_total{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.035363e+06 +node_bcachefs_btree_writes_total{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.6903805e+07 +# HELP node_bcachefs_bucket_alloc_fail_total Bcachefs counter bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_fail_total counter +node_bcachefs_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1156091e+07 +# HELP node_bcachefs_bucket_alloc_from_stripe_total Bcachefs counter bucket_alloc_from_stripe since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_from_stripe_total counter +node_bcachefs_bucket_alloc_from_stripe_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_bucket_alloc_total Bcachefs counter bucket_alloc since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_total counter +node_bcachefs_bucket_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7363674e+07 +# HELP node_bcachefs_bucket_discard_fast_total Bcachefs counter bucket_discard_fast since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_total counter +node_bcachefs_bucket_discard_fast_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 10204 +# HELP node_bcachefs_bucket_discard_fast_worker_total Bcachefs counter bucket_discard_fast_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_worker_total counter +node_bcachefs_bucket_discard_fast_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4012 +# HELP node_bcachefs_bucket_discard_total Bcachefs counter bucket_discard since filesystem creation. +# TYPE node_bcachefs_bucket_discard_total counter +node_bcachefs_bucket_discard_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4751388e+07 +# HELP node_bcachefs_bucket_discard_worker_total Bcachefs counter bucket_discard_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_worker_total counter +node_bcachefs_bucket_discard_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.021501e+06 +# HELP node_bcachefs_bucket_invalidate_total Bcachefs counter bucket_invalidate since filesystem creation. +# TYPE node_bcachefs_bucket_invalidate_total counter +node_bcachefs_bucket_invalidate_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.483205e+06 +# HELP node_bcachefs_cached_ptr_drop_total Bcachefs counter cached_ptr_drop since filesystem creation. +# TYPE node_bcachefs_cached_ptr_drop_total counter +node_bcachefs_cached_ptr_drop_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_compression_compressed_bytes Compressed size by algorithm. +# TYPE node_bcachefs_compression_compressed_bytes gauge +node_bcachefs_compression_compressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_compressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.2505975193e+10 +node_bcachefs_compression_compressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42665652224e+11 +# HELP node_bcachefs_compression_uncompressed_bytes Uncompressed size by algorithm. +# TYPE node_bcachefs_compression_uncompressed_bytes gauge +node_bcachefs_compression_uncompressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.6450417868e+10 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.47466319872e+11 +# HELP node_bcachefs_copygc_total Bcachefs counter copygc since filesystem creation. +# TYPE node_bcachefs_copygc_total counter +node_bcachefs_copygc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 424790 +# HELP node_bcachefs_copygc_wait_obsolete_total Bcachefs counter copygc_wait_obsolete since filesystem creation. +# TYPE node_bcachefs_copygc_wait_obsolete_total counter +node_bcachefs_copygc_wait_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 537321 +# HELP node_bcachefs_data_read_bounce_total Bcachefs counter data_read_bounce since filesystem creation. +# TYPE node_bcachefs_data_read_bounce_total counter +node_bcachefs_data_read_bounce_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.5052058e+08 +# HELP node_bcachefs_data_read_fail_and_poison_total Bcachefs counter data_read_fail_and_poison since filesystem creation. +# TYPE node_bcachefs_data_read_fail_and_poison_total counter +node_bcachefs_data_read_fail_and_poison_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_hole_total Bcachefs counter data_read_hole since filesystem creation. +# TYPE node_bcachefs_data_read_hole_total counter +node_bcachefs_data_read_hole_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.858174650941e+12 +# HELP node_bcachefs_data_read_inline_total Bcachefs counter data_read_inline since filesystem creation. +# TYPE node_bcachefs_data_read_inline_total counter +node_bcachefs_data_read_inline_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5998753177e+10 +# HELP node_bcachefs_data_read_narrow_crcs_fail_total Bcachefs counter data_read_narrow_crcs_fail since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_fail_total counter +node_bcachefs_data_read_narrow_crcs_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1779 +# HELP node_bcachefs_data_read_narrow_crcs_total Bcachefs counter data_read_narrow_crcs since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_total counter +node_bcachefs_data_read_narrow_crcs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18529 +# HELP node_bcachefs_data_read_nopromote_already_promoted_total Bcachefs counter data_read_nopromote_already_promoted since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_already_promoted_total counter +node_bcachefs_data_read_nopromote_already_promoted_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.11037452e+08 +# HELP node_bcachefs_data_read_nopromote_congested_total Bcachefs counter data_read_nopromote_congested since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_congested_total counter +node_bcachefs_data_read_nopromote_congested_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.913847e+06 +# HELP node_bcachefs_data_read_nopromote_may_not_total Bcachefs counter data_read_nopromote_may_not since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_may_not_total counter +node_bcachefs_data_read_nopromote_may_not_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0206095e+07 +# HELP node_bcachefs_data_read_nopromote_total Bcachefs counter data_read_nopromote since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_total counter +node_bcachefs_data_read_nopromote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42468868e+08 +# HELP node_bcachefs_data_read_nopromote_unwritten_total Bcachefs counter data_read_nopromote_unwritten since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_unwritten_total counter +node_bcachefs_data_read_nopromote_unwritten_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_promote_total Bcachefs counter data_read_promote since filesystem creation. +# TYPE node_bcachefs_data_read_promote_total counter +node_bcachefs_data_read_promote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.19833053184e+11 +# HELP node_bcachefs_data_read_retry_total Bcachefs counter data_read_retry since filesystem creation. +# TYPE node_bcachefs_data_read_retry_total counter +node_bcachefs_data_read_retry_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.2404675e+07 +# HELP node_bcachefs_data_read_reuse_race_total Bcachefs counter data_read_reuse_race since filesystem creation. +# TYPE node_bcachefs_data_read_reuse_race_total counter +node_bcachefs_data_read_reuse_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 201095 +# HELP node_bcachefs_data_read_split_total Bcachefs counter data_read_split since filesystem creation. +# TYPE node_bcachefs_data_read_split_total counter +node_bcachefs_data_read_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.18590695e+08 +# HELP node_bcachefs_data_read_total Bcachefs counter data_read since filesystem creation. +# TYPE node_bcachefs_data_read_total counter +node_bcachefs_data_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8928267436032e+13 +# HELP node_bcachefs_data_update_fail_total Bcachefs counter data_update_fail since filesystem creation. +# TYPE node_bcachefs_data_update_fail_total counter +node_bcachefs_data_update_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.138166333e+09 +# HELP node_bcachefs_data_update_in_flight_total Bcachefs counter data_update_in_flight since filesystem creation. +# TYPE node_bcachefs_data_update_in_flight_total counter +node_bcachefs_data_update_in_flight_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.978784e+06 +# HELP node_bcachefs_data_update_key_fail_total Bcachefs counter data_update_key_fail since filesystem creation. +# TYPE node_bcachefs_data_update_key_fail_total counter +node_bcachefs_data_update_key_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4373939404e+10 +# HELP node_bcachefs_data_update_key_total Bcachefs counter data_update_key since filesystem creation. +# TYPE node_bcachefs_data_update_key_total counter +node_bcachefs_data_update_key_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00275460453171e+14 +# HELP node_bcachefs_data_update_no_io_total Bcachefs counter data_update_no_io since filesystem creation. +# TYPE node_bcachefs_data_update_no_io_total counter +node_bcachefs_data_update_no_io_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00824357273e+11 +# HELP node_bcachefs_data_update_noop_obsolete_total Bcachefs counter data_update_noop_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_noop_obsolete_total counter +node_bcachefs_data_update_noop_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_update_pred_total Bcachefs counter data_update_pred since filesystem creation. +# TYPE node_bcachefs_data_update_pred_total counter +node_bcachefs_data_update_pred_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.947802324992e+13 +# HELP node_bcachefs_data_update_read_total Bcachefs counter data_update_read since filesystem creation. +# TYPE node_bcachefs_data_update_read_total counter +node_bcachefs_data_update_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.9390295338188e+13 +# HELP node_bcachefs_data_update_start_fail_obsolete_total Bcachefs counter data_update_start_fail_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_start_fail_obsolete_total counter +node_bcachefs_data_update_start_fail_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.14018822443e+11 +# HELP node_bcachefs_data_update_total Bcachefs counter data_update since filesystem creation. +# TYPE node_bcachefs_data_update_total counter +node_bcachefs_data_update_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4206847997116416e+16 +# HELP node_bcachefs_data_update_useless_write_fail_total Bcachefs counter data_update_useless_write_fail since filesystem creation. +# TYPE node_bcachefs_data_update_useless_write_fail_total counter +node_bcachefs_data_update_useless_write_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.30428461e+09 +# HELP node_bcachefs_data_update_write_total Bcachefs counter data_update_write since filesystem creation. +# TYPE node_bcachefs_data_update_write_total counter +node_bcachefs_data_update_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7163493018828e+13 +# HELP node_bcachefs_data_write_total Bcachefs counter data_write since filesystem creation. +# TYPE node_bcachefs_data_write_total counter +node_bcachefs_data_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0780769764966e+13 +# HELP node_bcachefs_device_bucket_size_bytes Bucket size in bytes. +# TYPE node_bcachefs_device_bucket_size_bytes gauge +node_bcachefs_device_bucket_size_bytes{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 524288 +node_bcachefs_device_bucket_size_bytes{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +# HELP node_bcachefs_device_buckets Total number of buckets. +# TYPE node_bcachefs_device_buckets gauge +node_bcachefs_device_buckets{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953880 +node_bcachefs_device_buckets{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.629824e+06 +node_bcachefs_device_buckets{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953864 +node_bcachefs_device_buckets{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.907723e+06 +node_bcachefs_device_buckets{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.384637e+06 +# HELP node_bcachefs_device_durability Device durability setting. +# TYPE node_bcachefs_device_durability gauge +node_bcachefs_device_durability{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_info Device information. +# TYPE node_bcachefs_device_info gauge +node_bcachefs_device_info{device="10",label="disk-10",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="4",label="disk-4",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="6",label="disk-6",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="7",label="disk-7",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="8",label="disk-8",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_io_done_bytes_total IO bytes by operation type and data type. +# TYPE node_bcachefs_device_io_done_bytes_total counter +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.24288e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 16384 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.193358848e+09 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 589824 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.912896e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.767671263232e+12 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.82753624064e+11 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.432028966912e+12 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 677376 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.02313054208e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.52377698304e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.770452246528e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.258285805568e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.10019098624e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.62070339584e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.53932742656e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.8382641152e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.115020546048e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.072510210048e+12 +# HELP node_bcachefs_device_io_errors_total IO errors by error type. +# TYPE node_bcachefs_device_io_errors_total counter +node_bcachefs_device_io_errors_total{device="10",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 197416 +node_bcachefs_device_io_errors_total{device="4",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 205 +node_bcachefs_device_io_errors_total{device="6",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5 +node_bcachefs_device_io_errors_total{device="6",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18828 +node_bcachefs_device_io_errors_total{device="6",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_io_errors_total{device="7",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18 +node_bcachefs_device_io_errors_total{device="7",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="7",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_error_throw_total Bcachefs counter error_throw since filesystem creation. +# TYPE node_bcachefs_error_throw_total counter +node_bcachefs_error_throw_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.719910958e+09 +# HELP node_bcachefs_errors_total Error count by error type. +# TYPE node_bcachefs_errors_total counter +node_bcachefs_errors_total{error_type="accounting_mismatch",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6 +node_bcachefs_errors_total{error_type="alloc_key_cached_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="alloc_key_data_type_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4415 +node_bcachefs_errors_total{error_type="alloc_key_dirty_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4538 +node_bcachefs_errors_total{error_type="alloc_key_to_missing_lru_entry",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4517 +node_bcachefs_errors_total{error_type="backpointer_to_missing_ptr",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 45480 +node_bcachefs_errors_total{error_type="bset_bad_csum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_data_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_topology_bad_max_key",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_io_opts_not_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1299659571772285e+19 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid_but_cached",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44612 +node_bcachefs_errors_total{error_type="lru_entry_bad",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="ptr_to_missing_backpointer",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44112 +node_bcachefs_errors_total{error_type="reconcile_work_incorrectly_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 113913 +node_bcachefs_errors_total{error_type="subvol_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 194 +node_bcachefs_errors_total{error_type="validate_error_in_commit",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="vfs_bad_inode_rm",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 121 +# HELP node_bcachefs_evacuate_bucket_total Bcachefs counter evacuate_bucket since filesystem creation. +# TYPE node_bcachefs_evacuate_bucket_total counter +node_bcachefs_evacuate_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.735247e+06 +# HELP node_bcachefs_fsync_total Bcachefs counter fsync since filesystem creation. +# TYPE node_bcachefs_fsync_total counter +node_bcachefs_fsync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.515147e+06 +# HELP node_bcachefs_gc_gens_end_total Bcachefs counter gc_gens_end since filesystem creation. +# TYPE node_bcachefs_gc_gens_end_total counter +node_bcachefs_gc_gens_end_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_gc_gens_start_total Bcachefs counter gc_gens_start since filesystem creation. +# TYPE node_bcachefs_gc_gens_start_total counter +node_bcachefs_gc_gens_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_info Filesystem information. +# TYPE node_bcachefs_info gauge +node_bcachefs_info{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_journal_full_total Bcachefs counter journal_full since filesystem creation. +# TYPE node_bcachefs_journal_full_total counter +node_bcachefs_journal_full_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 94587 +# HELP node_bcachefs_journal_reclaim_finish_total Bcachefs counter journal_reclaim_finish since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_finish_total counter +node_bcachefs_journal_reclaim_finish_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_reclaim_start_total Bcachefs counter journal_reclaim_start since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_start_total counter +node_bcachefs_journal_reclaim_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_res_get_blocked_total Bcachefs counter journal_res_get_blocked since filesystem creation. +# TYPE node_bcachefs_journal_res_get_blocked_total counter +node_bcachefs_journal_res_get_blocked_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 74696 +# HELP node_bcachefs_journal_write_total Bcachefs counter journal_write since filesystem creation. +# TYPE node_bcachefs_journal_write_total counter +node_bcachefs_journal_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5458801e+07 +# HELP node_bcachefs_open_bucket_alloc_fail_total Bcachefs counter open_bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_open_bucket_alloc_fail_total counter +node_bcachefs_open_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_btree_total Bcachefs counter reconcile_btree since filesystem creation. +# TYPE node_bcachefs_reconcile_btree_total counter +node_bcachefs_reconcile_btree_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.158221066e+09 +# HELP node_bcachefs_reconcile_clear_scan_total Bcachefs counter reconcile_clear_scan since filesystem creation. +# TYPE node_bcachefs_reconcile_clear_scan_total counter +node_bcachefs_reconcile_clear_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11 +# HELP node_bcachefs_reconcile_data_total Bcachefs counter reconcile_data since filesystem creation. +# TYPE node_bcachefs_reconcile_data_total counter +node_bcachefs_reconcile_data_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_phys_total Bcachefs counter reconcile_phys since filesystem creation. +# TYPE node_bcachefs_reconcile_phys_total counter +node_bcachefs_reconcile_phys_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9928939526553e+13 +# HELP node_bcachefs_reconcile_scan_device_total Bcachefs counter reconcile_scan_device since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_device_total counter +node_bcachefs_reconcile_scan_device_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.3562883710976e+13 +# HELP node_bcachefs_reconcile_scan_fs_total Bcachefs counter reconcile_scan_fs since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_fs_total counter +node_bcachefs_reconcile_scan_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_inum_total Bcachefs counter reconcile_scan_inum since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_inum_total counter +node_bcachefs_reconcile_scan_inum_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_metadata_total Bcachefs counter reconcile_scan_metadata since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_metadata_total counter +node_bcachefs_reconcile_scan_metadata_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_pending_total Bcachefs counter reconcile_scan_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_pending_total counter +node_bcachefs_reconcile_scan_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_set_pending_total Bcachefs counter reconcile_set_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_set_pending_total counter +node_bcachefs_reconcile_set_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.1138512896e+10 +# HELP node_bcachefs_sectors_alloc_total Bcachefs counter sectors_alloc since filesystem creation. +# TYPE node_bcachefs_sectors_alloc_total counter +node_bcachefs_sectors_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.2534432556646e+13 +# HELP node_bcachefs_stripe_alloc_total Bcachefs counter stripe_alloc since filesystem creation. +# TYPE node_bcachefs_stripe_alloc_total counter +node_bcachefs_stripe_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_fail_total Bcachefs counter stripe_create_fail since filesystem creation. +# TYPE node_bcachefs_stripe_create_fail_total counter +node_bcachefs_stripe_create_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_total Bcachefs counter stripe_create since filesystem creation. +# TYPE node_bcachefs_stripe_create_total counter +node_bcachefs_stripe_create_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_delete_total Bcachefs counter stripe_delete since filesystem creation. +# TYPE node_bcachefs_stripe_delete_total counter +node_bcachefs_stripe_delete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_reuse_total Bcachefs counter stripe_reuse since filesystem creation. +# TYPE node_bcachefs_stripe_reuse_total counter +node_bcachefs_stripe_reuse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_bucket_total Bcachefs counter stripe_update_bucket since filesystem creation. +# TYPE node_bcachefs_stripe_update_bucket_total counter +node_bcachefs_stripe_update_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_fail_total Bcachefs counter stripe_update_extent_fail since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_fail_total counter +node_bcachefs_stripe_update_extent_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_total Bcachefs counter stripe_update_extent since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_total counter +node_bcachefs_stripe_update_extent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_sync_fs_total Bcachefs counter sync_fs since filesystem creation. +# TYPE node_bcachefs_sync_fs_total counter +node_bcachefs_sync_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 42023 +# HELP node_bcachefs_trans_blocked_journal_reclaim_total Bcachefs counter trans_blocked_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_blocked_journal_reclaim_total counter +node_bcachefs_trans_blocked_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 78 +# HELP node_bcachefs_trans_restart_btree_node_reused_total Bcachefs counter trans_restart_btree_node_reused since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_reused_total counter +node_bcachefs_trans_restart_btree_node_reused_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 53354 +# HELP node_bcachefs_trans_restart_btree_node_split_total Bcachefs counter trans_restart_btree_node_split since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_split_total counter +node_bcachefs_trans_restart_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 100190 +# HELP node_bcachefs_trans_restart_fault_inject_total Bcachefs counter trans_restart_fault_inject since filesystem creation. +# TYPE node_bcachefs_trans_restart_fault_inject_total counter +node_bcachefs_trans_restart_fault_inject_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_injected_total Bcachefs counter trans_restart_injected since filesystem creation. +# TYPE node_bcachefs_trans_restart_injected_total counter +node_bcachefs_trans_restart_injected_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_iter_upgrade_total Bcachefs counter trans_restart_iter_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_iter_upgrade_total counter +node_bcachefs_trans_restart_iter_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_preres_get_total Bcachefs counter trans_restart_journal_preres_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_preres_get_total counter +node_bcachefs_trans_restart_journal_preres_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_reclaim_total Bcachefs counter trans_restart_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_reclaim_total counter +node_bcachefs_trans_restart_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_res_get_total Bcachefs counter trans_restart_journal_res_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_res_get_total counter +node_bcachefs_trans_restart_journal_res_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_key_realloced_total Bcachefs counter trans_restart_key_cache_key_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_key_realloced_total counter +node_bcachefs_trans_restart_key_cache_key_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_raced_total Bcachefs counter trans_restart_key_cache_raced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_raced_total counter +node_bcachefs_trans_restart_key_cache_raced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_upgrade_total Bcachefs counter trans_restart_key_cache_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_upgrade_total counter +node_bcachefs_trans_restart_key_cache_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mark_replicas_total Bcachefs counter trans_restart_mark_replicas since filesystem creation. +# TYPE node_bcachefs_trans_restart_mark_replicas_total counter +node_bcachefs_trans_restart_mark_replicas_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mem_realloced_total Bcachefs counter trans_restart_mem_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_mem_realloced_total counter +node_bcachefs_trans_restart_mem_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6111 +# HELP node_bcachefs_trans_restart_memory_allocation_failure_total Bcachefs counter trans_restart_memory_allocation_failure since filesystem creation. +# TYPE node_bcachefs_trans_restart_memory_allocation_failure_total counter +node_bcachefs_trans_restart_memory_allocation_failure_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.7513334e+07 +# HELP node_bcachefs_trans_restart_relock_after_fill_total Bcachefs counter trans_restart_relock_after_fill since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_after_fill_total counter +node_bcachefs_trans_restart_relock_after_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total Bcachefs counter trans_restart_relock_key_cache_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_next_node_total Bcachefs counter trans_restart_relock_next_node since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_next_node_total counter +node_bcachefs_trans_restart_relock_next_node_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 22087 +# HELP node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total Bcachefs counter trans_restart_relock_parent_for_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2581 +# HELP node_bcachefs_trans_restart_relock_path_intent_total Bcachefs counter trans_restart_relock_path_intent since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_intent_total counter +node_bcachefs_trans_restart_relock_path_intent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 298090 +# HELP node_bcachefs_trans_restart_relock_path_total Bcachefs counter trans_restart_relock_path since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_total counter +node_bcachefs_trans_restart_relock_path_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.752728e+07 +# HELP node_bcachefs_trans_restart_relock_total Bcachefs counter trans_restart_relock since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_total counter +node_bcachefs_trans_restart_relock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.806875e+06 +# HELP node_bcachefs_trans_restart_split_race_total Bcachefs counter trans_restart_split_race since filesystem creation. +# TYPE node_bcachefs_trans_restart_split_race_total counter +node_bcachefs_trans_restart_split_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_too_many_iters_total Bcachefs counter trans_restart_too_many_iters since filesystem creation. +# TYPE node_bcachefs_trans_restart_too_many_iters_total counter +node_bcachefs_trans_restart_too_many_iters_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_traverse_total Bcachefs counter trans_restart_traverse since filesystem creation. +# TYPE node_bcachefs_trans_restart_traverse_total counter +node_bcachefs_trans_restart_traverse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_upgrade_total Bcachefs counter trans_restart_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_upgrade_total counter +node_bcachefs_trans_restart_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.055154e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_recursion_limit_total Bcachefs counter trans_restart_would_deadlock_recursion_limit since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_recursion_limit_total counter +node_bcachefs_trans_restart_would_deadlock_recursion_limit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_would_deadlock_total Bcachefs counter trans_restart_would_deadlock since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_total counter +node_bcachefs_trans_restart_would_deadlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.025983e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_write_total Bcachefs counter trans_restart_would_deadlock_write since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_write_total counter +node_bcachefs_trans_restart_would_deadlock_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +# HELP node_bcachefs_trans_restart_write_buffer_flush_total Bcachefs counter trans_restart_write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_trans_restart_write_buffer_flush_total counter +node_bcachefs_trans_restart_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.1706894e+07 +# HELP node_bcachefs_trans_traverse_all_total Bcachefs counter trans_traverse_all since filesystem creation. +# TYPE node_bcachefs_trans_traverse_all_total counter +node_bcachefs_trans_traverse_all_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.8477746e+07 +# HELP node_bcachefs_transaction_commit_total Bcachefs counter transaction_commit since filesystem creation. +# TYPE node_bcachefs_transaction_commit_total counter +node_bcachefs_transaction_commit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.338059022e+09 +# HELP node_bcachefs_write_buffer_flush_slowpath_total Bcachefs counter write_buffer_flush_slowpath since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_slowpath_total counter +node_bcachefs_write_buffer_flush_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 21031 +# HELP node_bcachefs_write_buffer_flush_sync_total Bcachefs counter write_buffer_flush_sync since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_sync_total counter +node_bcachefs_write_buffer_flush_sync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.024402e+06 +# HELP node_bcachefs_write_buffer_flush_total Bcachefs counter write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_total counter +node_bcachefs_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8370568e+07 +# HELP node_bcachefs_write_buffer_maybe_flush_total Bcachefs counter write_buffer_maybe_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_maybe_flush_total counter +node_bcachefs_write_buffer_maybe_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.7412849e+07 +# HELP node_bcachefs_write_super_total Bcachefs counter write_super since filesystem creation. +# TYPE node_bcachefs_write_super_total counter +node_bcachefs_write_super_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 30277 # HELP node_bonding_active Number of active slaves per bonding interface. # TYPE node_bonding_active gauge node_bonding_active{master="bond0"} 0 @@ -494,9 +1085,9 @@ node_disk_info{device="dm-2",major="252",minor="2",model="",path="",revision="", node_disk_info{device="dm-3",major="252",minor="3",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-4",major="252",minor="4",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-5",major="252",minor="5",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 +node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 node_disk_info{device="nvme0n1",major="259",minor="0",model="SAMSUNG EHFTF55LURSY-000Y9",path="pci-0000:02:00.0-nvme-1",revision="4NBTUY95",rotational="0",serial="S252B6CU1HG3M1",wwn="eui.p3vbbiejx5aae2r3"} 1 node_disk_info{device="sda",major="8",minor="0",model="TOSHIBA_KSDB4U86",path="pci-0000:3b:00.0-sas-phy7-lun-0",revision="0102",rotational="1",serial="2160A0D5FVGG",wwn="0x7c72382b8de36a64"} 1 node_disk_info{device="sdb",major="8",minor="16",model="SuperMicro_SSD",path="pci-0000:00:1f.2-ata-1",revision="0R",rotational="0",serial="SMC0E1B87ABBB16BD84E",wwn="0xe1b87abbb16bd84e"} 1 @@ -2267,44 +2858,44 @@ node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mount node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 # HELP node_mountstats_nfs_transport_backlog_queue_total Total number of items added to the RPC backlog queue. # TYPE node_mountstats_nfs_transport_backlog_queue_total counter -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bad_transaction_ids_total Number of times the NFS server sent a response with a transaction ID unknown to this client. # TYPE node_mountstats_nfs_transport_bad_transaction_ids_total counter -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bind_total Number of times the client has had to establish a connection from scratch to the NFS server. # TYPE node_mountstats_nfs_transport_bind_total counter -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_connect_total Number of times the client has made a TCP connection to the NFS server. # TYPE node_mountstats_nfs_transport_connect_total counter -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 1 -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 1 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_idle_time_seconds Duration since the NFS mount last saw any RPC traffic, in seconds. # TYPE node_mountstats_nfs_transport_idle_time_seconds gauge -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 11 -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 11 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_maximum_rpc_slots Maximum number of simultaneously active RPC requests ever used. # TYPE node_mountstats_nfs_transport_maximum_rpc_slots gauge -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 24 -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 24 # HELP node_mountstats_nfs_transport_pending_queue_total Total number of items added to the RPC transmission pending queue. # TYPE node_mountstats_nfs_transport_pending_queue_total counter -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 5726 -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 5726 # HELP node_mountstats_nfs_transport_receives_total Number of RPC responses for this mount received from the NFS server. # TYPE node_mountstats_nfs_transport_receives_total counter -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_transport_sending_queue_total Total number of items added to the RPC transmission sending queue. # TYPE node_mountstats_nfs_transport_sending_queue_total counter -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 26 -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 26 # HELP node_mountstats_nfs_transport_sends_total Number of RPC requests for this mount sent to the NFS server. # TYPE node_mountstats_nfs_transport_sends_total counter -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_write_bytes_total Number of bytes written using the write() syscall. # TYPE node_mountstats_nfs_write_bytes_total counter node_mountstats_nfs_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 @@ -2825,7 +3416,22 @@ node_nfsd_server_rpcs_total 18628 node_nfsd_server_threads 8 # HELP node_nvme_info Non-numeric data from /sys/class/nvme/, value is always 1. # TYPE node_nvme_info gauge -node_nvme_info{device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +node_nvme_info{cntlid="1997",device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +# HELP node_nvme_namespace_capacity_bytes Capacity of the NVMe namespace in bytes. Computed as namespace_size * namespace_logical_block_size +# TYPE node_nvme_namespace_capacity_bytes gauge +node_nvme_namespace_capacity_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_info Information about NVMe namespaces. Value is always 1 +# TYPE node_nvme_namespace_info gauge +node_nvme_namespace_info{ana_state="optimized",device="nvme0",nsid="0"} 1 +# HELP node_nvme_namespace_logical_block_size_bytes Logical block size of the NVMe namespace in bytes. Usually 4Kb. Available in /sys/class/nvme///queue/logical_block_size +# TYPE node_nvme_namespace_logical_block_size_bytes gauge +node_nvme_namespace_logical_block_size_bytes{device="nvme0",nsid="0"} 4096 +# HELP node_nvme_namespace_size_bytes Size of the NVMe namespace in bytes. Available in /sys/class/nvme///size +# TYPE node_nvme_namespace_size_bytes gauge +node_nvme_namespace_size_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_used_bytes Used space of the NVMe namespace in bytes. Available in /sys/class/nvme///nuse +# TYPE node_nvme_namespace_used_bytes gauge +node_nvme_namespace_used_bytes{device="nvme0",nsid="0"} 2e+12 # HELP node_os_info A metric with a constant '1' value labeled by build_id, id, id_like, image_id, image_version, name, pretty_name, variant, variant_id, version, version_codename, version_id. # TYPE node_os_info gauge node_os_info{build_id="",id="ubuntu",id_like="debian",image_id="",image_version="",name="Ubuntu",pretty_name="Ubuntu 20.04.2 LTS",variant="",variant_id="",version="20.04.2 LTS (Focal Fossa)",version_codename="focal",version_id="20.04"} 1 @@ -2836,22 +3442,78 @@ node_os_version{id="ubuntu",id_like="debian",name="Ubuntu"} 20.04 # TYPE node_pcidevice_current_link_transfers_per_second gauge node_pcidevice_current_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_current_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_current_link_width Value of current link's width (number of lanes) # TYPE node_pcidevice_current_link_width gauge node_pcidevice_current_link_width{bus="00",device="02",function="1",segment="0000"} 4 node_pcidevice_current_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_current_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_d3cold_allowed Whether the PCIe device supports D3cold power state (0/1). +# TYPE node_pcidevice_d3cold_allowed gauge +node_pcidevice_d3cold_allowed{bus="00",device="02",function="1",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="45",device="00",function="0",segment="0000"} 1 # HELP node_pcidevice_info Non-numeric data from /sys/bus/pci/devices/, value is always 1. # TYPE node_pcidevice_info gauge -node_pcidevice_info{bus="00",class_id="0x060400",device="02",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1634"} 1 -node_pcidevice_info{bus="01",class_id="0x010802",device="00",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0x540a"} 1 +node_pcidevice_info{bus="00",class_id="0x060400",device="02",device_id="0x1634",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1022"} 1 +node_pcidevice_info{bus="01",class_id="0x010802",device="00",device_id="0x540a",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0xc0a9"} 1 +node_pcidevice_info{bus="45",class_id="0x020000",device="00",device_id="0x1521",function="0",parent_bus="40",parent_device="01",parent_function="3",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x00a3",subsystem_vendor_id="0x8086",vendor_id="0x8086"} 1 # HELP node_pcidevice_max_link_transfers_per_second Value of maximum link's transfers per second (T/s) # TYPE node_pcidevice_max_link_transfers_per_second gauge node_pcidevice_max_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_max_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 1.6e+10 +node_pcidevice_max_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_max_link_width Value of maximum link's width (number of lanes) # TYPE node_pcidevice_max_link_width gauge node_pcidevice_max_link_width{bus="00",device="02",function="1",segment="0000"} 8 node_pcidevice_max_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_max_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_numa_node NUMA node number for the PCI device. -1 indicates unknown or not available. +# TYPE node_pcidevice_numa_node gauge +node_pcidevice_numa_node{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_power_state PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error. +# TYPE node_pcidevice_power_state gauge +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="unknown"} 0 +# HELP node_pcidevice_sriov_drivers_autoprobe Whether SR-IOV drivers autoprobe is enabled for the device (0/1). +# TYPE node_pcidevice_sriov_drivers_autoprobe gauge +node_pcidevice_sriov_drivers_autoprobe{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_drivers_autoprobe{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_sriov_drivers_autoprobe{bus="45",device="00",function="0",segment="0000"} 1 +# HELP node_pcidevice_sriov_numvfs Number of Virtual Functions (VFs) currently enabled for SR-IOV. +# TYPE node_pcidevice_sriov_numvfs gauge +node_pcidevice_sriov_numvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_numvfs{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_sriov_numvfs{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_sriov_totalvfs Total number of Virtual Functions (VFs) supported by the device. +# TYPE node_pcidevice_sriov_totalvfs gauge +node_pcidevice_sriov_totalvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_totalvfs{bus="01",device="00",function="0",segment="0000"} 8 +node_pcidevice_sriov_totalvfs{bus="45",device="00",function="0",segment="0000"} 7 +# HELP node_pcidevice_sriov_vf_total_msix Total number of MSI-X vectors for Virtual Functions. +# TYPE node_pcidevice_sriov_vf_total_msix gauge +node_pcidevice_sriov_vf_total_msix{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_vf_total_msix{bus="01",device="00",function="0",segment="0000"} 16 +node_pcidevice_sriov_vf_total_msix{bus="45",device="00",function="0",segment="0000"} 0 # HELP node_power_supply_capacity capacity value of /sys/class/power_supply/. # TYPE node_power_supply_capacity gauge node_power_supply_capacity{power_supply="BAT0"} 81 @@ -2978,6 +3640,7 @@ node_schedstat_waiting_seconds_total{cpu="1"} 364107.263788241 # TYPE node_scrape_collector_success gauge node_scrape_collector_success{collector="arp"} 1 node_scrape_collector_success{collector="bcache"} 1 +node_scrape_collector_success{collector="bcachefs"} 1 node_scrape_collector_success{collector="bonding"} 1 node_scrape_collector_success{collector="btrfs"} 1 node_scrape_collector_success{collector="buddyinfo"} 1 @@ -3356,6 +4019,10 @@ node_wifi_station_receive_bits_per_second{device="wlan0",mac_address="aa:bb:cc:d # TYPE node_wifi_station_receive_bytes_total counter node_wifi_station_receive_bytes_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 node_wifi_station_receive_bytes_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 +# HELP node_wifi_station_received_packets_total The total number of packets received by a station. +# TYPE node_wifi_station_received_packets_total counter +node_wifi_station_received_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_received_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_wifi_station_signal_dbm The current WiFi signal strength, in decibel-milliwatts (dBm). # TYPE node_wifi_station_signal_dbm gauge node_wifi_station_signal_dbm{device="wlan0",mac_address="01:02:03:04:05:06"} -26 @@ -3376,6 +4043,10 @@ node_wifi_station_transmit_failed_total{device="wlan0",mac_address="aa:bb:cc:dd: # TYPE node_wifi_station_transmit_retries_total counter node_wifi_station_transmit_retries_total{device="wlan0",mac_address="01:02:03:04:05:06"} 20 node_wifi_station_transmit_retries_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 10 +# HELP node_wifi_station_transmitted_packets_total The total number of packets transmitted by a station. +# TYPE node_wifi_station_transmitted_packets_total counter +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_xfrm_acquire_error_packets_total State hasn’t been fully acquired before use # TYPE node_xfrm_acquire_error_packets_total counter node_xfrm_acquire_error_packets_total 24532 diff --git a/collector/fixtures/e2e-output-darwin.txt b/collector/fixtures/e2e-output-darwin.txt index 61b36997..cf29fb47 100644 --- a/collector/fixtures/e2e-output-darwin.txt +++ b/collector/fixtures/e2e-output-darwin.txt @@ -94,15 +94,19 @@ node_buddyinfo_blocks{node="0",size="9",zone="Normal"} 0 # HELP node_disk_read_errors_total The total number of read errors. # TYPE node_disk_read_errors_total counter node_disk_read_errors_total{device="disk0"} 0 +node_disk_read_errors_total{device="disk4"} 0 # HELP node_disk_read_retries_total The total number of read retries. # TYPE node_disk_read_retries_total counter node_disk_read_retries_total{device="disk0"} 0 +node_disk_read_retries_total{device="disk4"} 0 # HELP node_disk_write_errors_total The total number of write errors. # TYPE node_disk_write_errors_total counter node_disk_write_errors_total{device="disk0"} 0 +node_disk_write_errors_total{device="disk4"} 0 # HELP node_disk_write_retries_total The total number of write retries. # TYPE node_disk_write_retries_total counter node_disk_write_retries_total{device="disk0"} 0 +node_disk_write_retries_total{device="disk4"} 0 # HELP node_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, goversion from which node_exporter was built, and the goos and goarch for the build. # TYPE node_exporter_build_info gauge # HELP node_memory_swap_total_bytes Memory information field swap_total_bytes. diff --git a/collector/fixtures/e2e-output-freebsd.txt b/collector/fixtures/e2e-output-freebsd.txt index fad76e6f..84239652 100644 --- a/collector/fixtures/e2e-output-freebsd.txt +++ b/collector/fixtures/e2e-output-freebsd.txt @@ -261,6 +261,18 @@ node_xfrm_out_state_proto_error_packets_total 4542 # HELP node_xfrm_out_state_seq_error_packets_total Sequence error i.e. Sequence number overflow # TYPE node_xfrm_out_state_seq_error_packets_total counter node_xfrm_out_state_seq_error_packets_total 543 +# HELP node_zfs_arcstats_c_min_bytes ZFS ARC minimum size +# TYPE node_zfs_arcstats_c_min_bytes gauge +node_zfs_arcstats_c_min_bytes 1.99743232e+08 +# HELP node_zfs_arcstats_mfu_ghost_size ZFS ARC MFU ghost size +# TYPE node_zfs_arcstats_mfu_ghost_size gauge +node_zfs_arcstats_mfu_ghost_size 0 +# HELP node_zfs_arcstats_mru_ghost_hits_total ZFS ARC MRU ghost hits +# TYPE node_zfs_arcstats_mru_ghost_hits_total counter +node_zfs_arcstats_mru_ghost_hits_total 0 +# HELP node_zfs_arcstats_pm_bytes ZFS ARC meta MRU target frac +# TYPE node_zfs_arcstats_pm_bytes gauge +node_zfs_arcstats_pm_bytes 2.147483648e+09 # HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler. # TYPE promhttp_metric_handler_errors_total counter promhttp_metric_handler_errors_total{cause="encoding"} 0 diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 634386da..09a58cdc 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -144,6 +144,597 @@ node_bcache_writeback_rate_proportional_term{backing_device="bdev0",uuid="deaddd # HELP node_bcache_written_bytes_total Sum of all data that has been written to the cache. # TYPE node_bcache_written_bytes_total counter node_bcache_written_bytes_total{cache_device="cache0",uuid="deaddd54-c735-46d5-868e-f331c5fd7c74"} 0 +# HELP node_bcachefs_accounting_key_to_wb_slowpath_total Bcachefs counter accounting_key_to_wb_slowpath since filesystem creation. +# TYPE node_bcachefs_accounting_key_to_wb_slowpath_total counter +node_bcachefs_accounting_key_to_wb_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.4105502e+07 +# HELP node_bcachefs_bkey_pack_pos_fail_total Bcachefs counter bkey_pack_pos_fail since filesystem creation. +# TYPE node_bcachefs_bkey_pack_pos_fail_total counter +node_bcachefs_bkey_pack_pos_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_btree_cache_cannibalize_lock_fail_total Bcachefs counter btree_cache_cannibalize_lock_fail since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_fail_total counter +node_bcachefs_btree_cache_cannibalize_lock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 24213 +# HELP node_bcachefs_btree_cache_cannibalize_lock_total Bcachefs counter btree_cache_cannibalize_lock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_total counter +node_bcachefs_btree_cache_cannibalize_lock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.2061408e+07 +# HELP node_bcachefs_btree_cache_cannibalize_total Bcachefs counter btree_cache_cannibalize since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_total counter +node_bcachefs_btree_cache_cannibalize_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.6587339e+07 +# HELP node_bcachefs_btree_cache_cannibalize_unlock_total Bcachefs counter btree_cache_cannibalize_unlock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_unlock_total counter +node_bcachefs_btree_cache_cannibalize_unlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.6260384e+07 +# HELP node_bcachefs_btree_cache_reap_total Bcachefs counter btree_cache_reap since filesystem creation. +# TYPE node_bcachefs_btree_cache_reap_total counter +node_bcachefs_btree_cache_reap_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9068459e+07 +# HELP node_bcachefs_btree_cache_scan_total Bcachefs counter btree_cache_scan since filesystem creation. +# TYPE node_bcachefs_btree_cache_scan_total counter +node_bcachefs_btree_cache_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 427545 +# HELP node_bcachefs_btree_cache_size_bytes Btree cache memory usage in bytes. +# TYPE node_bcachefs_btree_cache_size_bytes gauge +node_bcachefs_btree_cache_size_bytes{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_btree_key_cache_fill_total Bcachefs counter btree_key_cache_fill since filesystem creation. +# TYPE node_bcachefs_btree_key_cache_fill_total counter +node_bcachefs_btree_key_cache_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.69308144e+08 +# HELP node_bcachefs_btree_node_alloc_total Bcachefs counter btree_node_alloc since filesystem creation. +# TYPE node_bcachefs_btree_node_alloc_total counter +node_bcachefs_btree_node_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.665587e+06 +# HELP node_bcachefs_btree_node_compact_total Bcachefs counter btree_node_compact since filesystem creation. +# TYPE node_bcachefs_btree_node_compact_total counter +node_bcachefs_btree_node_compact_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.554425e+06 +# HELP node_bcachefs_btree_node_free_total Bcachefs counter btree_node_free since filesystem creation. +# TYPE node_bcachefs_btree_node_free_total counter +node_bcachefs_btree_node_free_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4112667e+07 +# HELP node_bcachefs_btree_node_merge_attempt_total Bcachefs counter btree_node_merge_attempt since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_attempt_total counter +node_bcachefs_btree_node_merge_attempt_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5868895e+07 +# HELP node_bcachefs_btree_node_merge_total Bcachefs counter btree_node_merge since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_total counter +node_bcachefs_btree_node_merge_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 559684 +# HELP node_bcachefs_btree_node_read_total Bcachefs counter btree_node_read since filesystem creation. +# TYPE node_bcachefs_btree_node_read_total counter +node_bcachefs_btree_node_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.0225874e+07 +# HELP node_bcachefs_btree_node_rewrite_total Bcachefs counter btree_node_rewrite since filesystem creation. +# TYPE node_bcachefs_btree_node_rewrite_total counter +node_bcachefs_btree_node_rewrite_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.130316e+06 +# HELP node_bcachefs_btree_node_set_root_total Bcachefs counter btree_node_set_root since filesystem creation. +# TYPE node_bcachefs_btree_node_set_root_total counter +node_bcachefs_btree_node_set_root_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 77958 +# HELP node_bcachefs_btree_node_split_total Bcachefs counter btree_node_split since filesystem creation. +# TYPE node_bcachefs_btree_node_split_total counter +node_bcachefs_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 710571 +# HELP node_bcachefs_btree_node_write_total Bcachefs counter btree_node_write since filesystem creation. +# TYPE node_bcachefs_btree_node_write_total counter +node_bcachefs_btree_node_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4796849e+08 +# HELP node_bcachefs_btree_path_relock_fail_total Bcachefs counter btree_path_relock_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_relock_fail_total counter +node_bcachefs_btree_path_relock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.6213103e+07 +# HELP node_bcachefs_btree_path_upgrade_fail_total Bcachefs counter btree_path_upgrade_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_upgrade_fail_total counter +node_bcachefs_btree_path_upgrade_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.103667e+06 +# HELP node_bcachefs_btree_reserve_get_fail_total Bcachefs counter btree_reserve_get_fail since filesystem creation. +# TYPE node_bcachefs_btree_reserve_get_fail_total counter +node_bcachefs_btree_reserve_get_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11706 +# HELP node_bcachefs_btree_write_average_size_bytes Average btree write size by type. +# TYPE node_bcachefs_btree_write_average_size_bytes gauge +node_bcachefs_btree_write_average_size_bytes{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 720 +node_bcachefs_btree_write_average_size_bytes{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 28876 +node_bcachefs_btree_write_average_size_bytes{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 102400 +node_bcachefs_btree_write_average_size_bytes{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1290 +node_bcachefs_btree_write_average_size_bytes{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 697 +# HELP node_bcachefs_btree_writes_total Number of btree writes by type. +# TYPE node_bcachefs_btree_writes_total counter +node_bcachefs_btree_writes_total{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 14401 +node_bcachefs_btree_writes_total{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.055926e+06 +node_bcachefs_btree_writes_total{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.298401e+06 +node_bcachefs_btree_writes_total{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.035363e+06 +node_bcachefs_btree_writes_total{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.6903805e+07 +# HELP node_bcachefs_bucket_alloc_fail_total Bcachefs counter bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_fail_total counter +node_bcachefs_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1156091e+07 +# HELP node_bcachefs_bucket_alloc_from_stripe_total Bcachefs counter bucket_alloc_from_stripe since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_from_stripe_total counter +node_bcachefs_bucket_alloc_from_stripe_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_bucket_alloc_total Bcachefs counter bucket_alloc since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_total counter +node_bcachefs_bucket_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7363674e+07 +# HELP node_bcachefs_bucket_discard_fast_total Bcachefs counter bucket_discard_fast since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_total counter +node_bcachefs_bucket_discard_fast_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 10204 +# HELP node_bcachefs_bucket_discard_fast_worker_total Bcachefs counter bucket_discard_fast_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_worker_total counter +node_bcachefs_bucket_discard_fast_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4012 +# HELP node_bcachefs_bucket_discard_total Bcachefs counter bucket_discard since filesystem creation. +# TYPE node_bcachefs_bucket_discard_total counter +node_bcachefs_bucket_discard_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4751388e+07 +# HELP node_bcachefs_bucket_discard_worker_total Bcachefs counter bucket_discard_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_worker_total counter +node_bcachefs_bucket_discard_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.021501e+06 +# HELP node_bcachefs_bucket_invalidate_total Bcachefs counter bucket_invalidate since filesystem creation. +# TYPE node_bcachefs_bucket_invalidate_total counter +node_bcachefs_bucket_invalidate_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.483205e+06 +# HELP node_bcachefs_cached_ptr_drop_total Bcachefs counter cached_ptr_drop since filesystem creation. +# TYPE node_bcachefs_cached_ptr_drop_total counter +node_bcachefs_cached_ptr_drop_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_compression_compressed_bytes Compressed size by algorithm. +# TYPE node_bcachefs_compression_compressed_bytes gauge +node_bcachefs_compression_compressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_compressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.2505975193e+10 +node_bcachefs_compression_compressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42665652224e+11 +# HELP node_bcachefs_compression_uncompressed_bytes Uncompressed size by algorithm. +# TYPE node_bcachefs_compression_uncompressed_bytes gauge +node_bcachefs_compression_uncompressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.6450417868e+10 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.47466319872e+11 +# HELP node_bcachefs_copygc_total Bcachefs counter copygc since filesystem creation. +# TYPE node_bcachefs_copygc_total counter +node_bcachefs_copygc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 424790 +# HELP node_bcachefs_copygc_wait_obsolete_total Bcachefs counter copygc_wait_obsolete since filesystem creation. +# TYPE node_bcachefs_copygc_wait_obsolete_total counter +node_bcachefs_copygc_wait_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 537321 +# HELP node_bcachefs_data_read_bounce_total Bcachefs counter data_read_bounce since filesystem creation. +# TYPE node_bcachefs_data_read_bounce_total counter +node_bcachefs_data_read_bounce_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.5052058e+08 +# HELP node_bcachefs_data_read_fail_and_poison_total Bcachefs counter data_read_fail_and_poison since filesystem creation. +# TYPE node_bcachefs_data_read_fail_and_poison_total counter +node_bcachefs_data_read_fail_and_poison_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_hole_total Bcachefs counter data_read_hole since filesystem creation. +# TYPE node_bcachefs_data_read_hole_total counter +node_bcachefs_data_read_hole_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.858174650941e+12 +# HELP node_bcachefs_data_read_inline_total Bcachefs counter data_read_inline since filesystem creation. +# TYPE node_bcachefs_data_read_inline_total counter +node_bcachefs_data_read_inline_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5998753177e+10 +# HELP node_bcachefs_data_read_narrow_crcs_fail_total Bcachefs counter data_read_narrow_crcs_fail since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_fail_total counter +node_bcachefs_data_read_narrow_crcs_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1779 +# HELP node_bcachefs_data_read_narrow_crcs_total Bcachefs counter data_read_narrow_crcs since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_total counter +node_bcachefs_data_read_narrow_crcs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18529 +# HELP node_bcachefs_data_read_nopromote_already_promoted_total Bcachefs counter data_read_nopromote_already_promoted since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_already_promoted_total counter +node_bcachefs_data_read_nopromote_already_promoted_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.11037452e+08 +# HELP node_bcachefs_data_read_nopromote_congested_total Bcachefs counter data_read_nopromote_congested since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_congested_total counter +node_bcachefs_data_read_nopromote_congested_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.913847e+06 +# HELP node_bcachefs_data_read_nopromote_may_not_total Bcachefs counter data_read_nopromote_may_not since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_may_not_total counter +node_bcachefs_data_read_nopromote_may_not_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0206095e+07 +# HELP node_bcachefs_data_read_nopromote_total Bcachefs counter data_read_nopromote since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_total counter +node_bcachefs_data_read_nopromote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42468868e+08 +# HELP node_bcachefs_data_read_nopromote_unwritten_total Bcachefs counter data_read_nopromote_unwritten since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_unwritten_total counter +node_bcachefs_data_read_nopromote_unwritten_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_promote_total Bcachefs counter data_read_promote since filesystem creation. +# TYPE node_bcachefs_data_read_promote_total counter +node_bcachefs_data_read_promote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.19833053184e+11 +# HELP node_bcachefs_data_read_retry_total Bcachefs counter data_read_retry since filesystem creation. +# TYPE node_bcachefs_data_read_retry_total counter +node_bcachefs_data_read_retry_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.2404675e+07 +# HELP node_bcachefs_data_read_reuse_race_total Bcachefs counter data_read_reuse_race since filesystem creation. +# TYPE node_bcachefs_data_read_reuse_race_total counter +node_bcachefs_data_read_reuse_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 201095 +# HELP node_bcachefs_data_read_split_total Bcachefs counter data_read_split since filesystem creation. +# TYPE node_bcachefs_data_read_split_total counter +node_bcachefs_data_read_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.18590695e+08 +# HELP node_bcachefs_data_read_total Bcachefs counter data_read since filesystem creation. +# TYPE node_bcachefs_data_read_total counter +node_bcachefs_data_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8928267436032e+13 +# HELP node_bcachefs_data_update_fail_total Bcachefs counter data_update_fail since filesystem creation. +# TYPE node_bcachefs_data_update_fail_total counter +node_bcachefs_data_update_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.138166333e+09 +# HELP node_bcachefs_data_update_in_flight_total Bcachefs counter data_update_in_flight since filesystem creation. +# TYPE node_bcachefs_data_update_in_flight_total counter +node_bcachefs_data_update_in_flight_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.978784e+06 +# HELP node_bcachefs_data_update_key_fail_total Bcachefs counter data_update_key_fail since filesystem creation. +# TYPE node_bcachefs_data_update_key_fail_total counter +node_bcachefs_data_update_key_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4373939404e+10 +# HELP node_bcachefs_data_update_key_total Bcachefs counter data_update_key since filesystem creation. +# TYPE node_bcachefs_data_update_key_total counter +node_bcachefs_data_update_key_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00275460453171e+14 +# HELP node_bcachefs_data_update_no_io_total Bcachefs counter data_update_no_io since filesystem creation. +# TYPE node_bcachefs_data_update_no_io_total counter +node_bcachefs_data_update_no_io_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00824357273e+11 +# HELP node_bcachefs_data_update_noop_obsolete_total Bcachefs counter data_update_noop_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_noop_obsolete_total counter +node_bcachefs_data_update_noop_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_update_pred_total Bcachefs counter data_update_pred since filesystem creation. +# TYPE node_bcachefs_data_update_pred_total counter +node_bcachefs_data_update_pred_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.947802324992e+13 +# HELP node_bcachefs_data_update_read_total Bcachefs counter data_update_read since filesystem creation. +# TYPE node_bcachefs_data_update_read_total counter +node_bcachefs_data_update_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.9390295338188e+13 +# HELP node_bcachefs_data_update_start_fail_obsolete_total Bcachefs counter data_update_start_fail_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_start_fail_obsolete_total counter +node_bcachefs_data_update_start_fail_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.14018822443e+11 +# HELP node_bcachefs_data_update_total Bcachefs counter data_update since filesystem creation. +# TYPE node_bcachefs_data_update_total counter +node_bcachefs_data_update_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4206847997116416e+16 +# HELP node_bcachefs_data_update_useless_write_fail_total Bcachefs counter data_update_useless_write_fail since filesystem creation. +# TYPE node_bcachefs_data_update_useless_write_fail_total counter +node_bcachefs_data_update_useless_write_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.30428461e+09 +# HELP node_bcachefs_data_update_write_total Bcachefs counter data_update_write since filesystem creation. +# TYPE node_bcachefs_data_update_write_total counter +node_bcachefs_data_update_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7163493018828e+13 +# HELP node_bcachefs_data_write_total Bcachefs counter data_write since filesystem creation. +# TYPE node_bcachefs_data_write_total counter +node_bcachefs_data_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0780769764966e+13 +# HELP node_bcachefs_device_bucket_size_bytes Bucket size in bytes. +# TYPE node_bcachefs_device_bucket_size_bytes gauge +node_bcachefs_device_bucket_size_bytes{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 524288 +node_bcachefs_device_bucket_size_bytes{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +# HELP node_bcachefs_device_buckets Total number of buckets. +# TYPE node_bcachefs_device_buckets gauge +node_bcachefs_device_buckets{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953880 +node_bcachefs_device_buckets{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.629824e+06 +node_bcachefs_device_buckets{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953864 +node_bcachefs_device_buckets{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.907723e+06 +node_bcachefs_device_buckets{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.384637e+06 +# HELP node_bcachefs_device_durability Device durability setting. +# TYPE node_bcachefs_device_durability gauge +node_bcachefs_device_durability{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_info Device information. +# TYPE node_bcachefs_device_info gauge +node_bcachefs_device_info{device="10",label="disk-10",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="4",label="disk-4",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="6",label="disk-6",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="7",label="disk-7",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="8",label="disk-8",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_io_done_bytes_total IO bytes by operation type and data type. +# TYPE node_bcachefs_device_io_done_bytes_total counter +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.24288e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 16384 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.193358848e+09 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 589824 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.912896e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.767671263232e+12 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.82753624064e+11 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.432028966912e+12 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 677376 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.02313054208e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.52377698304e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.770452246528e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.258285805568e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.10019098624e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.62070339584e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.53932742656e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.8382641152e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.115020546048e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.072510210048e+12 +# HELP node_bcachefs_device_io_errors_total IO errors by error type. +# TYPE node_bcachefs_device_io_errors_total counter +node_bcachefs_device_io_errors_total{device="10",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 197416 +node_bcachefs_device_io_errors_total{device="4",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 205 +node_bcachefs_device_io_errors_total{device="6",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5 +node_bcachefs_device_io_errors_total{device="6",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18828 +node_bcachefs_device_io_errors_total{device="6",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_io_errors_total{device="7",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18 +node_bcachefs_device_io_errors_total{device="7",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="7",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_error_throw_total Bcachefs counter error_throw since filesystem creation. +# TYPE node_bcachefs_error_throw_total counter +node_bcachefs_error_throw_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.719910958e+09 +# HELP node_bcachefs_errors_total Error count by error type. +# TYPE node_bcachefs_errors_total counter +node_bcachefs_errors_total{error_type="accounting_mismatch",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6 +node_bcachefs_errors_total{error_type="alloc_key_cached_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="alloc_key_data_type_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4415 +node_bcachefs_errors_total{error_type="alloc_key_dirty_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4538 +node_bcachefs_errors_total{error_type="alloc_key_to_missing_lru_entry",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4517 +node_bcachefs_errors_total{error_type="backpointer_to_missing_ptr",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 45480 +node_bcachefs_errors_total{error_type="bset_bad_csum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_data_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_topology_bad_max_key",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_io_opts_not_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1299659571772285e+19 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid_but_cached",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44612 +node_bcachefs_errors_total{error_type="lru_entry_bad",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="ptr_to_missing_backpointer",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44112 +node_bcachefs_errors_total{error_type="reconcile_work_incorrectly_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 113913 +node_bcachefs_errors_total{error_type="subvol_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 194 +node_bcachefs_errors_total{error_type="validate_error_in_commit",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="vfs_bad_inode_rm",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 121 +# HELP node_bcachefs_evacuate_bucket_total Bcachefs counter evacuate_bucket since filesystem creation. +# TYPE node_bcachefs_evacuate_bucket_total counter +node_bcachefs_evacuate_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.735247e+06 +# HELP node_bcachefs_fsync_total Bcachefs counter fsync since filesystem creation. +# TYPE node_bcachefs_fsync_total counter +node_bcachefs_fsync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.515147e+06 +# HELP node_bcachefs_gc_gens_end_total Bcachefs counter gc_gens_end since filesystem creation. +# TYPE node_bcachefs_gc_gens_end_total counter +node_bcachefs_gc_gens_end_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_gc_gens_start_total Bcachefs counter gc_gens_start since filesystem creation. +# TYPE node_bcachefs_gc_gens_start_total counter +node_bcachefs_gc_gens_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_info Filesystem information. +# TYPE node_bcachefs_info gauge +node_bcachefs_info{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_journal_full_total Bcachefs counter journal_full since filesystem creation. +# TYPE node_bcachefs_journal_full_total counter +node_bcachefs_journal_full_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 94587 +# HELP node_bcachefs_journal_reclaim_finish_total Bcachefs counter journal_reclaim_finish since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_finish_total counter +node_bcachefs_journal_reclaim_finish_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_reclaim_start_total Bcachefs counter journal_reclaim_start since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_start_total counter +node_bcachefs_journal_reclaim_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_res_get_blocked_total Bcachefs counter journal_res_get_blocked since filesystem creation. +# TYPE node_bcachefs_journal_res_get_blocked_total counter +node_bcachefs_journal_res_get_blocked_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 74696 +# HELP node_bcachefs_journal_write_total Bcachefs counter journal_write since filesystem creation. +# TYPE node_bcachefs_journal_write_total counter +node_bcachefs_journal_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5458801e+07 +# HELP node_bcachefs_open_bucket_alloc_fail_total Bcachefs counter open_bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_open_bucket_alloc_fail_total counter +node_bcachefs_open_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_btree_total Bcachefs counter reconcile_btree since filesystem creation. +# TYPE node_bcachefs_reconcile_btree_total counter +node_bcachefs_reconcile_btree_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.158221066e+09 +# HELP node_bcachefs_reconcile_clear_scan_total Bcachefs counter reconcile_clear_scan since filesystem creation. +# TYPE node_bcachefs_reconcile_clear_scan_total counter +node_bcachefs_reconcile_clear_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11 +# HELP node_bcachefs_reconcile_data_total Bcachefs counter reconcile_data since filesystem creation. +# TYPE node_bcachefs_reconcile_data_total counter +node_bcachefs_reconcile_data_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_phys_total Bcachefs counter reconcile_phys since filesystem creation. +# TYPE node_bcachefs_reconcile_phys_total counter +node_bcachefs_reconcile_phys_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9928939526553e+13 +# HELP node_bcachefs_reconcile_scan_device_total Bcachefs counter reconcile_scan_device since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_device_total counter +node_bcachefs_reconcile_scan_device_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.3562883710976e+13 +# HELP node_bcachefs_reconcile_scan_fs_total Bcachefs counter reconcile_scan_fs since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_fs_total counter +node_bcachefs_reconcile_scan_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_inum_total Bcachefs counter reconcile_scan_inum since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_inum_total counter +node_bcachefs_reconcile_scan_inum_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_metadata_total Bcachefs counter reconcile_scan_metadata since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_metadata_total counter +node_bcachefs_reconcile_scan_metadata_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_pending_total Bcachefs counter reconcile_scan_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_pending_total counter +node_bcachefs_reconcile_scan_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_set_pending_total Bcachefs counter reconcile_set_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_set_pending_total counter +node_bcachefs_reconcile_set_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.1138512896e+10 +# HELP node_bcachefs_sectors_alloc_total Bcachefs counter sectors_alloc since filesystem creation. +# TYPE node_bcachefs_sectors_alloc_total counter +node_bcachefs_sectors_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.2534432556646e+13 +# HELP node_bcachefs_stripe_alloc_total Bcachefs counter stripe_alloc since filesystem creation. +# TYPE node_bcachefs_stripe_alloc_total counter +node_bcachefs_stripe_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_fail_total Bcachefs counter stripe_create_fail since filesystem creation. +# TYPE node_bcachefs_stripe_create_fail_total counter +node_bcachefs_stripe_create_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_total Bcachefs counter stripe_create since filesystem creation. +# TYPE node_bcachefs_stripe_create_total counter +node_bcachefs_stripe_create_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_delete_total Bcachefs counter stripe_delete since filesystem creation. +# TYPE node_bcachefs_stripe_delete_total counter +node_bcachefs_stripe_delete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_reuse_total Bcachefs counter stripe_reuse since filesystem creation. +# TYPE node_bcachefs_stripe_reuse_total counter +node_bcachefs_stripe_reuse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_bucket_total Bcachefs counter stripe_update_bucket since filesystem creation. +# TYPE node_bcachefs_stripe_update_bucket_total counter +node_bcachefs_stripe_update_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_fail_total Bcachefs counter stripe_update_extent_fail since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_fail_total counter +node_bcachefs_stripe_update_extent_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_total Bcachefs counter stripe_update_extent since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_total counter +node_bcachefs_stripe_update_extent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_sync_fs_total Bcachefs counter sync_fs since filesystem creation. +# TYPE node_bcachefs_sync_fs_total counter +node_bcachefs_sync_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 42023 +# HELP node_bcachefs_trans_blocked_journal_reclaim_total Bcachefs counter trans_blocked_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_blocked_journal_reclaim_total counter +node_bcachefs_trans_blocked_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 78 +# HELP node_bcachefs_trans_restart_btree_node_reused_total Bcachefs counter trans_restart_btree_node_reused since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_reused_total counter +node_bcachefs_trans_restart_btree_node_reused_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 53354 +# HELP node_bcachefs_trans_restart_btree_node_split_total Bcachefs counter trans_restart_btree_node_split since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_split_total counter +node_bcachefs_trans_restart_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 100190 +# HELP node_bcachefs_trans_restart_fault_inject_total Bcachefs counter trans_restart_fault_inject since filesystem creation. +# TYPE node_bcachefs_trans_restart_fault_inject_total counter +node_bcachefs_trans_restart_fault_inject_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_injected_total Bcachefs counter trans_restart_injected since filesystem creation. +# TYPE node_bcachefs_trans_restart_injected_total counter +node_bcachefs_trans_restart_injected_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_iter_upgrade_total Bcachefs counter trans_restart_iter_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_iter_upgrade_total counter +node_bcachefs_trans_restart_iter_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_preres_get_total Bcachefs counter trans_restart_journal_preres_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_preres_get_total counter +node_bcachefs_trans_restart_journal_preres_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_reclaim_total Bcachefs counter trans_restart_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_reclaim_total counter +node_bcachefs_trans_restart_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_res_get_total Bcachefs counter trans_restart_journal_res_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_res_get_total counter +node_bcachefs_trans_restart_journal_res_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_key_realloced_total Bcachefs counter trans_restart_key_cache_key_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_key_realloced_total counter +node_bcachefs_trans_restart_key_cache_key_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_raced_total Bcachefs counter trans_restart_key_cache_raced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_raced_total counter +node_bcachefs_trans_restart_key_cache_raced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_upgrade_total Bcachefs counter trans_restart_key_cache_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_upgrade_total counter +node_bcachefs_trans_restart_key_cache_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mark_replicas_total Bcachefs counter trans_restart_mark_replicas since filesystem creation. +# TYPE node_bcachefs_trans_restart_mark_replicas_total counter +node_bcachefs_trans_restart_mark_replicas_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mem_realloced_total Bcachefs counter trans_restart_mem_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_mem_realloced_total counter +node_bcachefs_trans_restart_mem_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6111 +# HELP node_bcachefs_trans_restart_memory_allocation_failure_total Bcachefs counter trans_restart_memory_allocation_failure since filesystem creation. +# TYPE node_bcachefs_trans_restart_memory_allocation_failure_total counter +node_bcachefs_trans_restart_memory_allocation_failure_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.7513334e+07 +# HELP node_bcachefs_trans_restart_relock_after_fill_total Bcachefs counter trans_restart_relock_after_fill since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_after_fill_total counter +node_bcachefs_trans_restart_relock_after_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total Bcachefs counter trans_restart_relock_key_cache_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_next_node_total Bcachefs counter trans_restart_relock_next_node since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_next_node_total counter +node_bcachefs_trans_restart_relock_next_node_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 22087 +# HELP node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total Bcachefs counter trans_restart_relock_parent_for_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2581 +# HELP node_bcachefs_trans_restart_relock_path_intent_total Bcachefs counter trans_restart_relock_path_intent since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_intent_total counter +node_bcachefs_trans_restart_relock_path_intent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 298090 +# HELP node_bcachefs_trans_restart_relock_path_total Bcachefs counter trans_restart_relock_path since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_total counter +node_bcachefs_trans_restart_relock_path_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.752728e+07 +# HELP node_bcachefs_trans_restart_relock_total Bcachefs counter trans_restart_relock since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_total counter +node_bcachefs_trans_restart_relock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.806875e+06 +# HELP node_bcachefs_trans_restart_split_race_total Bcachefs counter trans_restart_split_race since filesystem creation. +# TYPE node_bcachefs_trans_restart_split_race_total counter +node_bcachefs_trans_restart_split_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_too_many_iters_total Bcachefs counter trans_restart_too_many_iters since filesystem creation. +# TYPE node_bcachefs_trans_restart_too_many_iters_total counter +node_bcachefs_trans_restart_too_many_iters_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_traverse_total Bcachefs counter trans_restart_traverse since filesystem creation. +# TYPE node_bcachefs_trans_restart_traverse_total counter +node_bcachefs_trans_restart_traverse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_upgrade_total Bcachefs counter trans_restart_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_upgrade_total counter +node_bcachefs_trans_restart_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.055154e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_recursion_limit_total Bcachefs counter trans_restart_would_deadlock_recursion_limit since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_recursion_limit_total counter +node_bcachefs_trans_restart_would_deadlock_recursion_limit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_would_deadlock_total Bcachefs counter trans_restart_would_deadlock since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_total counter +node_bcachefs_trans_restart_would_deadlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.025983e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_write_total Bcachefs counter trans_restart_would_deadlock_write since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_write_total counter +node_bcachefs_trans_restart_would_deadlock_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +# HELP node_bcachefs_trans_restart_write_buffer_flush_total Bcachefs counter trans_restart_write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_trans_restart_write_buffer_flush_total counter +node_bcachefs_trans_restart_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.1706894e+07 +# HELP node_bcachefs_trans_traverse_all_total Bcachefs counter trans_traverse_all since filesystem creation. +# TYPE node_bcachefs_trans_traverse_all_total counter +node_bcachefs_trans_traverse_all_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.8477746e+07 +# HELP node_bcachefs_transaction_commit_total Bcachefs counter transaction_commit since filesystem creation. +# TYPE node_bcachefs_transaction_commit_total counter +node_bcachefs_transaction_commit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.338059022e+09 +# HELP node_bcachefs_write_buffer_flush_slowpath_total Bcachefs counter write_buffer_flush_slowpath since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_slowpath_total counter +node_bcachefs_write_buffer_flush_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 21031 +# HELP node_bcachefs_write_buffer_flush_sync_total Bcachefs counter write_buffer_flush_sync since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_sync_total counter +node_bcachefs_write_buffer_flush_sync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.024402e+06 +# HELP node_bcachefs_write_buffer_flush_total Bcachefs counter write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_total counter +node_bcachefs_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8370568e+07 +# HELP node_bcachefs_write_buffer_maybe_flush_total Bcachefs counter write_buffer_maybe_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_maybe_flush_total counter +node_bcachefs_write_buffer_maybe_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.7412849e+07 +# HELP node_bcachefs_write_super_total Bcachefs counter write_super since filesystem creation. +# TYPE node_bcachefs_write_super_total counter +node_bcachefs_write_super_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 30277 # HELP node_bonding_active Number of active slaves per bonding interface. # TYPE node_bonding_active gauge node_bonding_active{master="bond0"} 0 @@ -311,6 +902,16 @@ node_cpu_flag_info{flag="aes"} 1 node_cpu_flag_info{flag="avx"} 1 node_cpu_flag_info{flag="avx2"} 1 node_cpu_flag_info{flag="constant_tsc"} 1 +# HELP node_cpu_frequency_hertz CPU frequency in hertz from /proc/cpuinfo. +# TYPE node_cpu_frequency_hertz gauge +node_cpu_frequency_hertz{core="0",cpu="0",package="0"} 7.99998e+08 +node_cpu_frequency_hertz{core="0",cpu="4",package="0"} 7.99989e+08 +node_cpu_frequency_hertz{core="1",cpu="1",package="0"} 8.00037e+08 +node_cpu_frequency_hertz{core="1",cpu="5",package="0"} 8.00083e+08 +node_cpu_frequency_hertz{core="2",cpu="2",package="0"} 8.0001e+08 +node_cpu_frequency_hertz{core="2",cpu="6",package="0"} 8.00017e+08 +node_cpu_frequency_hertz{core="3",cpu="3",package="0"} 8.00028e+08 +node_cpu_frequency_hertz{core="3",cpu="7",package="0"} 8.0003e+08 # HELP node_cpu_guest_seconds_total Seconds the CPUs spent in guests (VMs) for each mode. # TYPE node_cpu_guest_seconds_total counter node_cpu_guest_seconds_total{cpu="0",mode="nice"} 0.01 @@ -516,9 +1117,9 @@ node_disk_info{device="dm-2",major="252",minor="2",model="",path="",revision="", node_disk_info{device="dm-3",major="252",minor="3",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-4",major="252",minor="4",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-5",major="252",minor="5",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 +node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 node_disk_info{device="nvme0n1",major="259",minor="0",model="SAMSUNG EHFTF55LURSY-000Y9",path="pci-0000:02:00.0-nvme-1",revision="4NBTUY95",rotational="0",serial="S252B6CU1HG3M1",wwn="eui.p3vbbiejx5aae2r3"} 1 node_disk_info{device="sda",major="8",minor="0",model="TOSHIBA_KSDB4U86",path="pci-0000:3b:00.0-sas-phy7-lun-0",revision="0102",rotational="1",serial="2160A0D5FVGG",wwn="0x7c72382b8de36a64"} 1 node_disk_info{device="sdb",major="8",minor="16",model="SuperMicro_SSD",path="pci-0000:00:1f.2-ata-1",revision="0R",rotational="0",serial="SMC0E1B87ABBB16BD84E",wwn="0xe1b87abbb16bd84e"} 1 @@ -2289,44 +2890,44 @@ node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mount node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 # HELP node_mountstats_nfs_transport_backlog_queue_total Total number of items added to the RPC backlog queue. # TYPE node_mountstats_nfs_transport_backlog_queue_total counter -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bad_transaction_ids_total Number of times the NFS server sent a response with a transaction ID unknown to this client. # TYPE node_mountstats_nfs_transport_bad_transaction_ids_total counter -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bind_total Number of times the client has had to establish a connection from scratch to the NFS server. # TYPE node_mountstats_nfs_transport_bind_total counter -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_connect_total Number of times the client has made a TCP connection to the NFS server. # TYPE node_mountstats_nfs_transport_connect_total counter -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 1 -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 1 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_idle_time_seconds Duration since the NFS mount last saw any RPC traffic, in seconds. # TYPE node_mountstats_nfs_transport_idle_time_seconds gauge -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 11 -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 11 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_maximum_rpc_slots Maximum number of simultaneously active RPC requests ever used. # TYPE node_mountstats_nfs_transport_maximum_rpc_slots gauge -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 24 -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 24 # HELP node_mountstats_nfs_transport_pending_queue_total Total number of items added to the RPC transmission pending queue. # TYPE node_mountstats_nfs_transport_pending_queue_total counter -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 5726 -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 5726 # HELP node_mountstats_nfs_transport_receives_total Number of RPC responses for this mount received from the NFS server. # TYPE node_mountstats_nfs_transport_receives_total counter -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_transport_sending_queue_total Total number of items added to the RPC transmission sending queue. # TYPE node_mountstats_nfs_transport_sending_queue_total counter -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 26 -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 26 # HELP node_mountstats_nfs_transport_sends_total Number of RPC requests for this mount sent to the NFS server. # TYPE node_mountstats_nfs_transport_sends_total counter -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_write_bytes_total Number of bytes written using the write() syscall. # TYPE node_mountstats_nfs_write_bytes_total counter node_mountstats_nfs_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 @@ -2847,7 +3448,22 @@ node_nfsd_server_rpcs_total 18628 node_nfsd_server_threads 8 # HELP node_nvme_info Non-numeric data from /sys/class/nvme/, value is always 1. # TYPE node_nvme_info gauge -node_nvme_info{device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +node_nvme_info{cntlid="1997",device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +# HELP node_nvme_namespace_capacity_bytes Capacity of the NVMe namespace in bytes. Computed as namespace_size * namespace_logical_block_size +# TYPE node_nvme_namespace_capacity_bytes gauge +node_nvme_namespace_capacity_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_info Information about NVMe namespaces. Value is always 1 +# TYPE node_nvme_namespace_info gauge +node_nvme_namespace_info{ana_state="optimized",device="nvme0",nsid="0"} 1 +# HELP node_nvme_namespace_logical_block_size_bytes Logical block size of the NVMe namespace in bytes. Usually 4Kb. Available in /sys/class/nvme///queue/logical_block_size +# TYPE node_nvme_namespace_logical_block_size_bytes gauge +node_nvme_namespace_logical_block_size_bytes{device="nvme0",nsid="0"} 4096 +# HELP node_nvme_namespace_size_bytes Size of the NVMe namespace in bytes. Available in /sys/class/nvme///size +# TYPE node_nvme_namespace_size_bytes gauge +node_nvme_namespace_size_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_used_bytes Used space of the NVMe namespace in bytes. Available in /sys/class/nvme///nuse +# TYPE node_nvme_namespace_used_bytes gauge +node_nvme_namespace_used_bytes{device="nvme0",nsid="0"} 2e+12 # HELP node_os_info A metric with a constant '1' value labeled by build_id, id, id_like, image_id, image_version, name, pretty_name, variant, variant_id, version, version_codename, version_id. # TYPE node_os_info gauge node_os_info{build_id="",id="ubuntu",id_like="debian",image_id="",image_version="",name="Ubuntu",pretty_name="Ubuntu 20.04.2 LTS",variant="",variant_id="",version="20.04.2 LTS (Focal Fossa)",version_codename="focal",version_id="20.04"} 1 @@ -2858,22 +3474,78 @@ node_os_version{id="ubuntu",id_like="debian",name="Ubuntu"} 20.04 # TYPE node_pcidevice_current_link_transfers_per_second gauge node_pcidevice_current_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_current_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_current_link_width Value of current link's width (number of lanes) # TYPE node_pcidevice_current_link_width gauge node_pcidevice_current_link_width{bus="00",device="02",function="1",segment="0000"} 4 node_pcidevice_current_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_current_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_d3cold_allowed Whether the PCIe device supports D3cold power state (0/1). +# TYPE node_pcidevice_d3cold_allowed gauge +node_pcidevice_d3cold_allowed{bus="00",device="02",function="1",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="45",device="00",function="0",segment="0000"} 1 # HELP node_pcidevice_info Non-numeric data from /sys/bus/pci/devices/, value is always 1. # TYPE node_pcidevice_info gauge -node_pcidevice_info{bus="00",class_id="0x060400",device="02",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1634"} 1 -node_pcidevice_info{bus="01",class_id="0x010802",device="00",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0x540a"} 1 +node_pcidevice_info{bus="00",class_id="0x060400",device="02",device_id="0x1634",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1022"} 1 +node_pcidevice_info{bus="01",class_id="0x010802",device="00",device_id="0x540a",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0xc0a9"} 1 +node_pcidevice_info{bus="45",class_id="0x020000",device="00",device_id="0x1521",function="0",parent_bus="40",parent_device="01",parent_function="3",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x00a3",subsystem_vendor_id="0x8086",vendor_id="0x8086"} 1 # HELP node_pcidevice_max_link_transfers_per_second Value of maximum link's transfers per second (T/s) # TYPE node_pcidevice_max_link_transfers_per_second gauge node_pcidevice_max_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_max_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 1.6e+10 +node_pcidevice_max_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_max_link_width Value of maximum link's width (number of lanes) # TYPE node_pcidevice_max_link_width gauge node_pcidevice_max_link_width{bus="00",device="02",function="1",segment="0000"} 8 node_pcidevice_max_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_max_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_numa_node NUMA node number for the PCI device. -1 indicates unknown or not available. +# TYPE node_pcidevice_numa_node gauge +node_pcidevice_numa_node{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_power_state PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error. +# TYPE node_pcidevice_power_state gauge +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="unknown"} 0 +# HELP node_pcidevice_sriov_drivers_autoprobe Whether SR-IOV drivers autoprobe is enabled for the device (0/1). +# TYPE node_pcidevice_sriov_drivers_autoprobe gauge +node_pcidevice_sriov_drivers_autoprobe{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_drivers_autoprobe{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_sriov_drivers_autoprobe{bus="45",device="00",function="0",segment="0000"} 1 +# HELP node_pcidevice_sriov_numvfs Number of Virtual Functions (VFs) currently enabled for SR-IOV. +# TYPE node_pcidevice_sriov_numvfs gauge +node_pcidevice_sriov_numvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_numvfs{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_sriov_numvfs{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_sriov_totalvfs Total number of Virtual Functions (VFs) supported by the device. +# TYPE node_pcidevice_sriov_totalvfs gauge +node_pcidevice_sriov_totalvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_totalvfs{bus="01",device="00",function="0",segment="0000"} 8 +node_pcidevice_sriov_totalvfs{bus="45",device="00",function="0",segment="0000"} 7 +# HELP node_pcidevice_sriov_vf_total_msix Total number of MSI-X vectors for Virtual Functions. +# TYPE node_pcidevice_sriov_vf_total_msix gauge +node_pcidevice_sriov_vf_total_msix{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_vf_total_msix{bus="01",device="00",function="0",segment="0000"} 16 +node_pcidevice_sriov_vf_total_msix{bus="45",device="00",function="0",segment="0000"} 0 # HELP node_power_supply_capacity capacity value of /sys/class/power_supply/. # TYPE node_power_supply_capacity gauge node_power_supply_capacity{power_supply="BAT0"} 81 @@ -3000,6 +3672,7 @@ node_schedstat_waiting_seconds_total{cpu="1"} 364107.263788241 # TYPE node_scrape_collector_success gauge node_scrape_collector_success{collector="arp"} 1 node_scrape_collector_success{collector="bcache"} 1 +node_scrape_collector_success{collector="bcachefs"} 1 node_scrape_collector_success{collector="bonding"} 1 node_scrape_collector_success{collector="btrfs"} 1 node_scrape_collector_success{collector="buddyinfo"} 1 @@ -3378,6 +4051,10 @@ node_wifi_station_receive_bits_per_second{device="wlan0",mac_address="aa:bb:cc:d # TYPE node_wifi_station_receive_bytes_total counter node_wifi_station_receive_bytes_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 node_wifi_station_receive_bytes_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 +# HELP node_wifi_station_received_packets_total The total number of packets received by a station. +# TYPE node_wifi_station_received_packets_total counter +node_wifi_station_received_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_received_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_wifi_station_signal_dbm The current WiFi signal strength, in decibel-milliwatts (dBm). # TYPE node_wifi_station_signal_dbm gauge node_wifi_station_signal_dbm{device="wlan0",mac_address="01:02:03:04:05:06"} -26 @@ -3398,6 +4075,10 @@ node_wifi_station_transmit_failed_total{device="wlan0",mac_address="aa:bb:cc:dd: # TYPE node_wifi_station_transmit_retries_total counter node_wifi_station_transmit_retries_total{device="wlan0",mac_address="01:02:03:04:05:06"} 20 node_wifi_station_transmit_retries_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 10 +# HELP node_wifi_station_transmitted_packets_total The total number of packets transmitted by a station. +# TYPE node_wifi_station_transmitted_packets_total counter +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_xfrm_acquire_error_packets_total State hasn’t been fully acquired before use # TYPE node_xfrm_acquire_error_packets_total counter node_xfrm_acquire_error_packets_total 24532 diff --git a/collector/fixtures/pci.ids b/collector/fixtures/pci.ids new file mode 100644 index 00000000..a25e6532 --- /dev/null +++ b/collector/fixtures/pci.ids @@ -0,0 +1,26 @@ +# Test PCI IDs file for node_exporter testing +# This file contains sample entries for testing PCI name resolution + +# Classes +C 06 Bridge device + 04 PCI bridge +C 01 Mass storage controller + 08 Non-Volatile memory controller + 02 NVM Express +C 02 Network controller + 00 Ethernet controller + +# Vendors +1022 Advanced Micro Devices, Inc. [AMD] + 1634 Renoir/Cezanne PCIe GPP Bridge + 17aa 5095 T540-5095 Unified Wire Ethernet Controller + +c0a9 Micron/Crucial Technology + 540a P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less) + c0a9 5021 PS5021-E21 PCIe4 NVMe Controller (DRAM-less) + +8086 Intel Corporation + 1521 I350 Gigabit Network Connection + 8086 00a3 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 + +17aa Lenovo \ No newline at end of file diff --git a/collector/fixtures/pcidevice-names-output.txt b/collector/fixtures/pcidevice-names-output.txt new file mode 100644 index 00000000..674404f4 --- /dev/null +++ b/collector/fixtures/pcidevice-names-output.txt @@ -0,0 +1,95 @@ +# Test output for PCI device collector with name resolution enabled +# This file demonstrates the --collector.pcidevice.names=true functionality + +# HELP node_pcidevice_current_link_transfers_per_second Value of current link's transfers per second (T/s) +# TYPE node_pcidevice_current_link_transfers_per_second gauge +node_pcidevice_current_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 + +# HELP node_pcidevice_current_link_width Value of current link's width (number of lanes) +# TYPE node_pcidevice_current_link_width gauge +node_pcidevice_current_link_width{bus="00",device="02",function="1",segment="0000"} 4 +node_pcidevice_current_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_current_link_width{bus="45",device="00",function="0",segment="0000"} 4 + +# HELP node_pcidevice_d3cold_allowed Whether the PCIe device supports D3cold power state (0/1). +# TYPE node_pcidevice_d3cold_allowed gauge +node_pcidevice_d3cold_allowed{bus="00",device="02",function="1",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="45",device="00",function="0",segment="0000"} 1 + +# HELP node_pcidevice_info Non-numeric data from /sys/bus/pci/devices/, value is always 1. +# TYPE node_pcidevice_info gauge +# Example 1: AMD PCIe Bridge with Lenovo subsystem +node_pcidevice_info{bus="00",class_id="0x060400",class_name="PCI bridge",device="02",device_id="0x1634",device_name="Renoir/Cezanne PCIe GPP Bridge",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_device_name="T540-5095 Unified Wire Ethernet Controller",subsystem_vendor_id="0x17aa",subsystem_vendor_name="Lenovo",vendor_id="0x1022",vendor_name="Advanced Micro Devices, Inc. [AMD]"} 1 + +# Example 2: Micron/Crucial NVMe Controller +node_pcidevice_info{bus="01",class_id="0x010802",class_name="NVM Express",device="00",device_id="0x540a",device_name="P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less)",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_device_name="PS5021-E21 PCIe4 NVMe Controller (DRAM-less)",subsystem_vendor_id="0xc0a9",subsystem_vendor_name="Micron/Crucial Technology",vendor_id="0xc0a9",vendor_name="Micron/Crucial Technology"} 1 + +# Example 3: Intel Network Controller +node_pcidevice_info{bus="45",class_id="0x020000",class_name="Ethernet controller",device="00",device_id="0x1521",device_name="I350 Gigabit Network Connection",function="0",parent_bus="40",parent_device="01",parent_function="3",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x00a3",subsystem_device_name="Ethernet Network Adapter I350-T4 for OCP NIC 3.0",subsystem_vendor_id="0x8086",subsystem_vendor_name="Intel Corporation",vendor_id="0x8086",vendor_name="Intel Corporation"} 1 + +# HELP node_pcidevice_numa_node NUMA node number for the PCI device. -1 indicates unknown or not available. +# TYPE node_pcidevice_numa_node gauge +node_pcidevice_numa_node{bus="45",device="00",function="0",segment="0000"} 0 + +# HELP node_pcidevice_max_link_transfers_per_second Value of maximum link's transfers per second (T/s) +# TYPE node_pcidevice_max_link_transfers_per_second gauge +node_pcidevice_max_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 +node_pcidevice_max_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 1.6e+10 +node_pcidevice_max_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 + +# HELP node_pcidevice_max_link_width Value of maximum link's width (number of lanes) +# TYPE node_pcidevice_max_link_width gauge +node_pcidevice_max_link_width{bus="00",device="02",function="1",segment="0000"} 8 +node_pcidevice_max_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_max_link_width{bus="45",device="00",function="0",segment="0000"} 4 + +# HELP node_pcidevice_power_state PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error. +# TYPE node_pcidevice_power_state gauge +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="unknown"} 0 + +# HELP node_pcidevice_sriov_drivers_autoprobe Whether SR-IOV drivers autoprobe is enabled for the device (0/1). +# TYPE node_pcidevice_sriov_drivers_autoprobe gauge +node_pcidevice_sriov_drivers_autoprobe{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_drivers_autoprobe{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_sriov_drivers_autoprobe{bus="45",device="00",function="0",segment="0000"} 1 + +# HELP node_pcidevice_sriov_numvfs Number of Virtual Functions (VFs) currently enabled for SR-IOV. +# TYPE node_pcidevice_sriov_numvfs gauge +node_pcidevice_sriov_numvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_numvfs{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_sriov_numvfs{bus="45",device="00",function="0",segment="0000"} 0 + +# HELP node_pcidevice_sriov_totalvfs Total number of Virtual Functions (VFs) supported by the device. +# TYPE node_pcidevice_sriov_totalvfs gauge +node_pcidevice_sriov_totalvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_totalvfs{bus="01",device="00",function="0",segment="0000"} 8 +node_pcidevice_sriov_totalvfs{bus="45",device="00",function="0",segment="0000"} 7 + +# HELP node_pcidevice_sriov_vf_total_msix Total number of MSI-X vectors for Virtual Functions. +# TYPE node_pcidevice_sriov_vf_total_msix gauge +node_pcidevice_sriov_vf_total_msix{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_vf_total_msix{bus="01",device="00",function="0",segment="0000"} 16 +node_pcidevice_sriov_vf_total_msix{bus="45",device="00",function="0",segment="0000"} 0 diff --git a/collector/fixtures/proc/1/mountinfo b/collector/fixtures/proc/1/mountinfo index 11c50a6f..2a7deda8 100644 --- a/collector/fixtures/proc/1/mountinfo +++ b/collector/fixtures/proc/1/mountinfo @@ -29,3 +29,4 @@ 3147 3002 0:81 / /run/user/1000/gvfs rw,nosuid,nodev,relatime shared:1290 - fuse.gvfsd-fuse gvfsd-fuse rw,user_id=1000,group_id=1000 3148 3003 260:0 / /var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore]\040bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk rw,relatime shared:31 - ext4 /dev/sda rw,data=ordered 3149 3004 260:0 / /var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore]\011bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk rw,relatime shared:32 - ext4 /dev/sda rw,data=ordered +1128 67 253:0 /var/lib/containers/storage/overlay /var/lib/containers/storage/overlay rw,relatime - xfs /dev/mapper/rhel-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota diff --git a/collector/fixtures/proc/swaps b/collector/fixtures/proc/swaps new file mode 100644 index 00000000..c0fbf778 --- /dev/null +++ b/collector/fixtures/proc/swaps @@ -0,0 +1,2 @@ +Filename Type Size Used Priority +/dev/zram0 partition 8388604 76 100 diff --git a/collector/fixtures/sys.ttar b/collector/fixtures/sys.ttar index a0e653e2..bc8744cb 100644 --- a/collector/fixtures/sys.ttar +++ b/collector/fixtures/sys.ttar @@ -871,6 +871,9 @@ SymlinkTo: ../../../devices/pci0000:00/0000:00:02.1 Path: sys/bus/pci/devices/0000:01:00.0 SymlinkTo: ../../../devices/pci0000:00/0000:00:02.1/0000:01:00.0 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/bus/pci/devices/0000:45:00.0 +SymlinkTo: ../../../devices/pci0000:40/0000:40:01.3/0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/class Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1411,6 +1414,11 @@ Lines: 1 N/A (no PMA) Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/infiniband/i40iw0/ports/1/link_layer +Lines: 1 +InfiniBand +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/class/infiniband/i40iw0/ports/1/phys_state Lines: 1 5: LinkUp @@ -1576,6 +1584,11 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/infiniband/mlx4_0/ports/1/link_layer +Lines: 1 +InfiniBand +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/class/infiniband/mlx4_0/ports/1/phys_state Lines: 1 5: LinkUp @@ -1680,6 +1693,11 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/infiniband/mlx4_0/ports/2/link_layer +Lines: 1 +InfiniBand +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/class/infiniband/mlx4_0/ports/2/phys_state Lines: 1 5: LinkUp @@ -2211,6 +2229,32 @@ Lines: 1 live Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/class/nvme/nvme0/nvme0c0n0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/ana_state +Lines: 1 +optimized +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/size +Lines: 1 +3906250000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/nuse +Lines: 1 +488281250 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/class/nvme/nvme0/nvme0c0n0/queue +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/queue/logical_block_size +Lines: 1 +4096 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/class/power_supply Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3365,8 +3409,8 @@ Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/config Lines: 2 -©À -TNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE€ýNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE©À!PNULLBYTENULLBYTENULLBYTENULLBYTE€NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEÿNULLBYTENULLBYTEEOF +�� +TNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE��NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE��!PNULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTEEOF Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/consistent_dma_mask_bits @@ -5104,6 +5148,26 @@ Lines: 1 0x01 Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_drivers_autoprobe +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_numvfs +Lines: 1 +4 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_totalvfs +Lines: 1 +8 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_vf_total_msix +Lines: 1 +16 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/subsystem SymlinkTo: ../../../../bus/pci # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5149,7 +5213,7 @@ Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/config Lines: 1 -"4NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEñNULLBYTENULLBYTE€ý€ýñÿNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEPNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEÿNULLBYTENULLBYTEEOF +"4NULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTE������NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEPNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTEEOF Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/consistent_dma_mask_bits @@ -5462,6 +5526,26 @@ Lines: 1 1 Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_drivers_autoprobe +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_numvfs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_totalvfs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_vf_total_msix +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/subordinate_bus_number Lines: 1 1 @@ -5890,1534 +5974,4840 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform +Directory: sys/devices/pci0000:40 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/applesmc.768 +Directory: sys/devices/pci0000:40/0000:40:01.3 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan1_input -Lines: 1 -0 -Mode: 644 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0 +Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan1_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/aer_dev_correctable +Lines: 9 +RxErr 0 +BadTLP 0 +BadDLLP 0 +Rollover 0 +Timeout 0 +NonFatalErr 0 +CorrIntErr 0 +HeaderOF 0 +TOTAL_ERR_COR 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/aer_dev_fatal +Lines: 19 +Undefined 0 +DLP 0 +SDES 0 +TLP 0 +FCP 0 +CmpltTO 0 +CmpltAbrt 0 +UnxCmplt 0 +RxOF 0 +MalfTLP 0 +ECRC 0 +UnsupReq 0 +ACSViol 0 +UncorrIntErr 0 +BlockedTLP 0 +AtomicOpBlocked 0 +TLPBlockedErr 0 +PoisonTLPBlocked 0 +TOTAL_ERR_FATAL 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/aer_dev_nonfatal +Lines: 19 +Undefined 0 +DLP 0 +SDES 0 +TLP 0 +FCP 0 +CmpltTO 0 +CmpltAbrt 0 +UnxCmplt 0 +RxOF 0 +MalfTLP 0 +ECRC 0 +UnsupReq 0 +ACSViol 0 +UncorrIntErr 0 +BlockedTLP 0 +AtomicOpBlocked 0 +TLPBlockedErr 0 +PoisonTLPBlocked 0 +TOTAL_ERR_NONFATAL 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ari_enabled Lines: 1 -Left side -Mode: 644 +1 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan1_manual +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/broken_parity_status Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan1_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/class Lines: 1 -6156 -Mode: 644 +0x020000 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan1_min +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/consistent_dma_mask_bits Lines: 1 -2160 -Mode: 644 +64 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan1_output +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/current_link_speed Lines: 1 -2160 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan1_safe -Lines: 0 -Mode: 644 +5.0 GT/s PCIe +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan2_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/current_link_width Lines: 1 -1998 -Mode: 644 +4 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan2_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/d3cold_allowed Lines: 1 -Right side +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan2_manual +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/device Lines: 1 -0 -Mode: 644 +0x1521 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan2_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/dma_mask_bits Lines: 1 -5700 -Mode: 644 +64 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan2_min +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/driver +SymlinkTo: ../../../../bus/pci/drivers/igb +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/driver_override Lines: 1 -2000 +(null) Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan2_output +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/enable Lines: 1 -2000 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/fan2_safe -Lines: 0 -Mode: 644 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/firmware_node +SymlinkTo: ../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:01/device:18/device:19 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/applesmc.768/hwmon +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/applesmc.768/hwmon/hwmon2 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/hwmon/hwmon2/device -SymlinkTo: ../../../applesmc.768 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/device +SymlinkTo: ../../../0000:45:00.0 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/applesmc.768/name +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/name Lines: 1 -applesmc -Mode: 644 +i350bb +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/bogus.0 -Mode: 775 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power +Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/bogus.0/hwmon -Mode: 775 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/async +Lines: 1 +disabled +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/bogus.0/hwmon/hwmon5 -Mode: 775 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/control Lines: 1 -100000 +auto Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_active_kids Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_active_time Lines: 1 -55000 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_enabled Lines: 1 -Physical id 0 -Mode: 644 +disabled +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_status Lines: 1 -84000 -Mode: 644 +unsupported +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/bogus.0/hwmon/hwmon5/name +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_suspended_time Lines: 1 -bogus -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/coretemp.0 -Mode: 755 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/coretemp.0/hwmon -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_usage +Lines: 1 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/coretemp.0/hwmon/hwmon0 -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/subsystem +SymlinkTo: ../../../../../../class/hwmon # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/device -SymlinkTo: ../../../coretemp.0 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_crit +Lines: 1 +110000 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/name +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_input Lines: 1 -coretemp -Mode: 644 +50000 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_label Lines: 1 -100000 -Mode: 644 +loc1 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_max Lines: 1 -0 +120000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/uevent +Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_input +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/modalias Lines: 1 -55000 -Mode: 644 +i2c:i350bb +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/name Lines: 1 -Physical id 0 -Mode: 644 +i350bb +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_max +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/async Lines: 1 -84000 +enabled Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_crit -Lines: 1 -100000 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/autosuspend_delay_ms +Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/control Lines: 1 -0 +auto Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_active_kids Lines: 1 -54000 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_active_time Lines: 1 -Core 0 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_enabled Lines: 1 -84000 -Mode: 644 +disabled +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_status Lines: 1 -100000 -Mode: 644 +unsupported +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_suspended_time Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_usage Lines: 1 -52000 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_label -Lines: 1 -Core 1 -Mode: 644 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/subsystem +SymlinkTo: ../../../../../../bus/i2c # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/uevent Lines: 1 -84000 +MODALIAS=i2c:i350bb Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_crit -Lines: 1 -100000 -Mode: 644 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev +Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_crit_alarm +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/dev Lines: 1 -0 -Mode: 644 +89:3 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/device +SymlinkTo: ../../../i2c-3 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/name Lines: 1 -53000 -Mode: 644 +igb BB +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_label +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/async Lines: 1 -Core 2 +disabled Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_max -Lines: 1 -84000 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/autosuspend_delay_ms +Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/control Lines: 1 -100000 +auto Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_active_kids Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_active_time Lines: 1 -50000 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_enabled Lines: 1 -Core 3 -Mode: 644 +disabled +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_status Lines: 1 -84000 -Mode: 644 +unsupported +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/coretemp.1 -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/coretemp.1/hwmon -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_usage +Lines: 1 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/coretemp.1/hwmon/hwmon1 -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/subsystem +SymlinkTo: ../../../../../../../class/i2c-dev # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/device -SymlinkTo: ../../../coretemp.1 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/uevent +Lines: 3 +MAJOR=89 +MINOR=3 +DEVNAME=i2c-3 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/name +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/name Lines: 1 -coretemp -Mode: 644 +igb BB +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_crit +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/async Lines: 1 -100000 +enabled Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_active_kids Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_enabled Lines: 1 -55000 -Mode: 644 +enabled +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_status Lines: 1 -Physical id 0 -Mode: 644 +suspended +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_usage Lines: 1 -84000 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/subsystem +SymlinkTo: ../../../../../bus/i2c +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/uevent +Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/iommu +SymlinkTo: ../../0000:40:00.2/iommu/ivhd1 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/iommu_group +SymlinkTo: ../../../../kernel/iommu_groups/25 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/irq Lines: 1 -100000 -Mode: 644 +58 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_crit_alarm +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/link +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/local_cpulist Lines: 1 -0 -Mode: 644 +0-63,128-191 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/local_cpus Lines: 1 -54000 -Mode: 644 +00000000,00000000,ffffffff,ffffffff,00000000,00000000,ffffffff,ffffffff +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/max_link_speed Lines: 1 -Core 0 -Mode: 644 +5.0 GT/s PCIe +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/max_link_width Lines: 1 -84000 -Mode: 644 +4 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/modalias Lines: 1 -100000 -Mode: 644 +pci:v00008086d00001521sv00008086sd000000A3bc02sc00i00 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_bus Lines: 1 -0 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_input +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/147 Lines: 1 -52000 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/148 Lines: 1 -Core 1 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/149 Lines: 1 -84000 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/150 Lines: 1 -100000 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_crit_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/151 Lines: 1 -0 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/152 Lines: 1 -53000 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/153 Lines: 1 -Core 2 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/154 Lines: 1 -84000 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_crit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/155 Lines: 1 -100000 -Mode: 644 +msix +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_crit_alarm +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/addr_assign_type Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/addr_len Lines: 1 -50000 -Mode: 644 +6 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_label +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/address Lines: 1 -Core 3 -Mode: 644 +68:05:ca:f0:cb:12 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/broadcast Lines: 1 -84000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/nct6775.656 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/nct6775.656/hwmon -Mode: 755 +ff:ff:ff:ff:ff:ff +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/platform/nct6775.656/hwmon/hwmon3 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_alarm -Lines: 1 -0 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/backup_port +Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_beep +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/bpdu_guard Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/bridge +SymlinkTo: ../../../../../../virtual/net/vmbr0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/broadcast_flood Lines: 1 -1098 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_min +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/change_ack Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_pulses +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/config_pending Lines: 1 -2 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_target +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_bridge Lines: 1 -27000 -Mode: 644 +8000.6805caf0cb12 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_tolerance +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_cost Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_port Lines: 1 -0 -Mode: 644 +32769 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_beep +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_root Lines: 1 -0 -Mode: 644 +8000.6805caf0cb12 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/forward_delay_timer Lines: 1 -792 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/group_fwd_mask Lines: 1 -1744 +0x0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_min +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/hairpin_mode Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/hold_timer Lines: 1 -1 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_beep +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/isolated Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_input +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/learning Lines: 1 -1024 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_max +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/message_age_timer Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_min +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_fast_leave Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion0_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_flood Lines: 1 1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion0_beep -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion1_alarm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_router Lines: 1 1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion1_beep +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_to_unicast Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/name +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/neigh_suppress Lines: 1 -nct6779 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point1_pwm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/path_cost Lines: 1 -153 +5 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point1_temp +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/port_id Lines: 1 -30000 -Mode: 644 +0x8001 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point2_pwm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/port_no Lines: 1 -255 -Mode: 644 +0x1 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point2_temp +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/priority Lines: 1 -70000 +32 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point3_pwm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/proxyarp Lines: 1 -255 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point3_temp +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/proxyarp_wifi Lines: 1 -70000 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point4_pwm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/root_block Lines: 1 -255 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point4_temp +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/state Lines: 1 -70000 -Mode: 644 +3 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point5_pwm +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/unicast_flood Lines: 1 -255 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point5_temp +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier Lines: 1 -75000 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_crit_temp_tolerance +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier_changes Lines: 1 -2000 -Mode: 644 +2 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_enable +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier_down_count Lines: 1 -5 -Mode: 644 +1 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_floor +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier_up_count Lines: 1 1 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_mode +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/dev_id Lines: 1 -1 -Mode: 644 +0x0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_start +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/dev_port Lines: 1 -1 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_step_down_time +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/device +SymlinkTo: ../../../0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/dormant Lines: 1 -100 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_step_up_time +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/duplex Lines: 1 -100 -Mode: 644 +full +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_stop_time +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/flags Lines: 1 -6000 +0x1303 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_target_temp +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/gro_flush_timeout Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_temp_sel -Lines: 1 -7 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/ifalias +Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_temp_tolerance +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/ifindex Lines: 1 -0 -Mode: 644 +2 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_duty_base +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/iflink Lines: 1 -0 -Mode: 644 +2 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_duty_step +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/link_mode Lines: 1 0 -Mode: 644 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_sel +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/master +SymlinkTo: ../../../../../virtual/net/vmbr0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/mtu Lines: 1 -1 +1500 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_step +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/name_assign_type Lines: 1 -0 -Mode: 644 +4 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_step_base +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/napi_defer_hard_irqs Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_step_tol +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/netdev_group Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/operstate +Lines: 1 +up +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/clocksource -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/phys_port_id +Lines: 0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/clocksource/clocksource0 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/phys_port_name +Lines: 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/phys_switch_id +Lines: 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/clocksource/clocksource0/available_clocksource +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/async Lines: 1 -tsc hpet acpi_pm +disabled Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/clocksource/clocksource0/current_clocksource -Lines: 1 -tsc +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/autosuspend_delay_ms +Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu0/cpufreq -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/control +Lines: 1 +auto +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_active_kids Lines: 1 0 -Mode: 664 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/related_cpus +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_active_time Lines: 1 0 -Mode: 664 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_enabled Lines: 1 -performance powersave -Mode: 664 +disabled +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_status Lines: 1 -1699981 -Mode: 644 +unsupported +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_driver +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_suspended_time Lines: 1 -intel_pstate -Mode: 664 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_governor +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_usage Lines: 1 -powersave -Mode: 664 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/proto_down Lines: 1 -3700000 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-0/rps_cpus Lines: 1 -800000 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-0/rps_flow_cnt Lines: 1 - -Mode: 664 +0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu0/thermal_throttle +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-1 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/thermal_throttle/core_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-1/rps_cpus Lines: 1 -5 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/thermal_throttle/package_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-1/rps_flow_cnt Lines: 1 -30 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu0/topology +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-2 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/topology/core_id +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-2/rps_cpus Lines: 1 -0 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu0/topology/physical_package_id +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-2/rps_flow_cnt Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu1/cpufreq +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-3 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_transition_latency +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-3/rps_cpus Lines: 1 -0 -Mode: 664 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/related_cpus +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-3/rps_flow_cnt Lines: 1 0 -Mode: 664 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors -Lines: 1 -performance powersave -Mode: 664 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-4 +Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-4/rps_cpus Lines: 1 -1699981 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_driver +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-4/rps_flow_cnt Lines: 1 -intel_pstate -Mode: 664 +0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_governor -Lines: 1 -powersave -Mode: 664 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-5 +Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-5/rps_cpus Lines: 1 -3700000 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-5/rps_flow_cnt Lines: 1 -800000 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed -Lines: 1 - -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu1/thermal_throttle +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-6 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/thermal_throttle/core_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-6/rps_cpus Lines: 1 -0 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/thermal_throttle/package_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-6/rps_flow_cnt Lines: 1 -30 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu1/topology +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-7 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/topology/core_id +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-7/rps_cpus Lines: 1 -1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu1/topology/physical_package_id +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-7/rps_flow_cnt Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu2 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu2/cpufreq +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_transition_latency +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/hold_time Lines: 1 -0 -Mode: 664 +1000 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/related_cpus +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/inflight Lines: 1 0 -Mode: 664 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_available_governors +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/limit Lines: 1 -performance powersave -Mode: 664 +67893 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/limit_max Lines: 1 -8000 +1879048192 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_driver +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/limit_min Lines: 1 -intel_pstate -Mode: 664 +0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_governor +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/stall_cnt Lines: 1 -powersave -Mode: 664 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/stall_max Lines: 1 -4200000 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/stall_thrs Lines: 1 -1000 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_setspeed +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/traffic_class Lines: 1 - -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu2/thermal_throttle -Mode: 755 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/thermal_throttle/core_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/tx_maxrate Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/thermal_throttle/package_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/tx_timeout Lines: 1 -6 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu2/topology -Mode: 755 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/topology/core_id +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/xps_cpus Lines: 1 -0 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu2/topology/physical_package_id +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/xps_rxqs Lines: 1 -1 +00 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu3 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu3/cpufreq +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_transition_latency +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/hold_time Lines: 1 -0 -Mode: 664 +1000 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/related_cpus +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/inflight Lines: 1 0 -Mode: 664 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_available_governors +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/limit Lines: 1 -performance powersave -Mode: 664 +137370 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/limit_max Lines: 1 -8000 +1879048192 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_driver +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/limit_min Lines: 1 -intel_pstate -Mode: 664 +0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_governor +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/stall_cnt Lines: 1 -powersave -Mode: 664 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/stall_max Lines: 1 -4200000 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/stall_thrs Lines: 1 -1000 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_setspeed +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/traffic_class Lines: 1 - -Mode: 664 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu3/thermal_throttle -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/tx_maxrate +Lines: 1 +0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/thermal_throttle/core_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/tx_timeout Lines: 1 -9 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/thermal_throttle/package_throttle_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/xps_rxqs Lines: 1 -6 +00 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/cpu3/topology +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/topology/core_id +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/hold_time Lines: 1 -1 +1000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/cpu3/topology/physical_package_id +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/inflight Lines: 1 -1 -Mode: 644 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/isolated +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/limit Lines: 1 -1,3-5,9 -Mode: 664 +137370 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/offline +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/limit_max Lines: 1 - -Mode: 664 +1879048192 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/online +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/limit_min Lines: 1 -0-3 -Mode: 664 +0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/cpu/vulnerabilities -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/vulnerabilities/itlb_multihit +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/stall_max Lines: 1 -Not affected +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/vulnerabilities/mds +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/stall_thrs Lines: 1 -Vulnerable +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/vulnerabilities/retbleed +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/traffic_class Lines: 1 -Mitigation: untrained return thunk; SMT enabled with STIBP protection +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/tx_maxrate +Lines: 1 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/vulnerabilities/spectre_v1 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/tx_timeout Lines: 1 -Mitigation: usercopy/swapgs barriers and __user pointer sanitization +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/cpu/vulnerabilities/spectre_v2 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/xps_rxqs Lines: 1 -Mitigation: Retpolines, IBPB: conditional, STIBP: always-on, RSB filling, PBRSB-eIBRS: Not affected +00 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/edac +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/edac/mc +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/edac/mc/mc0 -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/edac/mc/mc0/ce_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/inflight Lines: 1 -1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/limit +Lines: 1 +137370 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/edac/mc/mc0/ce_noinfo_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/limit_max Lines: 1 -2 +1879048192 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/edac/mc/mc0/csrow0 -Mode: 755 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/edac/mc/mc0/csrow0/ce_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/stall_cnt Lines: 1 -3 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/stall_max +Lines: 1 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/edac/mc/mc0/csrow0/ue_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/stall_thrs Lines: 1 -4 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/edac/mc/mc0/ue_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/traffic_class Lines: 1 -5 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/tx_maxrate +Lines: 1 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/edac/mc/mc0/ue_noinfo_count +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/tx_timeout Lines: 1 -6 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/node +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/node/node0 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node0/cpu0 -SymlinkTo: ../../cpu/cpu0 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node0/cpu1 -SymlinkTo: ../../cpu/cpu1 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node0/cpulist +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/limit Lines: 1 -0-1 +68879 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node0/meminfo -Lines: 29 -Node 0 MemTotal: 134182340 kB -Node 0 MemFree: 53030372 kB -Node 0 MemUsed: 81151968 kB -Node 0 Active: 5456380 kB -Node 0 Inactive: 59150184 kB -Node 0 Active(anon): 691324 kB -Node 0 Inactive(anon): 340456 kB -Node 0 Active(file): 4765056 kB -Node 0 Inactive(file): 58809728 kB -Node 0 Unevictable: 0 kB -Node 0 Mlocked: 0 kB -Node 0 Dirty: 20 kB -Node 0 Writeback: 0 kB -Node 0 FilePages: 70170916 kB -Node 0 Mapped: 894240 kB -Node 0 AnonPages: 788196 kB -Node 0 Shmem: 47860 kB -Node 0 KernelStack: 34016 kB -Node 0 PageTables: 143304 kB -Node 0 NFS_Unstable: 0 kB -Node 0 Bounce: 0 kB -Node 0 WritebackTmp: 0 kB -Node 0 Slab: 6654304 kB -Node 0 SReclaimable: 4473124 kB -Node 0 SUnreclaim: 2181180 kB -Node 0 AnonHugePages: 147456 kB -Node 0 HugePages_Total: 0 -Node 0 HugePages_Free: 0 -Node 0 HugePages_Surp: 0 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/limit_max +Lines: 1 +1879048192 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node0/numastat -Lines: 6 -numa_hit 193460335812 -numa_miss 12624528 -numa_foreign 59858623300 -interleave_hit 57146 -local_node 193454780853 -other_node 18179487 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/limit_min +Lines: 1 +0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/node/node1 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node1/cpu2 -SymlinkTo: ../../cpu/cpu2 +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits +Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node1/cpu3 -SymlinkTo: ../../cpu/cpu3 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node1/cpulist +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/inflight Lines: 1 -2-3 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/limit +Lines: 1 +137370 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node1/meminfo -Lines: 29 -Node 1 MemTotal: 134217728 kB -Node 1 MemFree: 39634788 kB -Node 1 MemUsed: 94582940 kB -Node 1 Active: 5604496 kB -Node 1 Inactive: 71450592 kB -Node 1 Active(anon): 590464 kB -Node 1 Inactive(anon): 285088 kB -Node 1 Active(file): 5014032 kB -Node 1 Inactive(file): 71165504 kB -Node 1 Unevictable: 0 kB -Node 1 Mlocked: 0 kB -Node 1 Dirty: 120 kB -Node 1 Writeback: 0 kB -Node 1 FilePages: 83579188 kB -Node 1 Mapped: 864112 kB -Node 1 AnonPages: 671932 kB -Node 1 Shmem: 87580 kB -Node 1 KernelStack: 31104 kB -Node 1 PageTables: 124272 kB -Node 1 NFS_Unstable: 0 kB -Node 1 Bounce: 0 kB -Node 1 WritebackTmp: 0 kB -Node 1 Slab: 7020716 kB -Node 1 SReclaimable: 4614084 kB -Node 1 SUnreclaim: 2406632 kB -Node 1 AnonHugePages: 90112 kB -Node 1 HugePages_Total: 0 -Node 1 HugePages_Free: 0 -Node 1 HugePages_Surp: 0 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/limit_max +Lines: 1 +1879048192 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node1/numastat -Lines: 6 -numa_hit 326720946761 -numa_miss 59858626709 -numa_foreign 12624528 -interleave_hit 57286 -local_node 326719046550 -other_node 59860526920 +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/limit +Lines: 1 +54464 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/limit +Lines: 1 +71700 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/speed +Lines: 1 +1000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/collisions +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/multicast +Lines: 1 +656633 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_bytes +Lines: 1 +10013625365 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_compressed +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_crc_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_dropped +Lines: 1 +29220 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_fifo_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_frame_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_length_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_missed_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_nohandler +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_over_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_packets +Lines: 1 +46422718 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_aborted_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_bytes +Lines: 1 +10275718925 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_carrier_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_compressed +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_dropped +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_fifo_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_heartbeat_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_packets +Lines: 1 +47308115 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_window_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/subsystem +SymlinkTo: ../../../../../../class/net +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/testing +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/threaded +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/tx_queue_len +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/type +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/uevent +Lines: 2 +INTERFACE=ens10f0 +IFINDEX=2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/upper_vmbr0 +SymlinkTo: ../../../../../virtual/net/vmbr0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/numa_node +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/async +Lines: 1 +enabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/control +Lines: 1 +on +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_active_time +Lines: 1 +862796974 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_enabled +Lines: 1 +forbidden +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_status +Lines: 1 +active +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_usage +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup +Lines: 1 +enabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_abort_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_active +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_active_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_expire_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_last_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_max_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_total_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power_state +Lines: 1 +D0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/clock_name +Lines: 1 +6805caf0cb12 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/dev +Lines: 1 +246:0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/device +SymlinkTo: ../../../0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/fifo +Lines: 1 +NULLBYTEEOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/max_adjustment +Lines: 1 +62499999 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/max_vclocks +Lines: 1 +20 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_alarms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_external_timestamps +Lines: 1 +2 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_periodic_outputs +Lines: 1 +2 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_programmable_pins +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_vclocks +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP0 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP1 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP2 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP3 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/async +Lines: 1 +disabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/control +Lines: 1 +auto +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_active_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_enabled +Lines: 1 +disabled +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_status +Lines: 1 +unsupported +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_usage +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pps_available +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/subsystem +SymlinkTo: ../../../../../../class/ptp +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/uevent +Lines: 3 +MAJOR=246 +MINOR=0 +DEVNAME=ptp0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/reset_method +Lines: 1 +flr bus +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource +Lines: 13 +0x0000000097100000 0x00000000971fffff 0x0000000000040200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000003060 0x000000000000307f 0x0000000000040101 +0x000000009720c000 0x000000009720ffff 0x0000000000040200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000097280000 0x00000000972fffff 0x0000000000046200 +0x000000f0a03e0000 0x000000f0a03fffff 0x000000000014220c +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x000000f0a03c0000 0x000000f0a03dffff 0x000000000014220c +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource0 +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource2 +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource3 +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/revision +Lines: 1 +0x01 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/rom +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_drivers_autoprobe +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_numvfs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_offset +Lines: 1 +128 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_stride +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_totalvfs +Lines: 1 +7 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_vf_device +Lines: 1 +1520 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_vf_total_msix +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/subsystem +SymlinkTo: ../../../../bus/pci +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/subsystem_device +Lines: 1 +0x00a3 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/subsystem_vendor +Lines: 1 +0x8086 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/uevent +Lines: 6 +DRIVER=igb +PCI_CLASS=20000 +PCI_ID=8086:1521 +PCI_SUBSYS_ID=8086:00A3 +PCI_SLOT_NAME=0000:45:00.0 +MODALIAS=pci:v00008086d00001521sv00008086sd000000A3bc02sc00i00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/vendor +Lines: 1 +0x8086 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/vpd +Lines: 2 +�:NULLBYTEIntel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0�dNULLBYTEV1:Intel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0PN +K53978-004SN 6805CAF0CB12V24521RV�xEOF +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/active_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/active_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/device +SymlinkTo: ../../../0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/event_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/expire_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/last_change_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/max_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/name +Lines: 1 +0000:45:00.0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/prevent_suspend_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/subsystem +SymlinkTo: ../../../../../../class/wakeup +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/total_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/uevent +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/wakeup_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/class +Lines: 1 +0x060400 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/d3cold_allowed +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/device +Lines: 1 +0x1483 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/power_state +Lines: 1 +D0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/revision +Lines: 1 +0x00 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/subsystem_device +Lines: 1 +0x1453 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/subsystem_vendor +Lines: 1 +0x1022 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/vendor +Lines: 1 +0x1022 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/applesmc.768 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan1_input +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan1_label +Lines: 1 +Left side +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan1_manual +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan1_max +Lines: 1 +6156 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan1_min +Lines: 1 +2160 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan1_output +Lines: 1 +2160 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan1_safe +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan2_input +Lines: 1 +1998 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan2_label +Lines: 1 +Right side +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan2_manual +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan2_max +Lines: 1 +5700 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan2_min +Lines: 1 +2000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan2_output +Lines: 1 +2000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/fan2_safe +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/applesmc.768/hwmon +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/applesmc.768/hwmon/hwmon2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/hwmon/hwmon2/device +SymlinkTo: ../../../applesmc.768 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/applesmc.768/name +Lines: 1 +applesmc +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/bogus.0 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/bogus.0/hwmon +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/bogus.0/hwmon/hwmon5 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_input +Lines: 1 +55000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_label +Lines: 1 +Physical id 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/bogus.0/hwmon/hwmon5/bogus1_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/bogus.0/hwmon/hwmon5/name +Lines: 1 +bogus +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/coretemp.0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/coretemp.0/hwmon +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/coretemp.0/hwmon/hwmon0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/device +SymlinkTo: ../../../coretemp.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/name +Lines: 1 +coretemp +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_input +Lines: 1 +55000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_label +Lines: 1 +Physical id 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input +Lines: 1 +54000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_label +Lines: 1 +Core 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_input +Lines: 1 +52000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_label +Lines: 1 +Core 1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_input +Lines: 1 +53000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_label +Lines: 1 +Core 2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_input +Lines: 1 +50000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_label +Lines: 1 +Core 3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.0/hwmon/hwmon0/temp5_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/coretemp.1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/coretemp.1/hwmon +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/coretemp.1/hwmon/hwmon1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/device +SymlinkTo: ../../../coretemp.1 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/name +Lines: 1 +coretemp +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_input +Lines: 1 +55000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_label +Lines: 1 +Physical id 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp1_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_input +Lines: 1 +54000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_label +Lines: 1 +Core 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp2_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_input +Lines: 1 +52000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_label +Lines: 1 +Core 1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp3_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_input +Lines: 1 +53000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_label +Lines: 1 +Core 2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp4_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_crit +Lines: 1 +100000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_crit_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_input +Lines: 1 +50000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_label +Lines: 1 +Core 3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/coretemp.1/hwmon/hwmon1/temp5_max +Lines: 1 +84000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/nct6775.656 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/nct6775.656/hwmon +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/platform/nct6775.656/hwmon/hwmon3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_beep +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_input +Lines: 1 +1098 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_pulses +Lines: 1 +2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_target +Lines: 1 +27000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/fan2_tolerance +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_alarm +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_beep +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_input +Lines: 1 +792 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_max +Lines: 1 +1744 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in0_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_alarm +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_beep +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_input +Lines: 1 +1024 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/in1_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion0_alarm +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion0_beep +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion1_alarm +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/intrusion1_beep +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/name +Lines: 1 +nct6779 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point1_pwm +Lines: 1 +153 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point1_temp +Lines: 1 +30000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point2_pwm +Lines: 1 +255 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point2_temp +Lines: 1 +70000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point3_pwm +Lines: 1 +255 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point3_temp +Lines: 1 +70000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point4_pwm +Lines: 1 +255 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point4_temp +Lines: 1 +70000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point5_pwm +Lines: 1 +255 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_auto_point5_temp +Lines: 1 +75000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_crit_temp_tolerance +Lines: 1 +2000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_enable +Lines: 1 +5 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_floor +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_mode +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_start +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_step_down_time +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_step_up_time +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_stop_time +Lines: 1 +6000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_target_temp +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_temp_sel +Lines: 1 +7 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_temp_tolerance +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_duty_base +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_duty_step +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_sel +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_step +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_step_base +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/platform/nct6775.656/hwmon/hwmon3/pwm1_weight_temp_step_tol +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/clocksource +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/clocksource/clocksource0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/clocksource/clocksource0/available_clocksource +Lines: 1 +tsc hpet acpi_pm +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/clocksource/clocksource0/current_clocksource +Lines: 1 +tsc +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu0/cpufreq +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/related_cpus +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors +Lines: 1 +performance powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq +Lines: 1 +1699981 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_driver +Lines: 1 +intel_pstate +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_governor +Lines: 1 +powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq +Lines: 1 +3700000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq +Lines: 1 +800000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed +Lines: 1 + +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu0/thermal_throttle +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/thermal_throttle/core_throttle_count +Lines: 1 +5 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/thermal_throttle/package_throttle_count +Lines: 1 +30 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu0/topology +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/topology/core_id +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu0/topology/physical_package_id +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu1/cpufreq +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_transition_latency +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/related_cpus +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors +Lines: 1 +performance powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq +Lines: 1 +1699981 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_driver +Lines: 1 +intel_pstate +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_governor +Lines: 1 +powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq +Lines: 1 +3700000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq +Lines: 1 +800000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed +Lines: 1 + +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu1/thermal_throttle +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/thermal_throttle/core_throttle_count +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/thermal_throttle/package_throttle_count +Lines: 1 +30 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu1/topology +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/topology/core_id +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu1/topology/physical_package_id +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu2/cpufreq +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_transition_latency +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/related_cpus +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_available_governors +Lines: 1 +performance powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq +Lines: 1 +8000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_driver +Lines: 1 +intel_pstate +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_governor +Lines: 1 +powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq +Lines: 1 +4200000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/cpufreq/scaling_setspeed +Lines: 1 + +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu2/thermal_throttle +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/thermal_throttle/core_throttle_count +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/thermal_throttle/package_throttle_count +Lines: 1 +6 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu2/topology +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/topology/core_id +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu2/topology/physical_package_id +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu3/cpufreq +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_transition_latency +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/related_cpus +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_available_governors +Lines: 1 +performance powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq +Lines: 1 +8000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_driver +Lines: 1 +intel_pstate +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_governor +Lines: 1 +powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq +Lines: 1 +4200000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/cpufreq/scaling_setspeed +Lines: 1 + +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu3/thermal_throttle +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/thermal_throttle/core_throttle_count +Lines: 1 +9 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/thermal_throttle/package_throttle_count +Lines: 1 +6 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/cpu3/topology +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/topology/core_id +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/cpu3/topology/physical_package_id +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/isolated +Lines: 1 +1,3-5,9 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/offline +Lines: 1 + +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/online +Lines: 1 +0-3 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/cpu/vulnerabilities +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/vulnerabilities/itlb_multihit +Lines: 1 +Not affected +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/vulnerabilities/mds +Lines: 1 +Vulnerable +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/vulnerabilities/retbleed +Lines: 1 +Mitigation: untrained return thunk; SMT enabled with STIBP protection +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/vulnerabilities/spectre_v1 +Lines: 1 +Mitigation: usercopy/swapgs barriers and __user pointer sanitization +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/cpu/vulnerabilities/spectre_v2 +Lines: 1 +Mitigation: Retpolines, IBPB: conditional, STIBP: always-on, RSB filling, PBRSB-eIBRS: Not affected +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/edac +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/edac/mc +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/edac/mc/mc0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/edac/mc/mc0/ce_count +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/edac/mc/mc0/ce_noinfo_count +Lines: 1 +2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/edac/mc/mc0/csrow0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/edac/mc/mc0/csrow0/ce_count +Lines: 1 +3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/edac/mc/mc0/csrow0/ue_count +Lines: 1 +4 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/edac/mc/mc0/ue_count +Lines: 1 +5 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/edac/mc/mc0/ue_noinfo_count +Lines: 1 +6 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/node +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/node/node0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node0/cpu0 +SymlinkTo: ../../cpu/cpu0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node0/cpu1 +SymlinkTo: ../../cpu/cpu1 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node0/cpulist +Lines: 1 +0-1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node0/meminfo +Lines: 29 +Node 0 MemTotal: 134182340 kB +Node 0 MemFree: 53030372 kB +Node 0 MemUsed: 81151968 kB +Node 0 Active: 5456380 kB +Node 0 Inactive: 59150184 kB +Node 0 Active(anon): 691324 kB +Node 0 Inactive(anon): 340456 kB +Node 0 Active(file): 4765056 kB +Node 0 Inactive(file): 58809728 kB +Node 0 Unevictable: 0 kB +Node 0 Mlocked: 0 kB +Node 0 Dirty: 20 kB +Node 0 Writeback: 0 kB +Node 0 FilePages: 70170916 kB +Node 0 Mapped: 894240 kB +Node 0 AnonPages: 788196 kB +Node 0 Shmem: 47860 kB +Node 0 KernelStack: 34016 kB +Node 0 PageTables: 143304 kB +Node 0 NFS_Unstable: 0 kB +Node 0 Bounce: 0 kB +Node 0 WritebackTmp: 0 kB +Node 0 Slab: 6654304 kB +Node 0 SReclaimable: 4473124 kB +Node 0 SUnreclaim: 2181180 kB +Node 0 AnonHugePages: 147456 kB +Node 0 HugePages_Total: 0 +Node 0 HugePages_Free: 0 +Node 0 HugePages_Surp: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node0/numastat +Lines: 6 +numa_hit 193460335812 +numa_miss 12624528 +numa_foreign 59858623300 +interleave_hit 57146 +local_node 193454780853 +other_node 18179487 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/node/node1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node1/cpu2 +SymlinkTo: ../../cpu/cpu2 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node1/cpu3 +SymlinkTo: ../../cpu/cpu3 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node1/cpulist +Lines: 1 +2-3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node1/meminfo +Lines: 29 +Node 1 MemTotal: 134217728 kB +Node 1 MemFree: 39634788 kB +Node 1 MemUsed: 94582940 kB +Node 1 Active: 5604496 kB +Node 1 Inactive: 71450592 kB +Node 1 Active(anon): 590464 kB +Node 1 Inactive(anon): 285088 kB +Node 1 Active(file): 5014032 kB +Node 1 Inactive(file): 71165504 kB +Node 1 Unevictable: 0 kB +Node 1 Mlocked: 0 kB +Node 1 Dirty: 120 kB +Node 1 Writeback: 0 kB +Node 1 FilePages: 83579188 kB +Node 1 Mapped: 864112 kB +Node 1 AnonPages: 671932 kB +Node 1 Shmem: 87580 kB +Node 1 KernelStack: 31104 kB +Node 1 PageTables: 124272 kB +Node 1 NFS_Unstable: 0 kB +Node 1 Bounce: 0 kB +Node 1 WritebackTmp: 0 kB +Node 1 Slab: 7020716 kB +Node 1 SReclaimable: 4614084 kB +Node 1 SUnreclaim: 2406632 kB +Node 1 AnonHugePages: 90112 kB +Node 1 HugePages_Total: 0 +Node 1 HugePages_Free: 0 +Node 1 HugePages_Surp: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node1/numastat +Lines: 6 +numa_hit 326720946761 +numa_miss 59858626709 +numa_foreign 12624528 +interleave_hit 57286 +local_node 326719046550 +other_node 59860526920 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/system/node/node2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node2/cpulist +Lines: 1 + +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node2/meminfo +Lines: 29 +Node 2 MemTotal: 134217728 kB +Node 2 MemFree: 39634788 kB +Node 2 MemUsed: 94582940 kB +Node 2 Active: 5604496 kB +Node 2 Inactive: 71450592 kB +Node 2 Active(anon): 590464 kB +Node 2 Inactive(anon): 285088 kB +Node 2 Active(file): 5014032 kB +Node 2 Inactive(file): 71165504 kB +Node 2 Unevictable: 0 kB +Node 2 Mlocked: 0 kB +Node 2 Dirty: 120 kB +Node 2 Writeback: 0 kB +Node 2 FilePages: 83579188 kB +Node 2 Mapped: 864112 kB +Node 2 AnonPages: 671932 kB +Node 2 Shmem: 87580 kB +Node 2 KernelStack: 31104 kB +Node 2 PageTables: 124272 kB +Node 2 NFS_Unstable: 0 kB +Node 2 Bounce: 0 kB +Node 2 WritebackTmp: 0 kB +Node 2 Slab: 7020716 kB +Node 2 SReclaimable: 4614084 kB +Node 2 SUnreclaim: 2406632 kB +Node 2 AnonHugePages: 90112 kB +Node 2 HugePages_Total: 0 +Node 2 HugePages_Free: 0 +Node 2 HugePages_Surp: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/system/node/node2/numastat +Lines: 6 +numa_hit 26720946761 +numa_miss 9858626709 +numa_foreign 2624528 +interleave_hit 7286 +local_node 26719046550 +other_node 9860526920 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/virtual +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/virtual/thermal +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/virtual/thermal/cooling_device0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/virtual/thermal/cooling_device0/cur_state +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/virtual/thermal/cooling_device0/max_state +Lines: 1 +3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/virtual/thermal/cooling_device0/type +Lines: 1 +Processor +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/virtual/thermal/thermal_zone0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/virtual/thermal/thermal_zone0/policy +Lines: 1 +step_wise +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/virtual/thermal/thermal_zone0/temp +Lines: 1 +12376 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/virtual/thermal/thermal_zone0/type +Lines: 1 +cpu-thermal +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcache +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/average_key_size +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0 +SymlinkTo: ../../../devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/btree_cache_size +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0 +SymlinkTo: ../../../devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache_available_percent +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/congested +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/active_journal_entries +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_nodes +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_read_average_duration_us +Lines: 1 +1305 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/cache_read_races +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/root_usage_percent +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hits +Lines: 1 +289 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_readaheads +Lines: 1 +13 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_readaheads +Lines: 1 +13 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_readaheads +Lines: 1 +13 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hits +Lines: 1 +546 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_readaheads +Lines: 1 +13 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/tree_depth +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/btree_cache_size +Lines: 1 +2.05G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/btree_write_stats +Lines: 6 + nr size +initial: 3298401 100k +init_next_bset: 4055926 28.2k +cache_reclaim: 14401 720 +journal_reclaim: 66903805 697 +interior: 3035363 1.26k +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/compression_stats +Lines: 6 +typetype compressed uncompressed average extent size +lz4_old 0 0 0 +gzip 0 0 0 +lz4 48.9G 71.2G 62.5k +zstd 226G 603G 115k +incompressible 10.8T 10.8T 90.4k +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/accounting_key_to_wb_slowpath +Lines: 2 +since mount: 39816825 +since filesystem creation: 44105502 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bkey_pack_pos_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize +Lines: 2 +since mount: 0 +since filesystem creation: 26587339 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize_lock +Lines: 2 +since mount: 3070115 +since filesystem creation: 62061408 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize_lock_fail +Lines: 2 +since mount: 2540 +since filesystem creation: 24213 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize_unlock +Lines: 2 +since mount: 3070115 +since filesystem creation: 36260384 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_reap +Lines: 2 +since mount: 10555604 +since filesystem creation: 69068459 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_scan +Lines: 2 +since mount: 137595 +since filesystem creation: 427545 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_key_cache_fill +Lines: 2 +since mount: 19814483 +since filesystem creation: 169308144 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_alloc +Lines: 2 +since mount: 3298401 +since filesystem creation: 8665587 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_compact +Lines: 2 +since mount: 2620840 +since filesystem creation: 5554425 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_free +Lines: 2 +since mount: 5926033 +since filesystem creation: 14112667 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_merge +Lines: 2 +since mount: 224564 +since filesystem creation: 559684 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_merge_attempt +Lines: 2 +since mount: 13549164 +since filesystem creation: 15868895 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_read +Lines: 2 +since mount: 10566234 +since filesystem creation: 70225874 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_rewrite +Lines: 2 +since mount: 8227 +since filesystem creation: 1130316 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_set_root +Lines: 2 +since mount: 7779 +since filesystem creation: 77958 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_split +Lines: 2 +since mount: 222385 +since filesystem creation: 710571 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_write +Lines: 2 +since mount: 77307915 +since filesystem creation: 147968490 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_path_relock_fail +Lines: 2 +since mount: 2972086 +since filesystem creation: 56213103 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_path_upgrade_fail +Lines: 2 +since mount: 683421 +since filesystem creation: 2103667 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_reserve_get_fail +Lines: 2 +since mount: 71 +since filesystem creation: 11706 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_alloc +Lines: 2 +since mount: 7224514 +since filesystem creation: 37363674 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_alloc_fail +Lines: 2 +since mount: 0 +since filesystem creation: 11156091 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_alloc_from_stripe +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard +Lines: 2 +since mount: 5662938 +since filesystem creation: 24751388 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard_fast +Lines: 2 +since mount: 3812 +since filesystem creation: 10204 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard_fast_worker +Lines: 2 +since mount: 3812 +since filesystem creation: 4012 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard_worker +Lines: 2 +since mount: 2584384 +since filesystem creation: 7021501 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_invalidate +Lines: 2 +since mount: 23630 +since filesystem creation: 3483205 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/cached_ptr_drop +Lines: 2 +since mount: 0 +since filesystem creation: 2.05G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/copygc +Lines: 2 +since mount: 7 +since filesystem creation: 424790 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/copygc_wait_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 537321 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read +Lines: 2 +since mount: 475G +since filesystem creation: 44.5T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_bounce +Lines: 2 +since mount: 1918904 +since filesystem creation: 250520580 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_fail_and_poison +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_hole +Lines: 2 +since mount: 7.04G +since filesystem creation: 1.69T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_inline +Lines: 2 +since mount: 710M +since filesystem creation: 14.9G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_narrow_crcs +Lines: 2 +since mount: 0 +since filesystem creation: 18529 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_narrow_crcs_fail +Lines: 2 +since mount: 0 +since filesystem creation: 1779 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote +Lines: 2 +since mount: 8963785 +since filesystem creation: 242468868 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_already_promoted +Lines: 2 +since mount: 8890276 +since filesystem creation: 211037452 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_congested +Lines: 2 +since mount: 64143 +since filesystem creation: 2913847 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_may_not +Lines: 2 +since mount: 0 +since filesystem creation: 20206095 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_unwritten +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_promote +Lines: 2 +since mount: 12.8G +since filesystem creation: 391G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_retry +Lines: 2 +since mount: 183 +since filesystem creation: 22404675 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_reuse_race +Lines: 2 +since mount: 25 +since filesystem creation: 201095 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_split +Lines: 2 +since mount: 464596 +since filesystem creation: 218590695 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update +Lines: 2 +since mount: 61.8T +since filesystem creation: 21.5P +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_fail +Lines: 2 +since mount: 2.44M +since filesystem creation: 1.06G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_in_flight +Lines: 2 +since mount: 2532017 +since filesystem creation: 3978784 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_key +Lines: 2 +since mount: 61.8T +since filesystem creation: 91.2T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_key_fail +Lines: 2 +since mount: 22.4G +since filesystem creation: 22.7G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_no_io +Lines: 2 +since mount: 80.2G +since filesystem creation: 93.9G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_noop_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_pred +Lines: 2 +since mount: 8.64M +since filesystem creation: 45.0T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_read +Lines: 2 +since mount: 6.94T +since filesystem creation: 81.3T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_start_fail_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 314018822443 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_useless_write_fail +Lines: 2 +since mount: 4.87G +since filesystem creation: 4.94G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_write +Lines: 2 +since mount: 6.96T +since filesystem creation: 33.8T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_write +Lines: 2 +since mount: 346G +since filesystem creation: 18.9T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/error_throw +Lines: 2 +since mount: 2252331183 +since filesystem creation: 4719910958 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/evacuate_bucket +Lines: 2 +since mount: 112 +since filesystem creation: 6735247 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/fsync +Lines: 2 +since mount: 302707 +since filesystem creation: 1515147 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/gc_gens_end +Lines: 2 +since mount: 0 +since filesystem creation: 3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/gc_gens_start +Lines: 2 +since mount: 0 +since filesystem creation: 3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_full +Lines: 2 +since mount: 1459 +since filesystem creation: 94587 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_reclaim_finish +Lines: 2 +since mount: 93364037 +since filesystem creation: 406994135 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_reclaim_start +Lines: 2 +since mount: 93364037 +since filesystem creation: 406994135 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_res_get_blocked +Lines: 2 +since mount: 27723 +since filesystem creation: 74696 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_write +Lines: 2 +since mount: 5081352 +since filesystem creation: 15458801 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/open_bucket_alloc_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_btree +Lines: 2 +since mount: 2.00G +since filesystem creation: 2.01G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_clear_scan +Lines: 2 +since mount: 2 +since filesystem creation: 11 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_data +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_phys +Lines: 2 +since mount: 62.7T +since filesystem creation: 63.6T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_device +Lines: 2 +since mount: 1.03T +since filesystem creation: 76.0T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_fs +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_inum +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_metadata +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_pending +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_set_pending +Lines: 2 +since mount: 0 +since filesystem creation: 29.0G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/sectors_alloc +Lines: 2 +since mount: 8.08T +since filesystem creation: 11.4T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_alloc +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_create +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_create_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_delete +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_reuse +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_update_bucket +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_update_extent +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_update_extent_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/sync_fs +Lines: 2 +since mount: 5732 +since filesystem creation: 42023 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_blocked_journal_reclaim +Lines: 2 +since mount: 13 +since filesystem creation: 78 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_btree_node_reused +Lines: 2 +since mount: 38290 +since filesystem creation: 53354 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_btree_node_split +Lines: 2 +since mount: 19007 +since filesystem creation: 100190 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_fault_inject +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_injected +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/system/node/node2 -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_iter_upgrade +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node2/cpulist -Lines: 1 - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_journal_preres_get +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node2/meminfo -Lines: 29 -Node 2 MemTotal: 134217728 kB -Node 2 MemFree: 39634788 kB -Node 2 MemUsed: 94582940 kB -Node 2 Active: 5604496 kB -Node 2 Inactive: 71450592 kB -Node 2 Active(anon): 590464 kB -Node 2 Inactive(anon): 285088 kB -Node 2 Active(file): 5014032 kB -Node 2 Inactive(file): 71165504 kB -Node 2 Unevictable: 0 kB -Node 2 Mlocked: 0 kB -Node 2 Dirty: 120 kB -Node 2 Writeback: 0 kB -Node 2 FilePages: 83579188 kB -Node 2 Mapped: 864112 kB -Node 2 AnonPages: 671932 kB -Node 2 Shmem: 87580 kB -Node 2 KernelStack: 31104 kB -Node 2 PageTables: 124272 kB -Node 2 NFS_Unstable: 0 kB -Node 2 Bounce: 0 kB -Node 2 WritebackTmp: 0 kB -Node 2 Slab: 7020716 kB -Node 2 SReclaimable: 4614084 kB -Node 2 SUnreclaim: 2406632 kB -Node 2 AnonHugePages: 90112 kB -Node 2 HugePages_Total: 0 -Node 2 HugePages_Free: 0 -Node 2 HugePages_Surp: 0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_journal_reclaim +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/system/node/node2/numastat -Lines: 6 -numa_hit 26720946761 -numa_miss 9858626709 -numa_foreign 2624528 -interleave_hit 7286 -local_node 26719046550 -other_node 9860526920 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_journal_res_get +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/virtual -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_key_cache_key_realloced +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/virtual/thermal -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_key_cache_raced +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/virtual/thermal/cooling_device0 -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_key_cache_upgrade +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/virtual/thermal/cooling_device0/cur_state -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_mark_replicas +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/virtual/thermal/cooling_device0/max_state -Lines: 1 -3 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_mem_realloced +Lines: 2 +since mount: 73 +since filesystem creation: 6111 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/virtual/thermal/cooling_device0/type -Lines: 1 -Processor +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_memory_allocation_failure +Lines: 2 +since mount: 0 +since filesystem creation: 27513334 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/devices/virtual/thermal/thermal_zone0 -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock +Lines: 2 +since mount: 912579 +since filesystem creation: 2806875 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/virtual/thermal/thermal_zone0/policy -Lines: 1 -step_wise +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_after_fill +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/virtual/thermal/thermal_zone0/temp -Lines: 1 -12376 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_key_cache_fill_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/devices/virtual/thermal/thermal_zone0/type -Lines: 1 -cpu-thermal +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_next_node +Lines: 2 +since mount: 0 +since filesystem creation: 22087 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_parent_for_fill_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 2581 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs/bcache -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_path +Lines: 2 +since mount: 10664021 +since filesystem creation: 47527280 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74 -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_path_intent +Lines: 2 +since mount: 0 +since filesystem creation: 298090 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/average_key_size -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_split_race +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0 -SymlinkTo: ../../../devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_too_many_iters +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/btree_cache_size -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_traverse +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0 -SymlinkTo: ../../../devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_upgrade +Lines: 2 +since mount: 200974 +since filesystem creation: 1055154 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache_available_percent -Lines: 1 -100 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_would_deadlock +Lines: 2 +since mount: 135555 +since filesystem creation: 1025983 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/congested -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_would_deadlock_recursion_limit +Lines: 2 +since mount: 0 +since filesystem creation: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_would_deadlock_write +Lines: 2 +since mount: 2 +since filesystem creation: 2 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/active_journal_entries -Lines: 1 -1 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_write_buffer_flush +Lines: 2 +since mount: 47215660 +since filesystem creation: 51706894 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_nodes -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_traverse_all +Lines: 2 +since mount: 17672014 +since filesystem creation: 78477746 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_read_average_duration_us -Lines: 1 -1305 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/transaction_commit +Lines: 2 +since mount: 1289297181 +since filesystem creation: 4338059022 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/cache_read_races -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_flush +Lines: 2 +since mount: 47596631 +since filesystem creation: 48370568 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/root_usage_percent -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_flush_slowpath +Lines: 2 +since mount: 0 +since filesystem creation: 21031 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day -Mode: 755 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_flush_sync +Lines: 2 +since mount: 15 +since filesystem creation: 6024402 +Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/bypassed -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_maybe_flush +Lines: 2 +since mount: 47215669 +since filesystem creation: 47412849 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_hits -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_super +Lines: 2 +since mount: 21 +since filesystem creation: 30277 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_misses +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/bucket_size Lines: 1 -0 +512k Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hit_ratio +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/durability Lines: 1 -100 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hits -Lines: 1 -289 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 5242880 +user :102313054208 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal : 0 +btree : 16384 +user :252377698304 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_miss_collisions -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/io_errors +Lines: 8 +IO errors since filesystem creation + read: 0 + write: 0 + checksum:0 +IO errors since 8 y ago + read: 0 + write: 0 + checksum:0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_misses +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/label Lines: 1 -0 +disk-10 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_readaheads +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/nbuckets Lines: 1 -13 +953880 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/bypassed +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/state Lines: 1 -0 +[rw] ro evacuating spare Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_hits +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/bucket_size Lines: 1 -0 +2.00M Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_misses +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/durability Lines: 1 -0 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hit_ratio -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 2193358848 +user :3770452246528 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal : 0 +btree : 589824 +user :6258285805568 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hits -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/io_errors +Lines: 8 +IO errors since filesystem creation + read: 197416 + write: 205 + checksum:0 +IO errors since 8 y ago + read: 197416 + write: 205 + checksum:0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_miss_collisions +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/label Lines: 1 -0 +disk-4 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_misses +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/nbuckets Lines: 1 -0 +7629824 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_readaheads +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/state Lines: 1 -13 +[rw] ro evacuating spare Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_hits +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/bucket_size Lines: 1 -0 +2.00M Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_misses +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/durability Lines: 1 -0 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hit_ratio -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 8912896 +user :610019098624 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 677376 +journal : 0 +btree : 0 +user :562070339584 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hits -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/io_errors +Lines: 8 +IO errors since filesystem creation + read: 18828 + write: 1 + checksum:5 +IO errors since 8 y ago + read: 18828 + write: 1 + checksum:5 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_miss_collisions +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/label Lines: 1 -0 +disk-6 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_misses +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/nbuckets Lines: 1 -0 +953864 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_readaheads +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/state Lines: 1 -13 +[rw] ro evacuating spare Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/bypassed +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/bucket_size Lines: 1 -0 +2.00M Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_hits +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/durability Lines: 1 -0 +1 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_misses -Lines: 1 -0 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree :2767671263232 +user :553932742656 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal :2432028966912 +btree :782753624064 +user :383826411520 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hit_ratio -Lines: 1 -100 +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/io_errors +Lines: 8 +IO errors since filesystem creation + read: 0 + write: 0 + checksum:18 +IO errors since 8 y ago + read: 0 + write: 0 + checksum:18 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hits +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/label Lines: 1 -546 +disk-7 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_miss_collisions +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/nbuckets Lines: 1 -0 +1907723 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_misses +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/state Lines: 1 -0 +[rw] ro evacuating spare Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_readaheads +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/bucket_size Lines: 1 -13 +2.00M Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/tree_depth +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/durability Lines: 1 -0 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 0 +user :3115020546048 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal : 0 +btree : 0 +user :6072510210048 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/io_errors +Lines: 8 +IO errors since filesystem creation + read: 0 + write: 0 + checksum:0 +IO errors since 8 y ago + read: 0 + write: 0 + checksum:0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/label +Lines: 1 +disk-8 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/nbuckets +Lines: 1 +2384637 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/state +Lines: 1 +[rw] ro evacuating spare +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/errors +Lines: 18 +btree_node_data_missing 2 1753593586 +bset_bad_csum 2 1767112063 +btree_node_topology_bad_max_key 2 1767080711 +alloc_key_to_missing_lru_entry 4517 1771754289 +alloc_key_data_type_wrong 4415 1771753607 +alloc_key_dirty_sectors_wrong 4538 1771753607 +alloc_key_cached_sectors_wrong 4537 1771753607 +backpointer_to_missing_ptr 45480 1771754172 +lru_entry_bad 4537 1771753700 +ptr_to_missing_backpointer 44112 1771754284 +accounting_mismatch 6 1771753608 +subvol_missing 194 1761076737 +reconcile_work_incorrectly_set 113913 1771755828 +vfs_bad_inode_rm 121 1758960176 +validate_error_in_commit 2 1771750773 +extent_io_opts_not_set 11299659571772285102 +extent_ptrs_all_invalid 2 1771750773 +extent_ptrs_all_invalid_but_cached 44612 1771753458 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/fs/btrfs @@ -8114,7 +11504,3 @@ Lines: 1 20 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/.unpacked -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/collector/hwmon_linux.go b/collector/hwmon_linux.go index ad8da41b..fe4ac817 100644 --- a/collector/hwmon_linux.go +++ b/collector/hwmon_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nohwmon -// +build !nohwmon package collector @@ -23,6 +22,7 @@ import ( "os" "path/filepath" "regexp" + "slices" "strconv" "strings" @@ -154,11 +154,8 @@ func collectSensorData(dir string, data map[string]map[string]string) error { continue } - for _, t := range hwmonSensorTypes { - if t == sensorType { - addValueFile(data, sensorType+strconv.Itoa(sensorNum), sensorProperty, filepath.Join(dir, file.Name())) - break - } + if slices.Contains(hwmonSensorTypes, sensorType) { + addValueFile(data, sensorType+strconv.Itoa(sensorNum), sensorProperty, filepath.Join(dir, file.Name())) } } return nil diff --git a/collector/infiniband_linux.go b/collector/infiniband_linux.go index 7b1c4381..078047a0 100644 --- a/collector/infiniband_linux.go +++ b/collector/infiniband_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noinfiniband -// +build !noinfiniband package collector @@ -84,6 +83,38 @@ func NewInfiniBandCollector(logger *slog.Logger) (Collector, error) { "port_receive_switch_relay_errors_total": "Number of packets that could not be forwarded by the switch.", "symbol_error_total": "Number of minor link errors detected on one or more physical lanes.", "vl15_dropped_total": "Number of incoming VL15 packets dropped due to resource limitations.", + + // https://enterprise-support.nvidia.com/s/article/understanding-mlx5-linux-counters-and-status-parameters + "duplicate_requests_packets_total": "The number of received packets. A duplicate request is a request that had been previously executed.", + "implied_nak_seq_errors_total": "The number of time the requested decided an ACK. with a PSN larger than the expected PSN for an RDMA read or response.", + "lifespan_seconds": "The maximum period in ms which defines the aging of the counter reads. Two consecutive reads within this period might return the same values.", + "local_ack_timeout_errors_total": "The number of times QP's ack timer expired for RC, XRC, DCT QPs at the sender side. The QP retry limit was not exceed, therefore it is still recoverable error.", + "np_cnp_packets_sent_total": "The number of CNP packets sent by the Notification Point when it noticed congestion experienced in the RoCEv2 IP header (ECN bits). The counters was added in MLNX_OFED 4.1", + "np_ecn_marked_roce_packets_received_total": "The number of RoCEv2 packets received by the notification point which were marked for experiencing the congestion (ECN bits where '11' on the ingress RoCE traffic) . The counters was added in MLNX_OFED 4.1", + "out_of_buffer_drops_total": "The number of drops occurred due to lack of WQE for the associated QPs.", + "out_of_sequence_packets_received_total": "The number of out of sequence packets received.", + "packet_sequence_errors_total": "The number of received NAK sequence error packets. The QP retry limit was not exceeded.", + "req_cqes_errors_total": "The number of times requester detected CQEs completed with errors. The counters was added in MLNX_OFED 4.1", + "req_cqes_flush_errors_total": "The number of times requester detected CQEs completed with flushed errors. The counters was added in MLNX_OFED 4.1", + "req_remote_access_errors_total": "The number of times requester detected remote access errors. The counters was added in MLNX_OFED 4.1", + "req_remote_invalid_request_errors_total": "The number of times requester detected remote invalid request errors. The counters was added in MLNX_OFED 4.1", + "resp_cqes_errors_total": "The number of times responder detected CQEs completed with errors. The counters was added in MLNX_OFED 4.1", + "resp_cqes_flush_errors_total": "The number of times responder detected CQEs completed with flushed errors. The counters was added in MLNX_OFED 4.1", + "resp_local_length_errors_total": "The number of times responder detected local length errors. The counters was added in MLNX_OFED 4.1", + "resp_remote_access_errors_total": "The number of times responder detected remote access errors. The counters was added in MLNX_OFED 4.1", + "rnr_nak_retry_packets_received_total": "The number of received RNR NAK packets. The QP retry limit was not exceeded.", + "roce_adp_retransmits_total": "The number of adaptive retransmissions for RoCE traffic. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_adp_retransmits_timeout_total": "The number of times RoCE traffic reached timeout due to adaptive retransmission. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_slow_restart_used_total": "The number of times RoCE slow restart was used. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_slow_restart_cnps_total": "The number of times RoCE slow restart generated CNP packets. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_slow_restart_total": "The number of times RoCE slow restart changed state to slow restart. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "rp_cnp_packets_handled_total": "The number of CNP packets handled by the Reaction Point HCA to throttle the transmission rate. The counters was added in MLNX_OFED 4.1", + "rp_cnp_ignored_packets_received_total": "The number of CNP packets received and ignored by the Reaction Point HCA. This counter should not raise if RoCE Congestion Control was enabled in the network. If this counter raise, verify that ECN was enabled on the adapter.", + "rx_atomic_requests_total": "The number of received ATOMIC request for the associated QPs.", + "rx_dct_connect_requests_total": "The number of received connection requests for the associated DCTs.", + "rx_read_requests_total": "The number of received READ requests for the associated QPs.", + "rx_write_requests_total": "The number of received WRITE requests for the associated QPs.", + "rx_icrc_encapsulated_errors_total": "The number of RoCE packets with ICRC errors. This counter was added in MLNX_OFED 4.4 and kernel 4.19", } i.metricDescs = make(map[string]*prometheus.Desc) @@ -168,6 +199,41 @@ func (c *infinibandCollector) Update(ch chan<- prometheus.Metric) error { c.pushCounter(ch, "port_receive_switch_relay_errors_total", port.Counters.PortRcvSwitchRelayErrors, port.Name, portStr) c.pushCounter(ch, "symbol_error_total", port.Counters.SymbolError, port.Name, portStr) c.pushCounter(ch, "vl15_dropped_total", port.Counters.VL15Dropped, port.Name, portStr) + + // port.HwCounters + if port.HwCounters.Lifespan != nil { + c.pushMetric(ch, "lifespan_seconds", *(port.HwCounters.Lifespan)/1000, port.Name, portStr, prometheus.GaugeValue) + } + + c.pushCounter(ch, "duplicate_requests_packets_total", port.HwCounters.DuplicateRequest, port.Name, portStr) + c.pushCounter(ch, "implied_nak_seq_errors_total", port.HwCounters.ImpliedNakSeqErr, port.Name, portStr) + c.pushCounter(ch, "local_ack_timeout_errors_total", port.HwCounters.LocalAckTimeoutErr, port.Name, portStr) + c.pushCounter(ch, "np_cnp_packets_sent_total", port.HwCounters.NpCnpSent, port.Name, portStr) + c.pushCounter(ch, "np_ecn_marked_roce_packets_received_total", port.HwCounters.NpEcnMarkedRocePackets, port.Name, portStr) + c.pushCounter(ch, "out_of_buffer_drops_total", port.HwCounters.OutOfBuffer, port.Name, portStr) + c.pushCounter(ch, "out_of_sequence_packets_received_total", port.HwCounters.OutOfSequence, port.Name, portStr) + c.pushCounter(ch, "packet_sequence_errors_total", port.HwCounters.PacketSeqErr, port.Name, portStr) + c.pushCounter(ch, "req_cqes_errors_total", port.HwCounters.ReqCqeError, port.Name, portStr) + c.pushCounter(ch, "req_cqes_flush_errors_total", port.HwCounters.ReqCqeFlushError, port.Name, portStr) + c.pushCounter(ch, "req_remote_access_errors_total", port.HwCounters.ReqRemoteAccessErrors, port.Name, portStr) + c.pushCounter(ch, "req_remote_invalid_request_errors_total", port.HwCounters.ReqRemoteInvalidRequest, port.Name, portStr) + c.pushCounter(ch, "resp_cqes_errors_total", port.HwCounters.RespCqeError, port.Name, portStr) + c.pushCounter(ch, "resp_cqes_flush_errors_total", port.HwCounters.RespCqeFlushError, port.Name, portStr) + c.pushCounter(ch, "resp_local_length_errors_total", port.HwCounters.RespLocalLengthError, port.Name, portStr) + c.pushCounter(ch, "resp_remote_access_errors_total", port.HwCounters.RespRemoteAccessErrors, port.Name, portStr) + c.pushCounter(ch, "rnr_nak_retry_packets_received_total", port.HwCounters.RnrNakRetryErr, port.Name, portStr) + c.pushCounter(ch, "roce_adp_retransmits_total", port.HwCounters.RoceAdpRetrans, port.Name, portStr) + c.pushCounter(ch, "roce_adp_retransmits_timeout_total", port.HwCounters.RoceAdpRetransTo, port.Name, portStr) + c.pushCounter(ch, "roce_slow_restart_used_total", port.HwCounters.RoceSlowRestart, port.Name, portStr) + c.pushCounter(ch, "roce_slow_restart_cnps_total", port.HwCounters.RoceSlowRestartCnps, port.Name, portStr) + c.pushCounter(ch, "roce_slow_restart_total", port.HwCounters.RoceSlowRestartTrans, port.Name, portStr) + c.pushCounter(ch, "rp_cnp_packets_handled_total", port.HwCounters.RpCnpHandled, port.Name, portStr) + c.pushCounter(ch, "rp_cnp_ignored_packets_received_total", port.HwCounters.RpCnpIgnored, port.Name, portStr) + c.pushCounter(ch, "rx_atomic_requests_total", port.HwCounters.RxAtomicRequests, port.Name, portStr) + c.pushCounter(ch, "rx_dct_connect_requests_total", port.HwCounters.RxDctConnect, port.Name, portStr) + c.pushCounter(ch, "rx_read_requests_total", port.HwCounters.RxReadRequests, port.Name, portStr) + c.pushCounter(ch, "rx_write_requests_total", port.HwCounters.RxWriteRequests, port.Name, portStr) + c.pushCounter(ch, "rx_icrc_encapsulated_errors_total", port.HwCounters.RxIcrcEncapsulated, port.Name, portStr) } } diff --git a/collector/interrupts_common.go b/collector/interrupts_common.go index 80cd7171..4e4bad6f 100644 --- a/collector/interrupts_common.go +++ b/collector/interrupts_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (linux || openbsd) && !nointerrupts -// +build linux openbsd -// +build !nointerrupts package collector diff --git a/collector/interrupts_linux.go b/collector/interrupts_linux.go index 77caf423..d70b0e04 100644 --- a/collector/interrupts_linux.go +++ b/collector/interrupts_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts -// +build !nointerrupts package collector diff --git a/collector/interrupts_linux_test.go b/collector/interrupts_linux_test.go index 82e536e4..d9209165 100644 --- a/collector/interrupts_linux_test.go +++ b/collector/interrupts_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts -// +build !nointerrupts package collector diff --git a/collector/interrupts_openbsd.go b/collector/interrupts_openbsd.go index 60fcbf1d..b9ab0d90 100644 --- a/collector/interrupts_openbsd.go +++ b/collector/interrupts_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts && !amd64 -// +build !nointerrupts,!amd64 package collector diff --git a/collector/interrupts_openbsd_amd64.go b/collector/interrupts_openbsd_amd64.go index f52a1b81..5f404496 100644 --- a/collector/interrupts_openbsd_amd64.go +++ b/collector/interrupts_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts -// +build !nointerrupts package collector diff --git a/collector/ipvs_linux.go b/collector/ipvs_linux.go index 7d7bae54..2ad30e07 100644 --- a/collector/ipvs_linux.go +++ b/collector/ipvs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noipvs -// +build !noipvs package collector diff --git a/collector/ipvs_linux_test.go b/collector/ipvs_linux_test.go index bc3e40f9..b6870d80 100644 --- a/collector/ipvs_linux_test.go +++ b/collector/ipvs_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noipvs -// +build !noipvs package collector diff --git a/collector/kernel_hung_linux.go b/collector/kernel_hung_linux.go new file mode 100644 index 00000000..fe8a07ba --- /dev/null +++ b/collector/kernel_hung_linux.go @@ -0,0 +1,63 @@ +// Copyright 2018 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !noprocesses + +package collector + +import ( + "fmt" + "log/slog" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/procfs" +) + +type kernelHungCollector struct { + fs procfs.FS + logger *slog.Logger +} + +func init() { + registerCollector("kernel_hung", defaultDisabled, NewKernelHungCollector) +} + +func NewKernelHungCollector(logger *slog.Logger) (Collector, error) { + fs, err := procfs.NewFS(*procPath) + if err != nil { + return nil, fmt.Errorf("failed to open procfs: %w", err) + } + return &kernelHungCollector{ + fs: fs, + logger: logger, + }, nil +} + +var ( + taskDetectCount = prometheus.NewDesc( + prometheus.BuildFQName(namespace, "kernel_hung", "task_detect_count"), + "Total number of tasks that have been detected as hung since the system booted.", + nil, nil, + ) +) + +func (c *kernelHungCollector) Update(ch chan<- prometheus.Metric) error { + kernelHung, err := c.fs.KernelHung() + if err != nil { + return err + } + + ch <- prometheus.MustNewConstMetric(taskDetectCount, prometheus.CounterValue, float64(*kernelHung.HungTaskDetectCount)) + + return nil +} diff --git a/collector/ksmd_linux.go b/collector/ksmd_linux.go index d504fe30..2a68f43f 100644 --- a/collector/ksmd_linux.go +++ b/collector/ksmd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noksmd -// +build !noksmd package collector diff --git a/collector/kvm_bsd.go b/collector/kvm_bsd.go index c4a4479a..feee6cc8 100644 --- a/collector/kvm_bsd.go +++ b/collector/kvm_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nokvm && (freebsd || dragonfly) -// +build !nokvm -// +build freebsd dragonfly package collector diff --git a/collector/lnstat_linux.go b/collector/lnstat_linux.go index 43bd7e05..232e5ce4 100644 --- a/collector/lnstat_linux.go +++ b/collector/lnstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nolnstat -// +build !nolnstat package collector diff --git a/collector/loadavg.go b/collector/loadavg.go index 09b1df3a..48c271d9 100644 --- a/collector/loadavg.go +++ b/collector/loadavg.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || aix) && !noloadavg -// +build darwin dragonfly freebsd linux netbsd openbsd solaris aix -// +build !noloadavg package collector diff --git a/collector/loadavg_aix.go b/collector/loadavg_aix.go index 0f3db0d9..8736dca8 100644 --- a/collector/loadavg_aix.go +++ b/collector/loadavg_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/loadavg_bsd.go b/collector/loadavg_bsd.go index a1f5ae66..23ab24a9 100644 --- a/collector/loadavg_bsd.go +++ b/collector/loadavg_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && !noloadavg -// +build darwin dragonfly freebsd netbsd openbsd -// +build !noloadavg package collector diff --git a/collector/loadavg_linux.go b/collector/loadavg_linux.go index aab11b18..f0d6c6e7 100644 --- a/collector/loadavg_linux.go +++ b/collector/loadavg_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/loadavg_linux_test.go b/collector/loadavg_linux_test.go index 2d56317d..271cc6b4 100644 --- a/collector/loadavg_linux_test.go +++ b/collector/loadavg_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/loadavg_solaris.go b/collector/loadavg_solaris.go index 316233fa..31b1105e 100644 --- a/collector/loadavg_solaris.go +++ b/collector/loadavg_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/logind_linux.go b/collector/logind_linux.go index f5606ee1..bd2c0484 100644 --- a/collector/logind_linux.go +++ b/collector/logind_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nologind -// +build !nologind package collector @@ -20,6 +19,7 @@ import ( "fmt" "log/slog" "os" + "slices" "strconv" "github.com/godbus/dbus/v5" @@ -138,10 +138,8 @@ func collectMetrics(ch chan<- prometheus.Metric, c logindInterface) error { } func knownStringOrOther(value string, known []string) string { - for i := range known { - if value == known[i] { - return value - } + if slices.Contains(known, value) { + return value } return "other" @@ -176,19 +174,19 @@ func newDbus() (*logindDbus, error) { } func (c *logindDbus) listSeats() ([]string, error) { - var result [][]interface{} + var result [][]any err := c.object.Call(dbusObject+".Manager.ListSeats", 0).Store(&result) if err != nil { return nil, err } - resultInterface := make([]interface{}, len(result)) + resultInterface := make([]any, len(result)) for i := range result { resultInterface[i] = result[i] } seats := make([]logindSeatEntry, len(result)) - seatsInterface := make([]interface{}, len(seats)) + seatsInterface := make([]any, len(seats)) for i := range seats { seatsInterface[i] = &seats[i] } @@ -209,19 +207,19 @@ func (c *logindDbus) listSeats() ([]string, error) { } func (c *logindDbus) listSessions() ([]logindSessionEntry, error) { - var result [][]interface{} + var result [][]any err := c.object.Call(dbusObject+".Manager.ListSessions", 0).Store(&result) if err != nil { return nil, err } - resultInterface := make([]interface{}, len(result)) + resultInterface := make([]any, len(result)) for i := range result { resultInterface[i] = result[i] } sessions := make([]logindSessionEntry, len(result)) - sessionsInterface := make([]interface{}, len(sessions)) + sessionsInterface := make([]any, len(sessions)) for i := range sessions { sessionsInterface[i] = &sessions[i] } diff --git a/collector/logind_linux_test.go b/collector/logind_linux_test.go index 5cfedff4..b2592a74 100644 --- a/collector/logind_linux_test.go +++ b/collector/logind_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nologind -// +build !nologind package collector diff --git a/collector/mdadm_linux.go b/collector/mdadm_linux.go index 5f76db23..14dc2088 100644 --- a/collector/mdadm_linux.go +++ b/collector/mdadm_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomdadm -// +build !nomdadm package collector diff --git a/collector/mdadm_linux_test.go b/collector/mdadm_linux_test.go index f125d533..6aa21623 100644 --- a/collector/mdadm_linux_test.go +++ b/collector/mdadm_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomdadm -// +build !nomdadm package collector diff --git a/collector/meminfo.go b/collector/meminfo.go index 4eab27b1..cc69fe74 100644 --- a/collector/meminfo.go +++ b/collector/meminfo.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || linux || openbsd || netbsd || aix) && !nomeminfo -// +build darwin linux openbsd netbsd aix -// +build !nomeminfo package collector diff --git a/collector/meminfo_aix.go b/collector/meminfo_aix.go index f90b1fd8..52e84a1e 100644 --- a/collector/meminfo_aix.go +++ b/collector/meminfo_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/meminfo_darwin.go b/collector/meminfo_darwin.go index b5b10b4b..947857f9 100644 --- a/collector/meminfo_darwin.go +++ b/collector/meminfo_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector @@ -52,7 +51,7 @@ func (c *meminfoCollector) getMemInfo() (map[string]float64, error) { &infoCount, ) if ret != C.KERN_SUCCESS { - return nil, fmt.Errorf("Couldn't get memory statistics, host_statistics returned %d", ret) + return nil, fmt.Errorf("couldn't get memory statistics, host_statistics returned %d", ret) } totalb, err := unix.Sysctl("hw.memsize") if err != nil { diff --git a/collector/meminfo_linux.go b/collector/meminfo_linux.go index 4e67ac58..88c18d76 100644 --- a/collector/meminfo_linux.go +++ b/collector/meminfo_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector @@ -184,6 +183,12 @@ func (c *meminfoCollector) getMemInfo() (map[string]float64, error) { if meminfo.WritebackTmpBytes != nil { metrics["WritebackTmp_bytes"] = float64(*meminfo.WritebackTmpBytes) } + if meminfo.ZswapBytes != nil { + metrics["Zswap_bytes"] = float64(*meminfo.ZswapBytes) + } + if meminfo.ZswappedBytes != nil { + metrics["Zswapped_bytes"] = float64(*meminfo.ZswappedBytes) + } // These fields are always in bytes and do not have `Bytes` // suffixed counterparts in the procfs.Meminfo struct, nor do diff --git a/collector/meminfo_linux_test.go b/collector/meminfo_linux_test.go index 41a0133f..2ad7d505 100644 --- a/collector/meminfo_linux_test.go +++ b/collector/meminfo_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/meminfo_netbsd.go b/collector/meminfo_netbsd.go index 54d23a12..549cd6a5 100644 --- a/collector/meminfo_netbsd.go +++ b/collector/meminfo_netbsd.go @@ -12,13 +12,13 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector import ( - "golang.org/x/sys/unix" "log/slog" + + "golang.org/x/sys/unix" ) type meminfoCollector struct { diff --git a/collector/meminfo_numa_linux.go b/collector/meminfo_numa_linux.go index fc26eba4..cd494928 100644 --- a/collector/meminfo_numa_linux.go +++ b/collector/meminfo_numa_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo_numa -// +build !nomeminfo_numa package collector diff --git a/collector/meminfo_numa_linux_test.go b/collector/meminfo_numa_linux_test.go index 33bc362e..1d251fcf 100644 --- a/collector/meminfo_numa_linux_test.go +++ b/collector/meminfo_numa_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo_numa -// +build !nomeminfo_numa package collector diff --git a/collector/meminfo_openbsd.go b/collector/meminfo_openbsd.go index ca9f46ad..25090510 100644 --- a/collector/meminfo_openbsd.go +++ b/collector/meminfo_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo && !amd64 -// +build !nomeminfo,!amd64 package collector diff --git a/collector/meminfo_openbsd_amd64.go b/collector/meminfo_openbsd_amd64.go index 906a36e4..72950726 100644 --- a/collector/meminfo_openbsd_amd64.go +++ b/collector/meminfo_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/memory_bsd.go b/collector/memory_bsd.go index 1c371052..5bec6155 100644 --- a/collector/memory_bsd.go +++ b/collector/memory_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (freebsd || dragonfly) && !nomeminfo -// +build freebsd dragonfly -// +build !nomeminfo package collector diff --git a/collector/mountstats_linux.go b/collector/mountstats_linux.go index 03f1a9b6..1c3b9a99 100644 --- a/collector/mountstats_linux.go +++ b/collector/mountstats_linux.go @@ -12,13 +12,13 @@ // limitations under the License. //go:build !nomountstats -// +build !nomountstats package collector import ( "fmt" "log/slog" + "strconv" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/procfs" @@ -127,8 +127,9 @@ func NewMountStatsCollector(logger *slog.Logger) (Collector, error) { ) var ( - labels = []string{"export", "protocol", "mountaddr"} - opLabels = []string{"export", "protocol", "mountaddr", "operation"} + labels = []string{"export", "protocol", "mountaddr"} + opLabels = []string{"export", "protocol", "mountaddr", "operation"} + translabels = []string{"export", "protocol", "mountaddr", "transport"} ) return &mountStatsCollector{ @@ -198,70 +199,70 @@ func NewMountStatsCollector(logger *slog.Logger) (Collector, error) { NFSTransportBindTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_bind_total"), "Number of times the client has had to establish a connection from scratch to the NFS server.", - labels, + translabels, nil, ), NFSTransportConnectTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_connect_total"), "Number of times the client has made a TCP connection to the NFS server.", - labels, + translabels, nil, ), NFSTransportIdleTimeSeconds: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_idle_time_seconds"), "Duration since the NFS mount last saw any RPC traffic, in seconds.", - labels, + translabels, nil, ), NFSTransportSendsTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_sends_total"), "Number of RPC requests for this mount sent to the NFS server.", - labels, + translabels, nil, ), NFSTransportReceivesTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_receives_total"), "Number of RPC responses for this mount received from the NFS server.", - labels, + translabels, nil, ), NFSTransportBadTransactionIDsTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_bad_transaction_ids_total"), "Number of times the NFS server sent a response with a transaction ID unknown to this client.", - labels, + translabels, nil, ), NFSTransportBacklogQueueTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_backlog_queue_total"), "Total number of items added to the RPC backlog queue.", - labels, + translabels, nil, ), NFSTransportMaximumRPCSlots: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_maximum_rpc_slots"), "Maximum number of simultaneously active RPC requests ever used.", - labels, + translabels, nil, ), NFSTransportSendingQueueTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_sending_queue_total"), "Total number of items added to the RPC transmission sending queue.", - labels, + translabels, nil, ), NFSTransportPendingQueueTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_pending_queue_total"), "Total number of items added to the RPC transmission pending queue.", - labels, + translabels, nil, ), @@ -618,74 +619,76 @@ func (c *mountStatsCollector) updateNFSStats(ch chan<- prometheus.Metric, s *pro ) for i := range s.Transport { + translabelValues := []string{export, protocol, mountAddress, strconv.Itoa(i)} + ch <- prometheus.MustNewConstMetric( c.NFSTransportBindTotal, prometheus.CounterValue, float64(s.Transport[i].Bind), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportConnectTotal, prometheus.CounterValue, float64(s.Transport[i].Connect), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportIdleTimeSeconds, prometheus.GaugeValue, float64(s.Transport[i].IdleTimeSeconds%float64Mantissa), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportSendsTotal, prometheus.CounterValue, float64(s.Transport[i].Sends), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportReceivesTotal, prometheus.CounterValue, float64(s.Transport[i].Receives), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportBadTransactionIDsTotal, prometheus.CounterValue, float64(s.Transport[i].BadTransactionIDs), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportBacklogQueueTotal, prometheus.CounterValue, float64(s.Transport[i].CumulativeBacklog), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportMaximumRPCSlots, prometheus.GaugeValue, float64(s.Transport[i].MaximumRPCSlotsUsed), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportSendingQueueTotal, prometheus.CounterValue, float64(s.Transport[i].CumulativeSendingQueue), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportPendingQueueTotal, prometheus.CounterValue, float64(s.Transport[i].CumulativePendingQueue), - labelValues..., + translabelValues..., ) } diff --git a/collector/netclass_linux.go b/collector/netclass_linux.go index 87763c3b..7f8373df 100644 --- a/collector/netclass_linux.go +++ b/collector/netclass_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetclass && linux -// +build !nonetclass,linux package collector diff --git a/collector/netclass_rtnl_linux.go b/collector/netclass_rtnl_linux.go index 44d89f8f..d3dde4c0 100644 --- a/collector/netclass_rtnl_linux.go +++ b/collector/netclass_rtnl_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetclass && linux -// +build !nonetclass,linux package collector @@ -21,6 +20,7 @@ import ( "fmt" "io/fs" "path/filepath" + "strings" "github.com/alecthomas/kingpin/v2" "github.com/jsimonetti/rtnetlink/v2" @@ -97,6 +97,12 @@ func (c *netClassCollector) netClassRTNLUpdate(ch chan<- prometheus.Metric) erro []string{"device", "address", "broadcast", "duplex", "operstate", "ifalias"}, nil, ) + altnameDesc := prometheus.NewDesc( + prometheus.BuildFQName(namespace, c.subsystem, "altnames_info"), + "Non-numeric data of altname, value is always 1.", + []string{"altname", "device"}, + nil, + ) infoValue := 1.0 var ifalias = "" @@ -114,6 +120,14 @@ func (c *netClassCollector) netClassRTNLUpdate(ch chan<- prometheus.Metric) erro ch <- prometheus.MustNewConstMetric(infoDesc, prometheus.GaugeValue, infoValue, msg.Attributes.Name, msg.Attributes.Address.String(), msg.Attributes.Broadcast.String(), duplex, operstateStr[int(msg.Attributes.OperationalState)], ifalias) + if len(msg.Attributes.AltNames) > 0 { + for _, altname := range msg.Attributes.AltNames { + if altname == "" { + continue + } + ch <- prometheus.MustNewConstMetric(altnameDesc, prometheus.GaugeValue, infoValue, strings.ToValidUTF8(altname, "\uFFFD"), msg.Attributes.Name) + } + } pushMetric(ch, c.getFieldDesc("address_assign_type"), "address_assign_type", ifaceInfo.AddrAssignType, prometheus.GaugeValue, msg.Attributes.Name) pushMetric(ch, c.getFieldDesc("carrier"), "carrier", msg.Attributes.Carrier, prometheus.GaugeValue, msg.Attributes.Name) pushMetric(ch, c.getFieldDesc("carrier_changes_total"), "carrier_changes_total", msg.Attributes.CarrierChanges, prometheus.CounterValue, msg.Attributes.Name) diff --git a/collector/netdev_aix.go b/collector/netdev_aix.go index e29371b1..6c48600f 100644 --- a/collector/netdev_aix.go +++ b/collector/netdev_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_bsd.go b/collector/netdev_bsd.go index e1a947e7..7ec6ad57 100644 --- a/collector/netdev_bsd.go +++ b/collector/netdev_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nonetdev && (freebsd || dragonfly) -// +build !nonetdev -// +build freebsd dragonfly package collector diff --git a/collector/netdev_common.go b/collector/netdev_common.go index c19e5df5..f37a7085 100644 --- a/collector/netdev_common.go +++ b/collector/netdev_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nonetdev && (linux || freebsd || openbsd || dragonfly || darwin || aix) -// +build !nonetdev -// +build linux freebsd openbsd dragonfly darwin aix package collector @@ -148,7 +146,7 @@ func (c *netDevCollector) Update(ch chan<- prometheus.Metric) error { "info"), "node network address by device", []string{"device", "address", "netmask", "scope"}, nil) - for _, addr := range getAddrsInfo(interfaces) { + for _, addr := range getAddrsInfo(interfaces, &c.deviceFilter, c.logger) { ch <- prometheus.MustNewConstMetric(desc, prometheus.GaugeValue, 1, addr.device, addr.addr, addr.netmask, addr.scope) } @@ -180,10 +178,14 @@ func scope(ip net.IP) string { } // getAddrsInfo returns interface name, address, scope and netmask for all interfaces. -func getAddrsInfo(interfaces []net.Interface) []addrInfo { +func getAddrsInfo(interfaces []net.Interface, filter *deviceFilter, logger *slog.Logger) []addrInfo { var res []addrInfo for _, ifs := range interfaces { + if filter.ignored(ifs.Name) { + logger.Debug("Ignoring device", "device", ifs.Name) + continue + } addrs, _ := ifs.Addrs() for _, addr := range addrs { ip, ipNet, err := net.ParseCIDR(addr.String()) diff --git a/collector/netdev_darwin.go b/collector/netdev_darwin.go index 42835594..7b70a0d0 100644 --- a/collector/netdev_darwin.go +++ b/collector/netdev_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_linux.go b/collector/netdev_linux.go index 58ac4af5..8f694c2c 100644 --- a/collector/netdev_linux.go +++ b/collector/netdev_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_linux_test.go b/collector/netdev_linux_test.go index 06700fd8..3f0515b3 100644 --- a/collector/netdev_linux_test.go +++ b/collector/netdev_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_openbsd.go b/collector/netdev_openbsd.go index 31c2640b..85df6801 100644 --- a/collector/netdev_openbsd.go +++ b/collector/netdev_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev && !amd64 -// +build !nonetdev,!amd64 package collector diff --git a/collector/netdev_openbsd_amd64.go b/collector/netdev_openbsd_amd64.go index e9857164..62b706d0 100644 --- a/collector/netdev_openbsd_amd64.go +++ b/collector/netdev_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netinterface_aix.go b/collector/netinterface_aix.go index 9a5b7668..913963e7 100644 --- a/collector/netinterface_aix.go +++ b/collector/netinterface_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetinterface -// +build !nonetinterface package collector diff --git a/collector/netisr_freebsd.go b/collector/netisr_freebsd.go index b3a4451c..608adbbf 100644 --- a/collector/netisr_freebsd.go +++ b/collector/netisr_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetisr -// +build !nonetisr package collector diff --git a/collector/netstat_freebsd.go b/collector/netstat_freebsd.go index 3c34d8b3..3688abca 100644 --- a/collector/netstat_freebsd.go +++ b/collector/netstat_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build freebsd -// +build freebsd package collector diff --git a/collector/netstat_freebsd_test.go b/collector/netstat_freebsd_test.go index 3b3f8523..2b3e0575 100644 --- a/collector/netstat_freebsd_test.go +++ b/collector/netstat_freebsd_test.go @@ -12,15 +12,15 @@ // limitations under the License. //go:build freebsd -// +build freebsd package collector import ( - "github.com/prometheus/client_golang/prometheus" - "golang.org/x/sys/unix" "testing" "unsafe" + + "github.com/prometheus/client_golang/prometheus" + "golang.org/x/sys/unix" ) func TestNetStatCollectorDescribe(t *testing.T) { diff --git a/collector/netstat_linux.go b/collector/netstat_linux.go index 1aa92340..5065a19a 100644 --- a/collector/netstat_linux.go +++ b/collector/netstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetstat -// +build !nonetstat package collector @@ -22,6 +21,7 @@ import ( "fmt" "io" "log/slog" + "maps" "os" "regexp" "strconv" @@ -73,12 +73,8 @@ func (c *netStatCollector) Update(ch chan<- prometheus.Metric) error { } // Merge the results of snmpStats into netStats (collisions are possible, but // we know that the keys are always unique for the given use case). - for k, v := range snmpStats { - netStats[k] = v - } - for k, v := range snmp6Stats { - netStats[k] = v - } + maps.Copy(netStats, snmpStats) + maps.Copy(netStats, snmp6Stats) for protocol, protocolStats := range netStats { for name, value := range protocolStats { key := protocol + "_" + name diff --git a/collector/netstat_linux_test.go b/collector/netstat_linux_test.go index ec430bc3..a30f44a2 100644 --- a/collector/netstat_linux_test.go +++ b/collector/netstat_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetstat -// +build !nonetstat package collector diff --git a/collector/network_route_linux.go b/collector/network_route_linux.go index 5a5c34d2..d290b202 100644 --- a/collector/network_route_linux.go +++ b/collector/network_route_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetworkroute -// +build !nonetworkroute package collector diff --git a/collector/nfs_linux.go b/collector/nfs_linux.go index ea2a1b52..7815dd06 100644 --- a/collector/nfs_linux.go +++ b/collector/nfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonfs -// +build !nonfs package collector diff --git a/collector/nfsd_linux.go b/collector/nfsd_linux.go index 7f1bc240..866be828 100644 --- a/collector/nfsd_linux.go +++ b/collector/nfsd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonfsd -// +build !nonfsd package collector diff --git a/collector/ntp.go b/collector/ntp.go index 10e639b1..e1465f54 100644 --- a/collector/ntp.go +++ b/collector/ntp.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nontp -// +build !nontp package collector @@ -60,7 +59,7 @@ func init() { // NewNtpCollector returns a new Collector exposing sanity of local NTP server. // Default definition of "local" is: // - collector.ntp.server address is a loopback address (or collector.ntp.server-is-mine flag is turned on) -// - the server is reachable with outgoin IP_TTL = 1 +// - the server is reachable with outgoing IP_TTL = 1 func NewNtpCollector(logger *slog.Logger) (Collector, error) { ipaddr := net.ParseIP(*ntpServer) if !*ntpServerIsLocal && (ipaddr == nil || !ipaddr.IsLoopback()) { diff --git a/collector/nvme_linux.go b/collector/nvme_linux.go index d1a9a87b..9cf5a803 100644 --- a/collector/nvme_linux.go +++ b/collector/nvme_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonvme -// +build !nonvme package collector @@ -27,8 +26,14 @@ import ( ) type nvmeCollector struct { - fs sysfs.FS - logger *slog.Logger + fs sysfs.FS + logger *slog.Logger + namespaceInfo *prometheus.Desc + namespaceCapacityBytes *prometheus.Desc + namespaceSizeBytes *prometheus.Desc + namespaceUsedBytes *prometheus.Desc + namespaceLogicalBlockSizeBytes *prometheus.Desc + info *prometheus.Desc } func init() { @@ -42,9 +47,51 @@ func NewNVMeCollector(logger *slog.Logger) (Collector, error) { return nil, fmt.Errorf("failed to open sysfs: %w", err) } + info := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "info"), + "Non-numeric data from /sys/class/nvme/, value is always 1.", + []string{"device", "firmware_revision", "model", "serial", "state", "cntlid"}, + nil, + ) + namespaceInfo := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_info"), + "Information about NVMe namespaces. Value is always 1", + []string{"device", "nsid", "ana_state"}, nil, + ) + + namespaceCapacityBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_capacity_bytes"), + "Capacity of the NVMe namespace in bytes. Computed as namespace_size * namespace_logical_block_size", + []string{"device", "nsid"}, nil, + ) + + namespaceSizeBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_size_bytes"), + "Size of the NVMe namespace in bytes. Available in /sys/class/nvme///size", + []string{"device", "nsid"}, nil, + ) + + namespaceUsedBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_used_bytes"), + "Used space of the NVMe namespace in bytes. Available in /sys/class/nvme///nuse", + []string{"device", "nsid"}, nil, + ) + + namespaceLogicalBlockSizeBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_logical_block_size_bytes"), + "Logical block size of the NVMe namespace in bytes. Usually 4Kb. Available in /sys/class/nvme///queue/logical_block_size", + []string{"device", "nsid"}, nil, + ) + return &nvmeCollector{ - fs: fs, - logger: logger, + fs: fs, + logger: logger, + namespaceInfo: namespaceInfo, + namespaceCapacityBytes: namespaceCapacityBytes, + namespaceSizeBytes: namespaceSizeBytes, + namespaceUsedBytes: namespaceUsedBytes, + namespaceLogicalBlockSizeBytes: namespaceLogicalBlockSizeBytes, + info: info, }, nil } @@ -59,14 +106,67 @@ func (c *nvmeCollector) Update(ch chan<- prometheus.Metric) error { } for _, device := range devices { - infoDesc := prometheus.NewDesc( - prometheus.BuildFQName(namespace, "nvme", "info"), - "Non-numeric data from /sys/class/nvme/, value is always 1.", - []string{"device", "firmware_revision", "model", "serial", "state"}, - nil, + // Export device-level metrics + ch <- prometheus.MustNewConstMetric( + c.info, + prometheus.GaugeValue, + 1.0, + device.Name, + device.FirmwareRevision, + device.Model, + device.Serial, + device.State, + device.ControllerID, ) - infoValue := 1.0 - ch <- prometheus.MustNewConstMetric(infoDesc, prometheus.GaugeValue, infoValue, device.Name, device.FirmwareRevision, device.Model, device.Serial, device.State) + + // Export namespace-level metrics + for _, namespace := range device.Namespaces { + // Namespace info metric + ch <- prometheus.MustNewConstMetric( + c.namespaceInfo, + prometheus.GaugeValue, + 1.0, + device.Name, + namespace.ID, + namespace.ANAState, + ) + + // Namespace capacity in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceCapacityBytes, + prometheus.GaugeValue, + float64(namespace.CapacityBytes), + device.Name, + namespace.ID, + ) + + // Namespace size in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceSizeBytes, + prometheus.GaugeValue, + float64(namespace.SizeBytes), + device.Name, + namespace.ID, + ) + + // Namespace used space in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceUsedBytes, + prometheus.GaugeValue, + float64(namespace.UsedBytes), + device.Name, + namespace.ID, + ) + + // Namespace logical block size in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceLogicalBlockSizeBytes, + prometheus.GaugeValue, + float64(namespace.LogicalBlockSize), + device.Name, + namespace.ID, + ) + } } return nil diff --git a/collector/os_release.go b/collector/os_release.go index e589c4ff..6acf9bed 100644 --- a/collector/os_release.go +++ b/collector/os_release.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noosrelease && !aix -// +build !noosrelease,!aix package collector diff --git a/collector/partition_aix.go b/collector/partition_aix.go index 3c54e0f4..a6d94941 100644 --- a/collector/partition_aix.go +++ b/collector/partition_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopartition -// +build !nopartition package collector diff --git a/collector/pcidevice_linux.go b/collector/pcidevice_linux.go index a7e7f6d3..6f33db93 100644 --- a/collector/pcidevice_linux.go +++ b/collector/pcidevice_linux.go @@ -12,16 +12,18 @@ // limitations under the License. //go:build !nopcidevice -// +build !nopcidevice package collector import ( + "bufio" "errors" "fmt" "log/slog" "os" + "strings" + "github.com/alecthomas/kingpin/v2" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/procfs/sysfs" ) @@ -31,36 +33,125 @@ const ( ) var ( + pciIdsPaths = []string{ + "/usr/share/misc/pci.ids", + "/usr/share/hwdata/pci.ids", + } + pciIdsFile = kingpin.Flag("collector.pcidevice.idsfile", "Path to pci.ids file to use for PCI device identification.").String() + pciNames = kingpin.Flag("collector.pcidevice.names", "Enable PCI device name resolution (requires pci.ids file).").Default("false").Bool() + pcideviceLabelNames = []string{"segment", "bus", "device", "function"} - pcideviceMaxLinkTSDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_transfers_per_second"), - "Value of maximum link's transfers per second (T/s)", - pcideviceLabelNames, nil, - ) - pcideviceMaxLinkWidthDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_width"), - "Value of maximum link's width (number of lanes)", - pcideviceLabelNames, nil, - ) + pcideviceMaxLinkTSDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_transfers_per_second"), + "Value of maximum link's transfers per second (T/s)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceCurrentLinkTSDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_transfers_per_second"), - "Value of current link's transfers per second (T/s)", - pcideviceLabelNames, nil, - ) - pcideviceCurrentLinkWidthDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_width"), - "Value of current link's width (number of lanes)", - pcideviceLabelNames, nil, - ) + pcideviceMaxLinkWidthDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_width"), + "Value of maximum link's width (number of lanes)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceCurrentLinkTSDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_transfers_per_second"), + "Value of current link's transfers per second (T/s)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + pcideviceCurrentLinkWidthDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_width"), + "Value of current link's width (number of lanes)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcidevicePowerStateDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "power_state"), + "PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error.", + append(pcideviceLabelNames, "state"), nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceD3coldAllowedDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "d3cold_allowed"), + "Whether the PCIe device supports D3cold power state (0/1).", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceSriovDriversAutoprobeDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_drivers_autoprobe"), + "Whether SR-IOV drivers autoprobe is enabled for the device (0/1).", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceSriovNumvfsDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_numvfs"), + "Number of Virtual Functions (VFs) currently enabled for SR-IOV.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceSriovTotalvfsDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_totalvfs"), + "Total number of Virtual Functions (VFs) supported by the device.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceSriovVfTotalMsixDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_vf_total_msix"), + "Total number of MSI-X vectors for Virtual Functions.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceNumaNodeDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "numa_node"), + "NUMA node number for the PCI device. -1 indicates unknown or not available.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } ) type pcideviceCollector struct { - fs sysfs.FS - infoDesc typedDesc - descs []typedFactorDesc - logger *slog.Logger + fs sysfs.FS + infoDesc typedDesc + logger *slog.Logger + pciVendors map[string]string + pciDevices map[string]map[string]string + pciSubsystems map[string]map[string]string + pciClasses map[string]string + pciSubclasses map[string]string + pciProgIfs map[string]string + pciNames bool } func init() { @@ -74,29 +165,35 @@ func NewPcideviceCollector(logger *slog.Logger) (Collector, error) { return nil, fmt.Errorf("failed to open sysfs: %w", err) } - c := pcideviceCollector{ - fs: fs, - logger: logger, - infoDesc: typedDesc{ - desc: prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "info"), - "Non-numeric data from /sys/bus/pci/devices/, value is always 1.", - append(pcideviceLabelNames, - []string{"parent_segment", "parent_bus", "parent_device", "parent_function", - "class_id", "vendor_id", "subsystem_vendor_id", "subsystem_device_id", "revision"}...), - nil, - ), - valueType: prometheus.GaugeValue, - }, - descs: []typedFactorDesc{ - {desc: pcideviceMaxLinkTSDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceMaxLinkWidthDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceCurrentLinkTSDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceCurrentLinkWidthDesc, valueType: prometheus.GaugeValue}, - }, - } - - return &c, nil + // Initialize PCI ID maps + c := &pcideviceCollector{ + fs: fs, + logger: logger, + pciNames: *pciNames, + } + + // Build label names based on whether name resolution is enabled + labelNames := append(pcideviceLabelNames, + []string{"parent_segment", "parent_bus", "parent_device", "parent_function", + "class_id", "vendor_id", "device_id", "subsystem_vendor_id", "subsystem_device_id", "revision"}...) + + if c.pciNames { + c.loadPCIIds() + // Add name labels when name resolution is enabled + labelNames = append(labelNames, "vendor_name", "device_name", "subsystem_vendor_name", "subsystem_device_name", "class_name") + } + + c.infoDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "info"), + "Non-numeric data from /sys/bus/pci/devices/, value is always 1.", + labelNames, + nil, + ), + valueType: prometheus.GaugeValue, + } + + return c, nil } func (c *pcideviceCollector) Update(ch chan<- prometheus.Metric) error { @@ -117,27 +214,397 @@ func (c *pcideviceCollector) Update(ch chan<- prometheus.Metric) error { } else { values = append(values, []string{"*", "*", "*", "*"}...) } - values = append(values, fmt.Sprintf("0x%06x", device.Class)) - values = append(values, fmt.Sprintf("0x%04x", device.Device)) - values = append(values, fmt.Sprintf("0x%04x", device.SubsystemVendor)) - values = append(values, fmt.Sprintf("0x%04x", device.SubsystemDevice)) - values = append(values, fmt.Sprintf("0x%02x", device.Revision)) + + // Add basic device information + classID := fmt.Sprintf("0x%06x", device.Class) + vendorID := fmt.Sprintf("0x%04x", device.Vendor) + deviceID := fmt.Sprintf("0x%04x", device.Device) + subsysVendorID := fmt.Sprintf("0x%04x", device.SubsystemVendor) + subsysDeviceID := fmt.Sprintf("0x%04x", device.SubsystemDevice) + + values = append(values, classID, vendorID, deviceID, subsysVendorID, subsysDeviceID, fmt.Sprintf("0x%02x", device.Revision)) + + // Add name values if name resolution is enabled + if c.pciNames { + vendorName := c.getPCIVendorName(vendorID) + deviceName := c.getPCIDeviceName(vendorID, deviceID) + subsysVendorName := c.getPCIVendorName(subsysVendorID) + subsysDeviceName := c.getPCISubsystemName(vendorID, deviceID, subsysVendorID, subsysDeviceID) + className := c.getPCIClassName(classID) + + values = append(values, vendorName, deviceName, subsysVendorName, subsysDeviceName, className) + } ch <- c.infoDesc.mustNewConstMetric(1.0, values...) - // MaxLinkSpeed and CurrentLinkSpeed are represnted in GT/s - maxLinkSpeedTS := float64(int64(*device.MaxLinkSpeed * 1e9)) - currentLinkSpeedTS := float64(int64(*device.CurrentLinkSpeed * 1e9)) + // MaxLinkSpeed and CurrentLinkSpeed are represented in GT/s + var maxLinkSpeedTS float64 + if device.MaxLinkSpeed != nil { + maxLinkSpeedTS = (*device.MaxLinkSpeed) * 1e9 + } else { + maxLinkSpeedTS = -1 + } + + var currentLinkSpeedTS float64 + if device.CurrentLinkSpeed != nil { + currentLinkSpeedTS = (*device.CurrentLinkSpeed) * 1e9 + } else { + currentLinkSpeedTS = -1 + } + + // Get power state information directly from device object + var currentPowerState string + var hasPowerState bool + if device.PowerState != nil { + currentPowerState = device.PowerState.String() + hasPowerState = true + } + + var d3coldAllowed float64 + if device.D3coldAllowed != nil { + if *device.D3coldAllowed { + d3coldAllowed = 1 + } else { + d3coldAllowed = 0 + } + } + + // Get SR-IOV information directly from device object + var sriovDriversAutoprobe float64 + if device.SriovDriversAutoprobe != nil { + if *device.SriovDriversAutoprobe { + sriovDriversAutoprobe = 1 + } else { + sriovDriversAutoprobe = 0 + } + } + + var sriovNumvfs float64 + if device.SriovNumvfs != nil { + sriovNumvfs = float64(*device.SriovNumvfs) + } + + var sriovTotalvfs float64 + if device.SriovTotalvfs != nil { + sriovTotalvfs = float64(*device.SriovTotalvfs) + } + + var sriovVfTotalMsix float64 + if device.SriovVfTotalMsix != nil { + sriovVfTotalMsix = float64(*device.SriovVfTotalMsix) + } + + // Handle numa_node with nil safety + var numaNode float64 + if device.NumaNode != nil { + numaNode = float64(*device.NumaNode) + } else { + numaNode = -1 + } + + // Handle link width fields with nil safety + var maxLinkWidth float64 + if device.MaxLinkWidth != nil { + maxLinkWidth = float64(*device.MaxLinkWidth) + } else { + maxLinkWidth = -1 + } + + var currentLinkWidth float64 + if device.CurrentLinkWidth != nil { + currentLinkWidth = float64(*device.CurrentLinkWidth) + } else { + currentLinkWidth = -1 + } + + // Emit metrics for all fields except numa_node and power_state + ch <- pcideviceMaxLinkTSDesc.mustNewConstMetric(maxLinkSpeedTS, device.Location.Strings()...) + ch <- pcideviceMaxLinkWidthDesc.mustNewConstMetric(maxLinkWidth, device.Location.Strings()...) + ch <- pcideviceCurrentLinkTSDesc.mustNewConstMetric(currentLinkSpeedTS, device.Location.Strings()...) + ch <- pcideviceCurrentLinkWidthDesc.mustNewConstMetric(currentLinkWidth, device.Location.Strings()...) + ch <- pcideviceD3coldAllowedDesc.mustNewConstMetric(d3coldAllowed, device.Location.Strings()...) + ch <- pcideviceSriovDriversAutoprobeDesc.mustNewConstMetric(sriovDriversAutoprobe, device.Location.Strings()...) + ch <- pcideviceSriovNumvfsDesc.mustNewConstMetric(sriovNumvfs, device.Location.Strings()...) + ch <- pcideviceSriovTotalvfsDesc.mustNewConstMetric(sriovTotalvfs, device.Location.Strings()...) + ch <- pcideviceSriovVfTotalMsixDesc.mustNewConstMetric(sriovVfTotalMsix, device.Location.Strings()...) + + // Emit power state metrics with state labels only if power state is available + if hasPowerState { + powerStates := []string{"D0", "D1", "D2", "D3hot", "D3cold", "unknown", "error"} + deviceLabels := device.Location.Strings() + for _, state := range powerStates { + var value float64 + if state == currentPowerState { + value = 1 + } else { + value = 0 + } + stateLabels := append(deviceLabels, state) + ch <- pcidevicePowerStateDesc.mustNewConstMetric(value, stateLabels...) + } + } - for i, val := range []float64{ - maxLinkSpeedTS, - float64(*device.MaxLinkWidth), - currentLinkSpeedTS, - float64(*device.CurrentLinkWidth), - } { - ch <- c.descs[i].mustNewConstMetric(val, device.Location.Strings()...) + // Only emit numa_node metric if the value is available (not -1) + if numaNode != -1 { + ch <- pcideviceNumaNodeDesc.mustNewConstMetric(numaNode, device.Location.Strings()...) } } return nil } + +// loadPCIIds loads PCI device information from pci.ids file +func (c *pcideviceCollector) loadPCIIds() { + var file *os.File + var err error + + c.pciVendors = make(map[string]string) + c.pciDevices = make(map[string]map[string]string) + c.pciSubsystems = make(map[string]map[string]string) + c.pciClasses = make(map[string]string) + c.pciSubclasses = make(map[string]string) + c.pciProgIfs = make(map[string]string) + + // Use custom pci.ids file if specified + if *pciIdsFile != "" { + file, err = os.Open(*pciIdsFile) + if err != nil { + c.logger.Debug("Failed to open PCI IDs file", "file", *pciIdsFile, "error", err) + return + } + c.logger.Debug("Loading PCI IDs from", "file", *pciIdsFile) + } else { + // Try each possible default path + for _, path := range pciIdsPaths { + file, err = os.Open(path) + if err == nil { + c.logger.Debug("Loading PCI IDs from default path", "path", path) + break + } + } + if err != nil { + c.logger.Debug("Failed to open any default PCI IDs file", "error", err) + return + } + } + defer file.Close() + + scanner := bufio.NewScanner(file) + var currentVendor, currentDevice, currentBaseClass, currentSubclass string + var inClassContext bool + + for scanner.Scan() { + line := scanner.Text() + if line == "" || strings.HasPrefix(line, "#") { + continue + } + + // Handle class lines (starts with 'C') + if strings.HasPrefix(line, "C ") { + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 { + classID := strings.TrimSpace(parts[0][1:]) // Remove 'C' prefix + className := strings.TrimSpace(parts[1]) + c.pciClasses[classID] = className + currentBaseClass = classID + inClassContext = true + } + continue + } + + // Handle subclass lines (single tab after class) + if strings.HasPrefix(line, "\t") && !strings.HasPrefix(line, "\t\t") && inClassContext { + line = strings.TrimPrefix(line, "\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentBaseClass != "" { + subclassID := strings.TrimSpace(parts[0]) + subclassName := strings.TrimSpace(parts[1]) + // Store as base class + subclass (e.g., "0100" for SCSI storage controller) + fullClassID := currentBaseClass + subclassID + c.pciSubclasses[fullClassID] = subclassName + currentSubclass = fullClassID + } + continue + } + + // Handle programming interface lines (double tab after subclass) + if strings.HasPrefix(line, "\t\t") && !strings.HasPrefix(line, "\t\t\t") && inClassContext { + line = strings.TrimPrefix(line, "\t\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentSubclass != "" { + progIfID := strings.TrimSpace(parts[0]) + progIfName := strings.TrimSpace(parts[1]) + // Store as base class + subclass + programming interface (e.g., "010802" for NVM Express) + fullClassID := currentSubclass + progIfID + c.pciProgIfs[fullClassID] = progIfName + } + continue + } + + // Handle vendor lines (no leading whitespace, not starting with 'C') + if !strings.HasPrefix(line, "\t") && !strings.HasPrefix(line, "C ") { + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 { + currentVendor = strings.TrimSpace(parts[0]) + c.pciVendors[currentVendor] = strings.TrimSpace(parts[1]) + currentDevice = "" + inClassContext = false + } + continue + } + + // Handle device lines (single tab) + if strings.HasPrefix(line, "\t") && !strings.HasPrefix(line, "\t\t") { + line = strings.TrimPrefix(line, "\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentVendor != "" { + currentDevice = strings.TrimSpace(parts[0]) + if c.pciDevices[currentVendor] == nil { + c.pciDevices[currentVendor] = make(map[string]string) + } + c.pciDevices[currentVendor][currentDevice] = strings.TrimSpace(parts[1]) + } + continue + } + + // Handle subsystem lines (double tab) + if strings.HasPrefix(line, "\t\t") { + line = strings.TrimPrefix(line, "\t\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentVendor != "" && currentDevice != "" { + subsysID := strings.TrimSpace(parts[0]) + subsysName := strings.TrimSpace(parts[1]) + key := fmt.Sprintf("%s:%s", currentVendor, currentDevice) + if c.pciSubsystems[key] == nil { + c.pciSubsystems[key] = make(map[string]string) + } + // Convert subsystem ID from "vendor device" format to "vendor:device" format + subsysParts := strings.Fields(subsysID) + if len(subsysParts) == 2 { + subsysKey := fmt.Sprintf("%s:%s", subsysParts[0], subsysParts[1]) + c.pciSubsystems[key][subsysKey] = subsysName + } + } + } + } + + // Debug summary + totalDevices := 0 + for _, devices := range c.pciDevices { + totalDevices += len(devices) + } + totalSubsystems := 0 + for _, subsystems := range c.pciSubsystems { + totalSubsystems += len(subsystems) + } + + c.logger.Debug("Loaded PCI device data", + "vendors", len(c.pciVendors), + "devices", totalDevices, + "subsystems", totalSubsystems, + "classes", len(c.pciClasses), + "subclasses", len(c.pciSubclasses), + "progIfs", len(c.pciProgIfs), + ) +} + +// getPCIVendorName converts PCI vendor ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCIVendorName(vendorID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return vendorID + } + + // Remove "0x" prefix if present + vendorID = strings.TrimPrefix(vendorID, "0x") + vendorID = strings.ToLower(vendorID) + + if name, ok := c.pciVendors[vendorID]; ok { + return name + } + return vendorID // Return ID if name not found +} + +// getPCIDeviceName converts PCI device ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCIDeviceName(vendorID, deviceID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return deviceID + } + + // Remove "0x" prefix if present + vendorID = strings.TrimPrefix(vendorID, "0x") + deviceID = strings.TrimPrefix(deviceID, "0x") + vendorID = strings.ToLower(vendorID) + deviceID = strings.ToLower(deviceID) + + if devices, ok := c.pciDevices[vendorID]; ok { + if name, ok := devices[deviceID]; ok { + return name + } + } + return deviceID // Return ID if name not found +} + +// getPCISubsystemName converts PCI subsystem ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCISubsystemName(vendorID, deviceID, subsysVendorID, subsysDeviceID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return subsysDeviceID + } + + // Normalize all IDs + vendorID = strings.TrimPrefix(vendorID, "0x") + deviceID = strings.TrimPrefix(deviceID, "0x") + subsysVendorID = strings.TrimPrefix(subsysVendorID, "0x") + subsysDeviceID = strings.TrimPrefix(subsysDeviceID, "0x") + + key := fmt.Sprintf("%s:%s", vendorID, deviceID) + subsysKey := fmt.Sprintf("%s:%s", subsysVendorID, subsysDeviceID) + + if subsystems, ok := c.pciSubsystems[key]; ok { + if name, ok := subsystems[subsysKey]; ok { + return name + } + } + return subsysDeviceID +} + +// getPCIClassName converts PCI class ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCIClassName(classID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return classID + } + + // Remove "0x" prefix if present and normalize + classID = strings.TrimPrefix(classID, "0x") + classID = strings.ToLower(classID) + + // Try to find the programming interface first (6 digits: base class + subclass + programming interface) + if len(classID) >= 6 { + progIf := classID[:6] + if className, exists := c.pciProgIfs[progIf]; exists { + return className + } + } + + // Try to find the subclass (4 digits: base class + subclass) + if len(classID) >= 4 { + subclass := classID[:4] + if className, exists := c.pciSubclasses[subclass]; exists { + return className + } + } + + // If not found, try with just the base class (first 2 digits) + if len(classID) >= 2 { + baseClass := classID[:2] + if className, exists := c.pciClasses[baseClass]; exists { + return className + } + } + + // Return the original class ID if not found + return "Unknown class (" + classID + ")" +} diff --git a/collector/pcidevice_linux_test.go b/collector/pcidevice_linux_test.go new file mode 100644 index 00000000..aedc7c5f --- /dev/null +++ b/collector/pcidevice_linux_test.go @@ -0,0 +1,88 @@ +// Copyright 2024 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !nopcidevice + +package collector + +import ( + "fmt" + "io" + "log/slog" + "os" + "strings" + "testing" + + "github.com/alecthomas/kingpin/v2" + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/testutil" +) + +func TestPCICollectorWithNameResolution(t *testing.T) { + // Test the PCI collector with name resolution enabled and compare against expected output + if _, err := kingpin.CommandLine.Parse([]string{ + "--path.sysfs", "fixtures/sys", + "--path.procfs", "fixtures/proc", + "--path.rootfs", "fixtures", + "--collector.pcidevice", + "--collector.pcidevice.names", + // "--collector.pcidevice.idsfile", "/usr/share/misc/pci.ids", + "--collector.pcidevice.idsfile", "fixtures/pci.ids", + }); err != nil { + t.Fatal(err) + } + + logger := slog.New(slog.NewTextHandler(io.Discard, nil)) + c, err := NewPcideviceCollector(logger) + if err != nil { + t.Fatal(err) + } + + reg := prometheus.NewRegistry() + reg.MustRegister(&testPCICollector{pc: c}) + + // Read expected output from fixture file + expectedOutput, err := os.ReadFile("fixtures/pcidevice-names-output.txt") + if err != nil { + t.Fatal(err) + } + + err = testutil.GatherAndCompare(reg, strings.NewReader(string(expectedOutput))) + if err != nil { + t.Fatal(err) + } +} + +// testPCICollector wraps the PCI collector for testing +type testPCICollector struct { + pc Collector +} + +func (tc *testPCICollector) Collect(ch chan<- prometheus.Metric) { + sink := make(chan prometheus.Metric) + go func() { + err := tc.pc.Update(sink) + if err != nil { + panic(fmt.Errorf("failed to update collector: %s", err)) + } + close(sink) + }() + + for m := range sink { + ch <- m + } +} + +func (tc *testPCICollector) Describe(ch chan<- *prometheus.Desc) { + // No-op for testing +} diff --git a/collector/perf_linux.go b/collector/perf_linux.go index b62d9b80..e4c4b81d 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noperf -// +build !noperf package collector @@ -86,10 +85,10 @@ var ( "BPUReadHit": perf.BPUReadHitProfiler, "BPUReadMiss": perf.BPUReadMissProfiler, // "L1InstrReadHit": perf.L1InstrReadHitProfiler, - // "DataTLBReadHit": perf.DataTLBReadHitProfiler, - // "DataTLBReadMiss": perf.DataTLBReadMissProfiler, - // "DataTLBWriteHit": perf.DataTLBWriteHitProfiler, - // "DataTLBWriteMiss": perf.DataTLBWriteMissProfiler, + "DataTLBReadHit": perf.DataTLBReadHitProfiler, + "DataTLBReadMiss": perf.DataTLBReadMissProfiler, + "DataTLBWriteHit": perf.DataTLBWriteHitProfiler, + "DataTLBWriteMiss": perf.DataTLBWriteMissProfiler, // "NodeCacheReadHit": perf.NodeCacheReadHitProfiler, // "NodeCacheReadMiss": perf.NodeCacheReadMissProfiler, // "NodeCacheWriteHit": perf.NodeCacheWriteHitProfiler, @@ -118,7 +117,7 @@ func perfTracepointFlagToTracepoints(tracepointsFlag []string) ([]*perfTracepoin func perfCPUFlagToCPUs(cpuFlag string) ([]int, error) { var err error cpus := []int{} - for _, subset := range strings.Split(cpuFlag, ",") { + for subset := range strings.SplitSeq(cpuFlag, ",") { // First parse a single CPU. if !strings.Contains(subset, "-") { cpu, err := strconv.Atoi(subset) @@ -328,7 +327,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { } // First configure any tracepoints. - if *perfTracepointFlag != nil && len(*perfTracepointFlag) > 0 { + if len(*perfTracepointFlag) > 0 { tracepointCollector, err := newPerfTracepointCollector(logger, *perfTracepointFlag, cpus) if err != nil { return nil, err @@ -338,7 +337,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { // Configure perf profilers hardwareProfilers := perf.AllHardwareProfilers - if *perfHwProfilerFlag != nil && len(*perfHwProfilerFlag) > 0 { + if len(*perfHwProfilerFlag) > 0 { // hardwareProfilers = 0 for _, hf := range *perfHwProfilerFlag { if v, ok := perfHardwareProfilerMap[hf]; ok { @@ -347,7 +346,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { } } softwareProfilers := perf.AllSoftwareProfilers - if *perfSwProfilerFlag != nil && len(*perfSwProfilerFlag) > 0 { + if len(*perfSwProfilerFlag) > 0 { // softwareProfilers = 0 for _, sf := range *perfSwProfilerFlag { if v, ok := perfSoftwareProfilerMap[sf]; ok { @@ -355,8 +354,8 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { } } } - cacheProfilers := perf.L1DataReadHitProfiler | perf.L1DataReadMissProfiler | perf.L1DataWriteHitProfiler | perf.L1InstrReadMissProfiler | perf.InstrTLBReadHitProfiler | perf.InstrTLBReadMissProfiler | perf.LLReadHitProfiler | perf.LLReadMissProfiler | perf.LLWriteHitProfiler | perf.LLWriteMissProfiler | perf.BPUReadHitProfiler | perf.BPUReadMissProfiler - if *perfCaProfilerFlag != nil && len(*perfCaProfilerFlag) > 0 { + cacheProfilers := perf.L1DataReadHitProfiler | perf.L1DataReadMissProfiler | perf.L1DataWriteHitProfiler | perf.L1InstrReadMissProfiler | perf.InstrTLBReadHitProfiler | perf.InstrTLBReadMissProfiler | perf.DataTLBReadHitProfiler | perf.DataTLBReadMissProfiler | perf.DataTLBWriteHitProfiler | perf.DataTLBWriteMissProfiler | perf.LLReadHitProfiler | perf.LLReadMissProfiler | perf.LLWriteHitProfiler | perf.LLWriteMissProfiler | perf.BPUReadHitProfiler | perf.BPUReadMissProfiler + if len(*perfCaProfilerFlag) > 0 { cacheProfilers = 0 for _, cf := range *perfCaProfilerFlag { if v, ok := perfCacheProfilerMap[cf]; ok { @@ -615,6 +614,46 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { []string{"cpu"}, nil, ), + "cache_tlb_data_read_hits_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_read_hits_total", + ), + "Number of data TLB read hits", + []string{"cpu"}, + nil, + ), + "cache_tlb_data_read_misses_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_read_misses_total", + ), + "Number of data TLB read misses", + []string{"cpu"}, + nil, + ), + "cache_tlb_data_write_hits_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_write_hits_total", + ), + "Number of data TLB write hits", + []string{"cpu"}, + nil, + ), + "cache_tlb_data_write_misses_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_write_misses_total", + ), + "Number of data TLB write misses", + []string{"cpu"}, + nil, + ), "cache_ll_read_hits_total": prometheus.NewDesc( prometheus.BuildFQName( namespace, @@ -895,6 +934,38 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error { ) } + if cacheProfile.DataTLBReadHit != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_read_hits_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBReadHit), + cpuid, + ) + } + + if cacheProfile.DataTLBReadMiss != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_read_misses_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBReadMiss), + cpuid, + ) + } + + if cacheProfile.DataTLBWriteHit != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_write_hits_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBWriteHit), + cpuid, + ) + } + + if cacheProfile.DataTLBWriteMiss != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_write_misses_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBWriteMiss), + cpuid, + ) + } + if cacheProfile.LastLevelReadHit != nil { ch <- prometheus.MustNewConstMetric( c.desc["cache_ll_read_hits_total"], diff --git a/collector/perf_linux_test.go b/collector/perf_linux_test.go index 7560b0a0..3176e7d2 100644 --- a/collector/perf_linux_test.go +++ b/collector/perf_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noperf -// +build !noperf package collector @@ -36,7 +35,7 @@ func canTestPerf(t *testing.T) { paranoidStr := strings.ReplaceAll(string(paranoidBytes), "\n", "") paranoid, err := strconv.Atoi(paranoidStr) if err != nil { - t.Fatalf("Expected perf_event_paranoid to be an int, got: %s", paranoidStr) + t.Fatalf("expected perf_event_paranoid to be an int, got: %s", paranoidStr) } if paranoid >= 1 { t.Skip("Skipping perf tests, set perf_event_paranoid to 0") diff --git a/collector/powersupplyclass.go b/collector/powersupplyclass.go index a5e648c0..33142617 100644 --- a/collector/powersupplyclass.go +++ b/collector/powersupplyclass.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nopowersupplyclass && (linux || darwin) -// +build !nopowersupplyclass -// +build linux darwin package collector diff --git a/collector/powersupplyclass_darwin.go b/collector/powersupplyclass_darwin.go index 01d7f184..be3d778c 100644 --- a/collector/powersupplyclass_darwin.go +++ b/collector/powersupplyclass_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopowersupplyclass -// +build !nopowersupplyclass package collector diff --git a/collector/powersupplyclass_linux.go b/collector/powersupplyclass_linux.go index 86e81fb6..b4fbf351 100644 --- a/collector/powersupplyclass_linux.go +++ b/collector/powersupplyclass_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopowersupplyclass -// +build !nopowersupplyclass package collector diff --git a/collector/pressure_linux.go b/collector/pressure_linux.go index 63b32d2a..659c4b37 100644 --- a/collector/pressure_linux.go +++ b/collector/pressure_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopressure -// +build !nopressure package collector diff --git a/collector/processes_linux.go b/collector/processes_linux.go index add7f0df..eff5cf06 100644 --- a/collector/processes_linux.go +++ b/collector/processes_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noprocesses -// +build !noprocesses package collector diff --git a/collector/processes_linux_test.go b/collector/processes_linux_test.go index f89ad12f..4b20ef8d 100644 --- a/collector/processes_linux_test.go +++ b/collector/processes_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noprocesses -// +build !noprocesses package collector diff --git a/collector/qdisc_linux.go b/collector/qdisc_linux.go index 93a78e3b..9062da12 100644 --- a/collector/qdisc_linux.go +++ b/collector/qdisc_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noqdisc -// +build !noqdisc package collector diff --git a/collector/rapl_linux.go b/collector/rapl_linux.go index 25d78f29..92c402d5 100644 --- a/collector/rapl_linux.go +++ b/collector/rapl_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !norapl -// +build !norapl package collector diff --git a/collector/runit.go b/collector/runit.go index 2813bfd0..9fabd3ff 100644 --- a/collector/runit.go +++ b/collector/runit.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !norunit -// +build !norunit package collector diff --git a/collector/schedstat_linux.go b/collector/schedstat_linux.go index 59b2bd8e..14882bda 100644 --- a/collector/schedstat_linux.go +++ b/collector/schedstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noshedstat -// +build !noshedstat package collector diff --git a/collector/selinux_linux.go b/collector/selinux_linux.go index f10b43fa..b0e7fac6 100644 --- a/collector/selinux_linux.go +++ b/collector/selinux_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noselinux -// +build !noselinux package collector diff --git a/collector/slabinfo_linux.go b/collector/slabinfo_linux.go index aa871548..48bbf2ab 100644 --- a/collector/slabinfo_linux.go +++ b/collector/slabinfo_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noslabinfo -// +build !noslabinfo package collector diff --git a/collector/sockstat_linux.go b/collector/sockstat_linux.go index 73a3bf68..0ec782bc 100644 --- a/collector/sockstat_linux.go +++ b/collector/sockstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosockstat -// +build !nosockstat package collector diff --git a/collector/softirqs_common.go b/collector/softirqs_common.go index 73a9f7be..2022a4b5 100644 --- a/collector/softirqs_common.go +++ b/collector/softirqs_common.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nosoftirqs -// +build linux,!nosoftirqs package collector diff --git a/collector/softirqs_linux.go b/collector/softirqs_linux.go index 702f34bb..0c647510 100644 --- a/collector/softirqs_linux.go +++ b/collector/softirqs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosoftirqs -// +build !nosoftirqs package collector diff --git a/collector/softnet_linux.go b/collector/softnet_linux.go index 296e5875..2644bbf9 100644 --- a/collector/softnet_linux.go +++ b/collector/softnet_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosoftnet -// +build !nosoftnet package collector diff --git a/collector/stat_linux.go b/collector/stat_linux.go index 0b99cc32..19939062 100644 --- a/collector/stat_linux.go +++ b/collector/stat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nostat -// +build !nostat package collector diff --git a/collector/supervisord.go b/collector/supervisord.go index ae5e2297..b3c4c3f6 100644 --- a/collector/supervisord.go +++ b/collector/supervisord.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosupervisord -// +build !nosupervisord package collector diff --git a/collector/swap_linux.go b/collector/swap_linux.go new file mode 100644 index 00000000..9a275e16 --- /dev/null +++ b/collector/swap_linux.go @@ -0,0 +1,129 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !noswap + +package collector + +import ( + "fmt" + "log/slog" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/procfs" +) + +const ( + swapSubsystem = "swap" +) + +var swapLabelNames = []string{"device", "swap_type"} + +type swapCollector struct { + fs procfs.FS + logger *slog.Logger +} + +func init() { + registerCollector("swap", defaultDisabled, NewSwapCollector) +} + +// NewSwapCollector returns a new Collector exposing swap device statistics. +func NewSwapCollector(logger *slog.Logger) (Collector, error) { + fs, err := procfs.NewFS(*procPath) + if err != nil { + return nil, fmt.Errorf("failed to open procfs: %w", err) + } + + return &swapCollector{ + fs: fs, + logger: logger, + }, nil +} + +type SwapsEntry struct { + Device string + Type string + Priority int + Size int + Used int +} + +func (c *swapCollector) getSwapInfo() ([]SwapsEntry, error) { + swaps, err := c.fs.Swaps() + if err != nil { + return nil, fmt.Errorf("couldn't get proc/swap information: %w", err) + } + + metrics := make([]SwapsEntry, 0, len(swaps)) + + for _, swap := range swaps { + metrics = append(metrics, SwapsEntry{Device: swap.Filename, Type: swap.Type, + Priority: swap.Priority, Size: swap.Size, Used: swap.Used}) + } + + return metrics, nil +} + +func (c *swapCollector) Update(ch chan<- prometheus.Metric) error { + swaps, err := c.getSwapInfo() + if err != nil { + return fmt.Errorf("couldn't get swap information: %w", err) + } + + for _, swap := range swaps { + swapLabelValues := []string{swap.Device, swap.Type} + + // Export swap size in bytes + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, swapSubsystem, "size_bytes"), + "Swap device size in bytes.", + []string{"device", "swap_type"}, nil, + ), + prometheus.GaugeValue, + // Size is provided in kbytes (not bytes), translate to bytes + // see https://github.com/torvalds/linux/blob/fd94619c43360eb44d28bd3ef326a4f85c600a07/mm/swapfile.c#L3079-L3080 + float64(swap.Size*1024), + swapLabelValues..., + ) + + // Export swap used in bytes + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, swapSubsystem, "used_bytes"), + "Swap device used in bytes.", + swapLabelNames, nil, + ), + prometheus.GaugeValue, + // Swap used is also provided in kbytes, translate to bytes + float64(swap.Used*1024), + swapLabelValues..., + ) + + // Export swap priority + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, swapSubsystem, "priority"), + "Swap device priority.", + swapLabelNames, nil, + ), + prometheus.GaugeValue, + float64(swap.Priority), + swapLabelValues..., + ) + + } + + return nil +} diff --git a/collector/swap_linux_test.go b/collector/swap_linux_test.go new file mode 100644 index 00000000..f4e49c50 --- /dev/null +++ b/collector/swap_linux_test.go @@ -0,0 +1,57 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !noswap + +package collector + +import ( + "io" + "log/slog" + "testing" +) + +func TestSwap(t *testing.T) { + *procPath = "fixtures/proc" + logger := slog.New(slog.NewTextHandler(io.Discard, nil)) + + collector, err := NewSwapCollector(logger) + if err != nil { + panic(err) + } + + swapInfo, err := collector.(*swapCollector).getSwapInfo() + if err != nil { + panic(err) + } + + if want, got := "/dev/zram0", swapInfo[0].Device; want != got { + t.Errorf("want swap device %s, got %s", want, got) + } + + if want, got := "partition", swapInfo[0].Type; want != got { + t.Errorf("want swap type %s, got %s", want, got) + } + + if want, got := 100, swapInfo[0].Priority; want != got { + t.Errorf("want swap priority %d, got %d", want, got) + } + + if want, got := 8388604, swapInfo[0].Size; want != got { + t.Errorf("want swap size %d, got %d", want, got) + } + + if want, got := 76, swapInfo[0].Used; want != got { + t.Errorf("want swpa used %d, got %d", want, got) + } +} diff --git a/collector/sysctl_bsd.go b/collector/sysctl_bsd.go index 2ab248ed..e3c8dc5c 100644 --- a/collector/sysctl_bsd.go +++ b/collector/sysctl_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (freebsd || dragonfly || openbsd || netbsd || darwin) && cgo -// +build freebsd dragonfly openbsd netbsd darwin -// +build cgo package collector diff --git a/collector/sysctl_linux.go b/collector/sysctl_linux.go index ac7022fb..0915b4e6 100644 --- a/collector/sysctl_linux.go +++ b/collector/sysctl_linux.go @@ -86,7 +86,7 @@ func (c *sysctlCollector) Update(ch chan<- prometheus.Metric) error { func (c *sysctlCollector) newMetrics(s *sysctl) ([]prometheus.Metric, error) { var ( - values interface{} + values any length int err error ) @@ -151,7 +151,7 @@ func (s *sysctl) metricName() string { return SanitizeMetricName(s.name) } -func (s *sysctl) newConstMetric(v interface{}) prometheus.Metric { +func (s *sysctl) newConstMetric(v any) prometheus.Metric { if s.numeric { return prometheus.MustNewConstMetric( prometheus.NewDesc( @@ -171,7 +171,7 @@ func (s *sysctl) newConstMetric(v interface{}) prometheus.Metric { ) } -func (s *sysctl) newIndexedMetrics(v interface{}) []prometheus.Metric { +func (s *sysctl) newIndexedMetrics(v any) []prometheus.Metric { desc := prometheus.NewDesc( prometheus.BuildFQName(namespace, "sysctl", s.metricName()), fmt.Sprintf("sysctl %s", s.name), @@ -195,7 +195,7 @@ func (s *sysctl) newIndexedMetrics(v interface{}) []prometheus.Metric { } } -func (s *sysctl) newMappedMetrics(v interface{}) ([]prometheus.Metric, error) { +func (s *sysctl) newMappedMetrics(v any) ([]prometheus.Metric, error) { switch values := v.(type) { case []int: metrics := make([]prometheus.Metric, len(values)) diff --git a/collector/sysctl_openbsd_amd64.go b/collector/sysctl_openbsd_amd64.go index 3d805109..2b298893 100644 --- a/collector/sysctl_openbsd_amd64.go +++ b/collector/sysctl_openbsd_amd64.go @@ -14,9 +14,10 @@ package collector import ( - "golang.org/x/sys/unix" "syscall" "unsafe" + + "golang.org/x/sys/unix" ) func int8ToString(a []int8) string { diff --git a/collector/systemd_linux.go b/collector/systemd_linux.go index b8378ee3..51b82c01 100644 --- a/collector/systemd_linux.go +++ b/collector/systemd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosystemd -// +build !nosystemd package collector diff --git a/collector/systemd_linux_test.go b/collector/systemd_linux_test.go index f12b6ef8..98668ed6 100644 --- a/collector/systemd_linux_test.go +++ b/collector/systemd_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosystemd -// +build !nosystemd package collector diff --git a/collector/tapestats_linux.go b/collector/tapestats_linux.go index c74c11d0..e195ce1c 100644 --- a/collector/tapestats_linux.go +++ b/collector/tapestats_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notapestats -// +build !notapestats package collector diff --git a/collector/tcpstat_linux.go b/collector/tcpstat_linux.go index 476a9b47..555e46e9 100644 --- a/collector/tcpstat_linux.go +++ b/collector/tcpstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notcpstat -// +build !notcpstat package collector diff --git a/collector/tcpstat_linux_test.go b/collector/tcpstat_linux_test.go index e1bd090a..8a56af9c 100644 --- a/collector/tcpstat_linux_test.go +++ b/collector/tcpstat_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notcpstat -// +build !notcpstat package collector @@ -22,14 +21,13 @@ import ( "syscall" "testing" - "github.com/josharian/native" "github.com/mdlayher/netlink" ) func Test_parseTCPStats(t *testing.T) { encode := func(m InetDiagMsg) []byte { var buf bytes.Buffer - err := binary.Write(&buf, native.Endian, m) + err := binary.Write(&buf, binary.NativeEndian, m) if err != nil { panic(err) } diff --git a/collector/textfile.go b/collector/textfile.go index 3e0cc459..17e4a60d 100644 --- a/collector/textfile.go +++ b/collector/textfile.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notextfile -// +build !notextfile package collector @@ -21,6 +20,7 @@ import ( "log/slog" "os" "path/filepath" + "slices" "sort" "strings" "time" @@ -29,6 +29,7 @@ import ( "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" "github.com/prometheus/common/expfmt" + "github.com/prometheus/common/model" ) var ( @@ -90,14 +91,7 @@ func convertMetricFamily(metricFamily *dto.MetricFamily, ch chan<- prometheus.Me } for k := range allLabelNames { - present := false - for _, name := range names { - if k == name { - present = true - break - } - } - if !present { + if !slices.Contains(names, k) { names = append(names, k) values = append(values, "") } @@ -299,7 +293,7 @@ func (c *textFileCollector) processFile(dir, name string, ch chan<- prometheus.M } defer f.Close() - var parser expfmt.TextParser + parser := expfmt.NewTextParser(model.LegacyValidation) families, err := parser.TextToMetricFamilies(f) if err != nil { return nil, nil, fmt.Errorf("failed to parse textfile data from %q: %w", path, err) diff --git a/collector/textfile_test.go b/collector/textfile_test.go index ece70b3a..2fb31fac 100644 --- a/collector/textfile_test.go +++ b/collector/textfile_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notextfile -// +build !notextfile package collector diff --git a/collector/thermal_darwin.go b/collector/thermal_darwin.go index 9a74fdbd..75be7c42 100644 --- a/collector/thermal_darwin.go +++ b/collector/thermal_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notherm -// +build !notherm package collector @@ -59,6 +58,7 @@ type thermCollector struct { cpuSchedulerLimit typedDesc cpuAvailableCPU typedDesc cpuSpeedLimit typedDesc + temperature typedDesc logger *slog.Logger } @@ -97,6 +97,15 @@ func NewThermCollector(logger *slog.Logger) (Collector, error) { ), valueType: prometheus.GaugeValue, }, + temperature: typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, thermal, "temperature_celsius"), + "Temperature of the thermal sensor in Celsius.", + []string{"sensor"}, + nil, + ), + valueType: prometheus.GaugeValue, + }, logger: logger, }, nil } @@ -115,7 +124,8 @@ func (c *thermCollector) Update(ch chan<- prometheus.Metric) error { if value, ok := cpuPowerStatus[(string(C.kIOPMCPUPowerLimitProcessorSpeedKey))]; ok { ch <- c.cpuSpeedLimit.mustNewConstMetric(float64(value) / 100.0) } - return nil + + return c.updateTemperatures(ch) } func fetchCPUPowerStatus() (map[string]int, error) { diff --git a/collector/thermal_darwin_amd64.go b/collector/thermal_darwin_amd64.go new file mode 100644 index 00000000..e49b65d2 --- /dev/null +++ b/collector/thermal_darwin_amd64.go @@ -0,0 +1,22 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !notherm && darwin && amd64 && cgo + +package collector + +import "github.com/prometheus/client_golang/prometheus" + +func (c *thermCollector) updateTemperatures(ch chan<- prometheus.Metric) error { + return nil +} diff --git a/collector/thermal_darwin_arm64.go b/collector/thermal_darwin_arm64.go new file mode 100644 index 00000000..5f9461a8 --- /dev/null +++ b/collector/thermal_darwin_arm64.go @@ -0,0 +1,154 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !notherm && darwin && arm64 + +package collector + +/* +#cgo LDFLAGS: -framework IOKit -framework CoreFoundation +#include +#include +#include + +typedef struct __IOHIDEventSystemClient * IOHIDEventSystemClientRef; +typedef struct __IOHIDServiceClient * IOHIDServiceClientRef; +typedef struct __IOHIDEvent * IOHIDEventRef; + +#define kIOHIDEventTypeTemperature 15 +#define IOHIDEventFieldBase(type) (type << 16) + +int32_t GetIOHIDEventFieldBase(int32_t type) { + return IOHIDEventFieldBase(type); +} + +// External functions +IOHIDEventSystemClientRef IOHIDEventSystemClientCreate(CFAllocatorRef allocator); +void IOHIDEventSystemClientSetMatching(IOHIDEventSystemClientRef client, CFDictionaryRef match); +CFArrayRef IOHIDEventSystemClientCopyServices(IOHIDEventSystemClientRef client); +IOHIDEventRef IOHIDServiceClientCopyEvent(IOHIDServiceClientRef service, int64_t type, int32_t options, int64_t timestamp); +double IOHIDEventGetFloatValue(IOHIDEventRef event, int32_t field); +CFTypeRef IOHIDServiceClientCopyProperty(IOHIDServiceClientRef service, CFStringRef key); +*/ +import "C" + +import ( + "unsafe" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/node_exporter/collector/utils" +) + +const absoluteZeroCelsius = -273.15 + +func (c *thermCollector) updateTemperatures(ch chan<- prometheus.Metric) error { + client := C.IOHIDEventSystemClientCreate(C.kCFAllocatorDefault) + if client == nil { + return nil + } + defer C.CFRelease(C.CFTypeRef(unsafe.Pointer(client))) + + page := 0xff00 + usage := 5 + + pageNum := C.CFNumberCreate(C.kCFAllocatorDefault, C.kCFNumberIntType, unsafe.Pointer(&page)) + defer C.CFRelease(C.CFTypeRef(pageNum)) + usageNum := C.CFNumberCreate(C.kCFAllocatorDefault, C.kCFNumberIntType, unsafe.Pointer(&usage)) + defer C.CFRelease(C.CFTypeRef(usageNum)) + + keyPage := C.CString("PrimaryUsagePage") + defer C.free(unsafe.Pointer(keyPage)) + keyUsage := C.CString("PrimaryUsage") + defer C.free(unsafe.Pointer(keyUsage)) + + cfKeyPage := C.CFStringCreateWithCString(C.kCFAllocatorDefault, keyPage, C.kCFStringEncodingUTF8) + defer C.CFRelease(C.CFTypeRef(cfKeyPage)) + cfKeyUsage := C.CFStringCreateWithCString(C.kCFAllocatorDefault, keyUsage, C.kCFStringEncodingUTF8) + defer C.CFRelease(C.CFTypeRef(cfKeyUsage)) + + keys := []C.CFTypeRef{C.CFTypeRef(cfKeyPage), C.CFTypeRef(cfKeyUsage)} + values := []C.CFTypeRef{C.CFTypeRef(pageNum), C.CFTypeRef(usageNum)} + + matching := C.CFDictionaryCreate(C.kCFAllocatorDefault, + (*unsafe.Pointer)(unsafe.Pointer(&keys[0])), + (*unsafe.Pointer)(unsafe.Pointer(&values[0])), + 2, + &C.kCFTypeDictionaryKeyCallBacks, + &C.kCFTypeDictionaryValueCallBacks) + defer C.CFRelease(C.CFTypeRef(matching)) + + C.IOHIDEventSystemClientSetMatching(client, matching) + + services := C.IOHIDEventSystemClientCopyServices(client) + if services == 0 { + return nil + } + defer C.CFRelease(C.CFTypeRef(services)) + + count := C.CFArrayGetCount(services) + + prodKey := C.CString("Product") + defer C.free(unsafe.Pointer(prodKey)) + cfProdKey := C.CFStringCreateWithCString(C.kCFAllocatorDefault, prodKey, C.kCFStringEncodingUTF8) + defer C.CFRelease(C.CFTypeRef(cfProdKey)) + + for i := 0; i < int(count); i++ { + service := C.CFArrayGetValueAtIndex(services, C.CFIndex(i)) + + event := C.IOHIDServiceClientCopyEvent((C.IOHIDServiceClientRef)(service), C.kIOHIDEventTypeTemperature, 0, 0) + if event == nil { + continue + } + + temp := C.IOHIDEventGetFloatValue(event, C.GetIOHIDEventFieldBase(C.kIOHIDEventTypeTemperature)) + C.CFRelease(C.CFTypeRef(unsafe.Pointer(event))) + + // Observed invalid values on some Apple Silicon devices are around -9200. + // Filter out physically impossible temperatures. + if temp < absoluteZeroCelsius { + continue + } + + nameRef := C.IOHIDServiceClientCopyProperty((C.IOHIDServiceClientRef)(service), cfProdKey) + name := "Unknown" + if nameRef != 0 { + name = cfStringToString((C.CFStringRef)(nameRef)) + C.CFRelease(C.CFTypeRef(nameRef)) + } + + ch <- c.temperature.mustNewConstMetric(float64(temp), name) + } + return nil +} + +func cfStringToString(s C.CFStringRef) string { + p := C.CFStringGetCStringPtr(s, C.kCFStringEncodingUTF8) + if p != nil { + return C.GoString(p) + } + length := C.CFStringGetLength(s) + if length <= 0 { + return "" + } + maxBufLen := C.CFStringGetMaximumSizeForEncoding(length, C.kCFStringEncodingUTF8) + if maxBufLen <= 0 { + return "" + } + if maxBufLen > 4096 { + maxBufLen = 4096 + } + buf := make([]byte, maxBufLen) + var usedBufLen C.CFIndex + _ = C.CFStringGetBytes(s, C.CFRange{0, length}, C.kCFStringEncodingUTF8, C.UInt8(0), C.false, (*C.UInt8)(&buf[0]), maxBufLen, &usedBufLen) + return utils.SafeBytesToString(buf[:usedBufLen]) +} diff --git a/collector/thermal_zone_linux.go b/collector/thermal_zone_linux.go index 95db2723..a50278e9 100644 --- a/collector/thermal_zone_linux.go +++ b/collector/thermal_zone_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nothermalzone -// +build !nothermalzone package collector diff --git a/collector/time.go b/collector/time.go index a4a81687..1851ba1a 100644 --- a/collector/time.go +++ b/collector/time.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notime -// +build !notime package collector diff --git a/collector/time_linux.go b/collector/time_linux.go index 212ba228..afd7208e 100644 --- a/collector/time_linux.go +++ b/collector/time_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notime -// +build !notime package collector diff --git a/collector/time_other.go b/collector/time_other.go index 8227435b..5658fe48 100644 --- a/collector/time_other.go +++ b/collector/time_other.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !linux && !notime -// +build !linux,!notime package collector diff --git a/collector/timex.go b/collector/timex.go index eb21f7c3..6494726e 100644 --- a/collector/timex.go +++ b/collector/timex.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !notimex -// +build linux,!notimex package collector diff --git a/collector/udp_queues_linux.go b/collector/udp_queues_linux.go index 2923936e..0ebd9300 100644 --- a/collector/udp_queues_linux.go +++ b/collector/udp_queues_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noudp_queues -// +build !noudp_queues package collector diff --git a/collector/uname.go b/collector/uname.go index 32ca08c4..737a5a87 100644 --- a/collector/uname.go +++ b/collector/uname.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || freebsd || openbsd || netbsd || linux || aix) && !nouname -// +build darwin freebsd openbsd netbsd linux aix -// +build !nouname package collector diff --git a/collector/uname_bsd.go b/collector/uname_bsd.go index fa565a1c..07f7aca0 100644 --- a/collector/uname_bsd.go +++ b/collector/uname_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || freebsd || openbsd || netbsd || aix) && !nouname -// +build darwin freebsd openbsd netbsd aix -// +build !nouname package collector diff --git a/collector/uname_linux.go b/collector/uname_linux.go index 4f8bac33..d3c4b5ae 100644 --- a/collector/uname_linux.go +++ b/collector/uname_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nouname -// +build !nouname package collector diff --git a/collector/vmstat_linux.go b/collector/vmstat_linux.go index e31be0f7..987aebe9 100644 --- a/collector/vmstat_linux.go +++ b/collector/vmstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !novmstat -// +build !novmstat package collector diff --git a/collector/watchdog.go b/collector/watchdog.go index 77fb792e..d3e041d5 100644 --- a/collector/watchdog.go +++ b/collector/watchdog.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nowatchdog -// +build linux,!nowatchdog package collector diff --git a/collector/watchdog_test.go b/collector/watchdog_test.go index baf08995..4fbcff7d 100644 --- a/collector/watchdog_test.go +++ b/collector/watchdog_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nowatchdog -// +build linux,!nowatchdog package collector diff --git a/collector/wifi_linux.go b/collector/wifi_linux.go index c84cdd71..0d2a6b08 100644 --- a/collector/wifi_linux.go +++ b/collector/wifi_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nowifi -// +build !nowifi package collector @@ -33,16 +32,18 @@ type wifiCollector struct { interfaceFrequencyHertz *prometheus.Desc stationInfo *prometheus.Desc - stationConnectedSecondsTotal *prometheus.Desc - stationInactiveSeconds *prometheus.Desc - stationReceiveBitsPerSecond *prometheus.Desc - stationTransmitBitsPerSecond *prometheus.Desc - stationReceiveBytesTotal *prometheus.Desc - stationTransmitBytesTotal *prometheus.Desc - stationSignalDBM *prometheus.Desc - stationTransmitRetriesTotal *prometheus.Desc - stationTransmitFailedTotal *prometheus.Desc - stationBeaconLossTotal *prometheus.Desc + stationConnectedSecondsTotal *prometheus.Desc + stationInactiveSeconds *prometheus.Desc + stationReceiveBitsPerSecond *prometheus.Desc + stationTransmitBitsPerSecond *prometheus.Desc + stationReceiveBytesTotal *prometheus.Desc + stationTransmitBytesTotal *prometheus.Desc + stationSignalDBM *prometheus.Desc + stationTransmitRetriesTotal *prometheus.Desc + stationTransmitFailedTotal *prometheus.Desc + stationBeaconLossTotal *prometheus.Desc + stationTransmittedPacketsTotal *prometheus.Desc + stationReceivedPacketsTotal *prometheus.Desc logger *slog.Logger } @@ -159,6 +160,20 @@ func NewWifiCollector(logger *slog.Logger) (Collector, error) { labels, nil, ), + + stationTransmittedPacketsTotal: prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "station_transmitted_packets_total"), + "The total number of packets transmitted by a station.", + labels, + nil, + ), + + stationReceivedPacketsTotal: prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "station_received_packets_total"), + "The total number of packets received by a station.", + labels, + nil, + ), logger: logger, }, nil } @@ -325,6 +340,22 @@ func (c *wifiCollector) updateStationStats(ch chan<- prometheus.Metric, device s device, info.HardwareAddr.String(), ) + + ch <- prometheus.MustNewConstMetric( + c.stationTransmittedPacketsTotal, + prometheus.CounterValue, + float64(info.TransmittedPackets), + device, + info.HardwareAddr.String(), + ) + + ch <- prometheus.MustNewConstMetric( + c.stationReceivedPacketsTotal, + prometheus.CounterValue, + float64(info.ReceivedPackets), + device, + info.HardwareAddr.String(), + ) } func mHzToHz(mHz int) float64 { @@ -363,7 +394,7 @@ type mockWifiStater struct { fixtures string } -func (s *mockWifiStater) unmarshalJSONFile(filename string, v interface{}) error { +func (s *mockWifiStater) unmarshalJSONFile(filename string, v any) error { b, err := os.ReadFile(filepath.Join(s.fixtures, filename)) if err != nil { return err diff --git a/collector/xfrm.go b/collector/xfrm.go index d96ee8aa..f69d362c 100644 --- a/collector/xfrm.go +++ b/collector/xfrm.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noxfrm -// +build !noxfrm package collector diff --git a/collector/xfrm_test.go b/collector/xfrm_test.go index e009fc40..9598e113 100644 --- a/collector/xfrm_test.go +++ b/collector/xfrm_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noxfrm -// +build !noxfrm package collector diff --git a/collector/xfs_linux.go b/collector/xfs_linux.go index 3eac1d0e..b5157849 100644 --- a/collector/xfs_linux.go +++ b/collector/xfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noxfs -// +build !noxfs package collector diff --git a/collector/zfs_common.go b/collector/zfs_common.go index 7934ec5a..f939ae99 100644 --- a/collector/zfs_common.go +++ b/collector/zfs_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nozfs && (freebsd || linux || solaris) -// +build !nozfs -// +build freebsd linux solaris package collector diff --git a/collector/zfs_freebsd.go b/collector/zfs_freebsd.go index d888c3a7..9354c96d 100644 --- a/collector/zfs_freebsd.go +++ b/collector/zfs_freebsd.go @@ -12,13 +12,13 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector import ( - "github.com/prometheus/client_golang/prometheus" "log/slog" + + "github.com/prometheus/client_golang/prometheus" ) type zfsCollector struct { diff --git a/collector/zfs_linux.go b/collector/zfs_linux.go index ff544a79..9e968f73 100644 --- a/collector/zfs_linux.go +++ b/collector/zfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector @@ -124,7 +123,7 @@ func (c *zfsCollector) updateZfsStats(subsystem string, ch chan<- prometheus.Met } defer file.Close() - return c.parseProcfsFile(file, c.linuxPathMap[subsystem], func(s zfsSysctl, v interface{}) { + return c.parseProcfsFile(file, c.linuxPathMap[subsystem], func(s zfsSysctl, v any) { var valueAsFloat64 float64 switch value := v.(type) { case int64: @@ -212,7 +211,7 @@ func (c *zfsCollector) updatePoolStats(ch chan<- prometheus.Metric) error { return nil } -func (c *zfsCollector) parseProcfsFile(reader io.Reader, fmtExt string, handler func(zfsSysctl, interface{})) error { +func (c *zfsCollector) parseProcfsFile(reader io.Reader, fmtExt string, handler func(zfsSysctl, any)) error { scanner := bufio.NewScanner(reader) parseLine := false diff --git a/collector/zfs_linux_test.go b/collector/zfs_linux_test.go index 7b019e8c..182a3240 100644 --- a/collector/zfs_linux_test.go +++ b/collector/zfs_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector @@ -35,7 +34,7 @@ func TestArcstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(arcstatsFile, "arcstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(arcstatsFile, "arcstats", func(s zfsSysctl, v any) { if s == zfsSysctl("kstat.zfs.misc.arcstats.hits") { if v.(uint64) != 8772612 { @@ -72,7 +71,7 @@ func TestZfetchstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(zfetchstatsFile, "zfetchstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(zfetchstatsFile, "zfetchstats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.zfetchstats.hits") { return @@ -108,7 +107,7 @@ func TestZilParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(zilFile, "zil", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(zilFile, "zil", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.zil.zil_commit_count") { return @@ -144,7 +143,7 @@ func TestVdevCacheStatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(vdevCacheStatsFile, "vdev_cache_stats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(vdevCacheStatsFile, "vdev_cache_stats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.vdev_cache_stats.delegations") { return @@ -180,7 +179,7 @@ func TestXuioStatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(xuioStatsFile, "xuio_stats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(xuioStatsFile, "xuio_stats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.xuio_stats.onloan_read_buf") { return @@ -216,7 +215,7 @@ func TestFmParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(fmFile, "fm", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(fmFile, "fm", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.fm.erpt-dropped") { return @@ -252,7 +251,7 @@ func TestDmuTxParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(dmuTxFile, "dmu_tx", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(dmuTxFile, "dmu_tx", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.dmu_tx.dmu_tx_assigned") { return @@ -417,7 +416,7 @@ func TestAbdstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(abdstatsFile, "abdstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(abdstatsFile, "abdstats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.abdstats.linear_data_size") { return @@ -453,7 +452,7 @@ func TestDbufstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(dbufstatsFile, "dbufstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(dbufstatsFile, "dbufstats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.dbufstats.hash_hits") { return @@ -489,7 +488,7 @@ func TestDnodestatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(dnodestatsFile, "dnodestats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(dnodestatsFile, "dnodestats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.dnodestats.dnode_hold_alloc_hits") { return @@ -525,7 +524,7 @@ func TestVdevMirrorstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(vdevMirrorStatsFile, "vdev_mirror_stats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(vdevMirrorStatsFile, "vdev_mirror_stats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.vdev_mirror_stats.preferred_not_found") { return diff --git a/collector/zfs_solaris.go b/collector/zfs_solaris.go index 1f10ee01..0f858ad9 100644 --- a/collector/zfs_solaris.go +++ b/collector/zfs_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector diff --git a/docs/node-mixin/alerts/alerts.libsonnet b/docs/node-mixin/alerts/alerts.libsonnet index 61d9dd2d..29c934f5 100644 --- a/docs/node-mixin/alerts/alerts.libsonnet +++ b/docs/node-mixin/alerts/alerts.libsonnet @@ -424,14 +424,14 @@ { alert: 'NodeBondingDegraded', expr: ||| - (node_bonding_slaves - node_bonding_active) != 0 + (node_bonding_slaves{%(nodeExporterSelector)s} - node_bonding_active{%(nodeExporterSelector)s}) != 0 ||| % $._config, 'for': '5m', labels: { severity: 'warning', }, annotations: { - summary: 'Bonding interface is degraded', + summary: 'Bonding interface is degraded.', description: 'Bonding interface {{ $labels.master }} on {{ $labels.instance }} is in degraded state due to one or more slave failures.', }, }, diff --git a/docs/node-mixin/config.libsonnet b/docs/node-mixin/config.libsonnet index 1a4b3caa..ea31b595 100644 --- a/docs/node-mixin/config.libsonnet +++ b/docs/node-mixin/config.libsonnet @@ -30,6 +30,13 @@ // them here, e.g. 'device!="tmpfs"'. diskDeviceSelector: 'device!=""', + // Select the devices for physical network related querier. If left + // empty the lo device and virtual device (starting with veth) are ignored. + // If you have bonded interfaces for example you might want to ignore those + // interfaces as well to avoid aggregating bandwith multiple times (once at + // the physical layer and on the bond layer). E.g. // device!~"lo|veth.+|bond.+"'. + netDeviceSelector: 'device!~"lo|veth.+"', + // Some of the alerts are meant to fire if a critical failure of a // node is imminent (e.g. the disk is about to run full). In a // true “cloud native†setup, failures of a single node should be diff --git a/docs/node-mixin/dashboards/use.libsonnet b/docs/node-mixin/dashboards/use.libsonnet index cfdaf416..9c219298 100644 --- a/docs/node-mixin/dashboards/use.libsonnet +++ b/docs/node-mixin/dashboards/use.libsonnet @@ -112,7 +112,7 @@ local diskSpaceUtilisation = ) + (if $._config.showMultiCluster then variable.query.generalOptions.showOnDashboard.withLabelAndValue() else variable.query.generalOptions.showOnDashboard.withNothing()) + variable.query.refresh.onTime() - + variable.query.selectionOptions.withIncludeAll(false) + + variable.query.selectionOptions.withIncludeAll(true, '.*') + variable.query.withSort(asc=true), grafanaDashboards+:: { @@ -133,7 +133,7 @@ local diskSpaceUtilisation = + variable.query.withDatasourceFromVariable(datasource) + variable.query.queryTypes.withLabelValues( 'instance', - 'node_exporter_build_info{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"}' % $._config, + 'node_exporter_build_info{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"}' % $._config, ) + variable.query.refresh.onTime() + variable.query.withSort(asc=true), @@ -142,29 +142,29 @@ local diskSpaceUtilisation = grafana.util.grid.makeGrid([ row.new('CPU') + row.withPanels([ - CPUUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), - CPUSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Saturation')]), + CPUUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), + CPUSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Saturation')]), ]), row.new('Memory') + row.withPanels([ - memoryUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), - memorySaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Major page Faults')]), + memoryUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), + memorySaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Major page Faults')]), ]), row.new('Network') + row.withPanels([ networkUtilisation + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), - prometheus.new('$datasource', 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), + prometheus.new('$datasource', 'instance:node_network_receive_bytes_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), + prometheus.new('$datasource', 'instance:node_network_transmit_bytes_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), ]), networkSaturation + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), - prometheus.new('$datasource', 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), + prometheus.new('$datasource', 'instance:node_network_receive_drop_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), + prometheus.new('$datasource', 'instance:node_network_transmit_drop_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), ]), ]), row.new('Disk IO') + row.withPanels([ - diskIOUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), - diskIOSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), + diskIOUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), + diskIOSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), ]), ], panelWidth=12, panelHeight=7) + grafana.util.grid.makeGrid([ @@ -176,9 +176,9 @@ local diskSpaceUtilisation = ||| sort_desc(1 - ( - max without (mountpoint, fstype) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s="$cluster"}) + max without (mountpoint, fstype) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s=~"$cluster"}) / - max without (mountpoint, fstype) (node_filesystem_size_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s="$cluster"}) + max without (mountpoint, fstype) (node_filesystem_size_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s=~"$cluster"}) ) != 0 ) ||| % $._config @@ -210,11 +210,11 @@ local diskSpaceUtilisation = '$datasource', ||| (( - instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} + instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} * - instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} + instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} ) != 0 ) - / scalar(sum(instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + / scalar(sum(instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), ]), @@ -223,8 +223,8 @@ local diskSpaceUtilisation = '$datasource', ||| ( - instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ) != 0 ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), @@ -237,8 +237,8 @@ local diskSpaceUtilisation = '$datasource', ||| ( - instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ) != 0 ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), @@ -246,7 +246,7 @@ local diskSpaceUtilisation = memorySaturation + tsQueryOptions.withTargets([ prometheus.new( '$datasource', - 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"}' % $._config + 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"}' % $._config ) + prometheus.withLegendFormat('{{ instance }}'), ]), ]), @@ -255,21 +255,21 @@ local diskSpaceUtilisation = networkUtilisation + tsQueryOptions.withTargets([ prometheus.new( '$datasource', - 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Receive'), prometheus.new( '$datasource', - 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Transmit'), ]), networkSaturation + tsQueryOptions.withTargets([ prometheus.new( '$datasource', - 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Receive'), prometheus.new( '$datasource', - 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Transmit'), ]), ]), @@ -279,16 +279,16 @@ local diskSpaceUtilisation = prometheus.new( '$datasource', ||| - instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }} {{device}}'), ]), diskIOSaturation + tsQueryOptions.withTargets([prometheus.new( '$datasource', ||| - instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }} {{device}}')]), ]), @@ -302,12 +302,12 @@ local diskSpaceUtilisation = ||| sum without (device) ( max without (fstype, mountpoint) (( - node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s="$cluster"} + node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s=~"$cluster"} - - node_filesystem_avail_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s="$cluster"} + node_filesystem_avail_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s=~"$cluster"} ) != 0) ) - / scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s="$cluster"}))) + / scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s=~"$cluster"}))) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), ]), diff --git a/docs/node-mixin/lib/prom-mixin.libsonnet b/docs/node-mixin/lib/prom-mixin.libsonnet index f18c273c..980baf5b 100644 --- a/docs/node-mixin/lib/prom-mixin.libsonnet +++ b/docs/node-mixin/lib/prom-mixin.libsonnet @@ -31,7 +31,8 @@ local tableTransformation = table.queryOptions.transformation; + variable.query.withDatasourceFromVariable(prometheusDatasourceVariable) + (if config.showMultiCluster then variable.query.generalOptions.showOnDashboard.withLabelAndValue() else variable.query.generalOptions.showOnDashboard.withNothing()) + variable.query.refresh.onTime() - + variable.query.generalOptions.withLabel('Cluster'), + + variable.query.generalOptions.withLabel('Cluster') + + variable.query.selectionOptions.withIncludeAll(true, '.*'), local clusterVariable = if platform == 'Darwin' then @@ -58,13 +59,13 @@ local tableTransformation = table.queryOptions.transformation; instanceVariablePrototype + variable.query.queryTypes.withLabelValues( 'instance', - 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster", sysname="Darwin"}' % config, + 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster", sysname="Darwin"}' % config, ) else instanceVariablePrototype + variable.query.queryTypes.withLabelValues( 'instance', - 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster", sysname!="Darwin"}' % config, + 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster", sysname!="Darwin"}' % config, ), local idleCPU = @@ -82,9 +83,9 @@ local tableTransformation = table.queryOptions.transformation; '$datasource', ||| ( - (1 - sum without (mode) (rate(node_cpu_seconds_total{%(nodeExporterSelector)s, mode=~"idle|iowait|steal", instance="$instance", %(clusterLabel)s="$cluster"}[$__rate_interval]))) + (1 - sum without (mode) (rate(node_cpu_seconds_total{%(nodeExporterSelector)s, mode=~"idle|iowait|steal", instance="$instance", %(clusterLabel)s=~"$cluster"}[$__rate_interval]))) / ignoring(cpu) group_left - count without (cpu, mode) (node_cpu_seconds_total{%(nodeExporterSelector)s, mode="idle", instance="$instance", %(clusterLabel)s="$cluster"}) + count without (cpu, mode) (node_cpu_seconds_total{%(nodeExporterSelector)s, mode="idle", instance="$instance", %(clusterLabel)s=~"$cluster"}) ) ||| % config, ) @@ -101,10 +102,10 @@ local tableTransformation = table.queryOptions.transformation; + tsCustom.withShowPoints('never') + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'node_load1{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('1m load average'), - prometheus.new('$datasource', 'node_load5{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('5m load average'), - prometheus.new('$datasource', 'node_load15{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('15m load average'), - prometheus.new('$datasource', 'count(node_cpu_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", mode="idle"})' % config) + prometheus.withLegendFormat('logical cores'), + prometheus.new('$datasource', 'node_load1{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('1m load average'), + prometheus.new('$datasource', 'node_load5{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('5m load average'), + prometheus.new('$datasource', 'node_load15{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('15m load average'), + prometheus.new('$datasource', 'count(node_cpu_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", mode="idle"})' % config) + prometheus.withLegendFormat('logical cores'), ]), local memoryGraphPanelPrototype = @@ -125,34 +126,34 @@ local tableTransformation = table.queryOptions.transformation; '$datasource', ||| ( - node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - - node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - - node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - - node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config, ) + prometheus.withLegendFormat('memory used'), - prometheus.new('$datasource', 'node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('memory buffers'), - prometheus.new('$datasource', 'node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('memory cached'), - prometheus.new('$datasource', 'node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('memory free'), + prometheus.new('$datasource', 'node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('memory buffers'), + prometheus.new('$datasource', 'node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('memory cached'), + prometheus.new('$datasource', 'node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('memory free'), ]) else if platform == 'Darwin' then // not useful to stack memoryGraphPanelPrototype + tsCustom.stacking.withMode('none') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), + prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), prometheus.new( '$datasource', ||| ( - node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} - - node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + - node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + - node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - + node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} + + node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} + + node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config ) + prometheus.withLegendFormat( @@ -162,28 +163,28 @@ local tableTransformation = table.queryOptions.transformation; '$datasource', ||| ( - node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} - - node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - + node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config ) + prometheus.withLegendFormat( 'App Memory' ), - prometheus.new('$datasource', 'node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Wired Memory'), - prometheus.new('$datasource', 'node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Compressed'), + prometheus.new('$datasource', 'node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Wired Memory'), + prometheus.new('$datasource', 'node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Compressed'), ]) else if platform == 'AIX' then memoryGraphPanelPrototype + tsCustom.stacking.withMode('none') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), + prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), prometheus.new( '$datasource', ||| ( - node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} - - node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - + node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config ) + prometheus.withLegendFormat('Memory Used'), @@ -212,8 +213,8 @@ local tableTransformation = table.queryOptions.transformation; ||| 100 - ( - avg(node_memory_MemAvailable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) / - avg(node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_MemAvailable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) / + avg(node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) * 100 ) ||| % config, @@ -228,12 +229,12 @@ local tableTransformation = table.queryOptions.transformation; ||| ( ( - avg(node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) - - avg(node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + - avg(node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + - avg(node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) - + avg(node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) + + avg(node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) + + avg(node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) ) / - avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) ) * 100 @@ -249,8 +250,8 @@ local tableTransformation = table.queryOptions.transformation; ||| 100 - ( - avg(node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) / - avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) / + avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) * 100 ) ||| % config @@ -267,13 +268,13 @@ local tableTransformation = table.queryOptions.transformation; + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ // TODO: Does it make sense to have those three in the same panel? - prometheus.new('$datasource', 'rate(node_disk_read_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.new('$datasource', 'rate(node_disk_read_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.withLegendFormat('{{device}} read') + prometheus.withIntervalFactor(1), - prometheus.new('$datasource', 'rate(node_disk_written_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.new('$datasource', 'rate(node_disk_written_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.withLegendFormat('{{device}} written') + prometheus.withIntervalFactor(1), - prometheus.new('$datasource', 'rate(node_disk_io_time_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.new('$datasource', 'rate(node_disk_io_time_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.withLegendFormat('{{device}} io time') + prometheus.withIntervalFactor(1), ]) @@ -303,7 +304,7 @@ local tableTransformation = table.queryOptions.transformation; prometheus.new( '$datasource', ||| - max by (mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) + max by (mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) ||| % config ) + prometheus.withLegendFormat('') @@ -312,7 +313,7 @@ local tableTransformation = table.queryOptions.transformation; prometheus.new( '$datasource', ||| - max by (mountpoint) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) + max by (mountpoint) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) ||| % config ) + prometheus.withLegendFormat('') @@ -431,7 +432,7 @@ local tableTransformation = table.queryOptions.transformation; + tsCustom.withShowPoints('never') + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'rate(node_network_receive_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.new('$datasource', 'rate(node_network_receive_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.withLegendFormat('{{device}}') + prometheus.withIntervalFactor(1), ]), @@ -445,7 +446,7 @@ local tableTransformation = table.queryOptions.transformation; + tsCustom.withFillOpacity(0) + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'rate(node_network_transmit_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.new('$datasource', 'rate(node_network_transmit_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.withLegendFormat('{{device}}') + prometheus.withIntervalFactor(1), ]), diff --git a/docs/node-mixin/rules/rules.libsonnet b/docs/node-mixin/rules/rules.libsonnet index 9c8eb90d..7c2552f8 100644 --- a/docs/node-mixin/rules/rules.libsonnet +++ b/docs/node-mixin/rules/rules.libsonnet @@ -112,6 +112,39 @@ ) ||| % $._config, }, + { + record: 'instance:node_network_receive_bytes_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_receive_bytes_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, + { + record: 'instance:node_network_transmit_bytes_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_transmit_bytes_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, + // TODO: Find out if those drops ever happen on modern switched networks. + { + record: 'instance:node_network_receive_drop_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_receive_drop_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, + { + record: 'instance:node_network_transmit_drop_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_transmit_drop_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, ], }, ], diff --git a/end-to-end-test.sh b/end-to-end-test.sh index 0bd988ef..bd967956 100755 --- a/end-to-end-test.sh +++ b/end-to-end-test.sh @@ -37,6 +37,7 @@ supported_collectors() { enabled_collectors=$(cat << COLLECTORS arp bcache + bcachefs bonding btrfs buddyinfo @@ -127,10 +128,13 @@ case "${arch}" in ;; esac -keep=0; update=0; verbose=0 -while getopts 'hkuv' opt +extra_flags=""; keep=0; update=0; verbose=0 +while getopts 'e:hkuv' opt do case "$opt" in + e) + extra_flags="${OPTARG}" + ;; k) keep=1 ;; @@ -158,6 +162,7 @@ then fi collector_flags=$(cat << FLAGS + ${extra_flags} ${cpu_info_collector} --collector.arp.device-exclude=nope --collector.bcache.priorityStats @@ -365,6 +370,33 @@ non_deterministic_metrics=$(cat << METRICS node_network_receive_bytes_total node_network_receive_multicast_total node_network_transmit_multicast_total + node_zfs_abdstats_linear_count_total + node_zfs_abdstats_linear_data_bytes + node_zfs_abdstats_scatter_chunk_waste_bytes + node_zfs_abdstats_scatter_count_total + node_zfs_abdstats_scatter_data_bytes + node_zfs_abdstats_struct_bytes + node_zfs_arcstats_anon_bytes + node_zfs_arcstats_c_bytes + node_zfs_arcstats_c_max_bytes + node_zfs_arcstats_data_bytes + node_zfs_arcstats_demand_data_hits_total + node_zfs_arcstats_demand_data_misses_total + node_zfs_arcstats_demand_metadata_hits_total + node_zfs_arcstats_demand_metadata_misses_total + node_zfs_arcstats_hdr_bytes + node_zfs_arcstats_hits_total + node_zfs_arcstats_meta_bytes + node_zfs_arcstats_mfu_bytes + node_zfs_arcstats_mfu_ghost_hits_total + node_zfs_arcstats_misses_total + node_zfs_arcstats_mru_bytes + node_zfs_arcstats_mru_ghost_bytes + node_zfs_arcstats_other_bytes + node_zfs_arcstats_pd_bytes + node_zfs_arcstats_size_bytes + node_zfs_zfetchstats_hits_total + node_zfs_zfetchstats_misses_total METRICS ) diff --git a/go.mod b/go.mod index deba372b..055a15ab 100644 --- a/go.mod +++ b/go.mod @@ -1,49 +1,50 @@ module github.com/prometheus/node_exporter -go 1.24.2 +go 1.25.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 - github.com/beevik/ntp v1.4.3 - github.com/coreos/go-systemd/v22 v22.5.0 - github.com/dennwc/btrfs v0.0.0-20240418142341-0167142bde7a + github.com/beevik/ntp v1.5.0 + github.com/coreos/go-systemd/v22 v22.7.0 + github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 github.com/ema/qdisc v1.0.0 - github.com/godbus/dbus/v5 v5.1.0 + github.com/godbus/dbus/v5 v5.2.2 github.com/hashicorp/go-envparse v0.1.0 github.com/hodgesds/perf-utils v0.7.0 github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 - github.com/josharian/native v1.1.0 - github.com/jsimonetti/rtnetlink/v2 v2.0.5 + github.com/jsimonetti/rtnetlink/v2 v2.2.0 github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 - github.com/mdlayher/ethtool v0.4.0 - github.com/mdlayher/netlink v1.7.2 - github.com/mdlayher/wifi v0.5.0 - github.com/opencontainers/selinux v1.11.1 + github.com/mdlayher/ethtool v0.5.1 + github.com/mdlayher/netlink v1.9.0 + github.com/mdlayher/wifi v0.7.2 + github.com/opencontainers/selinux v1.13.1 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 - github.com/prometheus/client_golang v1.21.1 + github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.64.0 - github.com/prometheus/exporter-toolkit v0.14.0 - github.com/prometheus/procfs v0.17.0 - github.com/safchain/ethtool v0.6.1 - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 - golang.org/x/sys v0.33.0 + github.com/prometheus/common v0.67.5 + github.com/prometheus/exporter-toolkit v0.15.1 + github.com/prometheus/procfs v0.20.1 + github.com/safchain/ethtool v0.7.0 + golang.org/x/sys v0.41.0 howett.net/plist v1.0.1 ) require ( - github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect + cyphar.com/go-pathrs v0.2.2 // indirect + github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/dennwc/ioctl v1.0.0 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/google/go-cmp v0.7.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect - github.com/klauspost/compress v1.17.11 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mdlayher/genetlink v1.3.2 // indirect - github.com/mdlayher/socket v0.4.1 // indirect + github.com/mdlayher/socket v0.5.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect @@ -51,11 +52,12 @@ require ( github.com/xhit/go-str2duration/v2 v2.1.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.38.0 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/text v0.25.0 // indirect - google.golang.org/protobuf v1.36.6 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/net v0.50.0 // indirect + golang.org/x/oauth2 v0.34.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/text v0.34.0 // indirect + golang.org/x/time v0.14.0 // indirect + google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/go.sum b/go.sum index c612c15d..480f8d17 100644 --- a/go.sum +++ b/go.sum @@ -1,31 +1,38 @@ +cyphar.com/go-pathrs v0.2.2 h1:y9w7hxbkr3zEL78Fjzeg4HEhs2xNy+fbwHiHGJJY2Xo= +cyphar.com/go-pathrs v0.2.2/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/beevik/ntp v1.4.3 h1:PlbTvE5NNy4QHmA4Mg57n7mcFTmr1W1j3gcK7L1lqho= -github.com/beevik/ntp v1.4.3/go.mod h1:Unr8Zg+2dRn7d8bHFuehIMSvvUYssHMxW3Q5Nx4RW5Q= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= +github.com/beevik/ntp v1.5.0 h1:y+uj/JjNwlY2JahivxYvtmv4ehfi3h74fAuABB9ZSM4= +github.com/beevik/ntp v1.5.0/go.mod h1:mJEhBrwT76w9D+IfOEGvuzyuudiW9E52U2BaTrMOYow= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= -github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cilium/ebpf v0.20.0 h1:atwWj9d3NffHyPZzVlx3hmw1on5CLe9eljR8VuHTwhM= +github.com/cilium/ebpf v0.20.0/go.mod h1:pzLjFymM+uZPLk/IXZUL63xdx5VXEo+enTzxkZXdycw= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dennwc/btrfs v0.0.0-20240418142341-0167142bde7a h1:KfFsGLJFVdCXlySUkV2FmxNtmiztpJb6tV+XYBmmv8E= -github.com/dennwc/btrfs v0.0.0-20240418142341-0167142bde7a/go.mod h1:MYsOV9Dgsec3FFSOjywi0QK5r6TeBbdWxdrMGtiYXHA= +github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 h1:fV+JlCY0cCJh3l0jfE7iB3ZmrdfJSgfcjdrCQhPokGg= +github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6/go.mod h1:MYsOV9Dgsec3FFSOjywi0QK5r6TeBbdWxdrMGtiYXHA= github.com/dennwc/ioctl v1.0.0 h1:DsWAAjIxRqNcLn9x6mwfuf2pet3iB7aK90K4tF16rLg= github.com/dennwc/ioctl v1.0.0/go.mod h1:ellh2YB5ldny99SBU/VX7Nq0xiZbHphf1DrtHxxjMk0= github.com/ema/qdisc v1.0.0 h1:EHLG08FVRbWLg8uRICa3xzC9Zm0m7HyMHfXobWFnXYg= github.com/ema/qdisc v1.0.0/go.mod h1:FhIc0fLYi7f+lK5maMsesDqwYojIOh3VfRs8EVd5YJQ= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= -github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ= +github.com/godbus/dbus/v5 v5.2.2/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-envparse v0.1.0 h1:bE++6bhIsNCPLvgDZkYqo3nA+/PFI51pkrHdmPSDFPY= github.com/hashicorp/go-envparse v0.1.0/go.mod h1:OHheN1GoygLlAkTlXLXvAdnXdZxy8JUweQ1rAXx1xnc= github.com/hodgesds/perf-utils v0.7.0 h1:7KlHGMuig4FRH5fNw68PV6xLmgTe7jKs9hgAcEAbioU= @@ -33,14 +40,12 @@ github.com/hodgesds/perf-utils v0.7.0/go.mod h1:LAklqfDadNKpkxoAJNHpD5tkY0rkZEVd github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:hk4LPqXIY/c9XzRbe7dA6qQxaT6Axcbny0L/G5a4owQ= github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:PoK3ejP3LJkGTzKqRlpvCIFas3ncU02v8zzWDW+g0FY= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= -github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jsimonetti/rtnetlink/v2 v2.0.5 h1:l5S9iedrSW4thUfgiU+Hzsnk1cOR0upGD5ttt6mirHw= -github.com/jsimonetti/rtnetlink/v2 v2.0.5/go.mod h1:9yTlq3Ojr1rbmh/Y5L30/KIojpFhTRph2xKeZ+y+Pic= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/jsimonetti/rtnetlink/v2 v2.2.0 h1:/KfZ310gOAFrXXol5VwnFEt+ucldD/0dsSRZwpHCP9w= +github.com/jsimonetti/rtnetlink/v2 v2.2.0/go.mod h1:lbjDHxC+5RJ08lzPeA90Ls2pEoId3F08MoEMlhfHxeI= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -51,82 +56,90 @@ github.com/lufia/iostat v1.2.1 h1:tnCdZBIglgxD47RyD55kfWQcJMGzO+1QBziSQfesf2k= github.com/lufia/iostat v1.2.1/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/mattn/go-xmlrpc v0.0.3 h1:Y6WEMLEsqs3RviBrAa1/7qmbGB7DVD3brZIbqMbQdGY= github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA= -github.com/mdlayher/ethtool v0.4.0 h1:jjMGNSQfqauwFCtSzcqpa57R0AJdxKdQgbQ9mAOtM4Q= -github.com/mdlayher/ethtool v0.4.0/go.mod h1:GrljOneAFOTPGazYlf8qpxvYLdu4mo3pdJqXWLZ2Re8= +github.com/mdlayher/ethtool v0.5.1 h1:U4GThY6WgNJUJsMrUzBmoOTdQHFWxFPTHTeNnn3GCvU= +github.com/mdlayher/ethtool v0.5.1/go.mod h1:Pz39PaAy96Ea1SrCvEO/pPEAeULvRJjO6zspuEMhJy4= github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw= github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o= -github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= -github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= -github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= -github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= +github.com/mdlayher/netlink v1.9.0 h1:G8+GLq2x3v4D4MVIqDdNUhTUC7TKiCy/6MDkmItfKco= +github.com/mdlayher/netlink v1.9.0/go.mod h1:YBnl5BXsCoRuwBjKKlZ+aYmEoq0r12FDA/3JC+94KDg= +github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= +github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= -github.com/mdlayher/wifi v0.5.0 h1:TGZIcrhL6h3710amshpEJnMzLs74MrZOF+8qbm8Gx/I= -github.com/mdlayher/wifi v0.5.0/go.mod h1:yfQs+5zr1eOIfdsWDcZonWdznnt/Iiz0/4772cfZuHk= +github.com/mdlayher/wifi v0.7.2 h1:5yBq4nTm2HIYarKpJHrHU8q2BuxlX/BEfPa8kVKeOYU= +github.com/mdlayher/wifi v0.7.2/go.mod h1:zJM6S0QpUxpUgf915rgAQHE4/e1YzRRkhK3M26NPakI= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= -github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= +github.com/opencontainers/selinux v1.13.1 h1:A8nNeceYngH9Ow++M+VVEwJVpdFmrlxsN22F+ISDCJE= +github.com/opencontainers/selinux v1.13.1/go.mod h1:S10WXZ/osk2kWOYKy1x2f/eXF5ZHJoUs8UU/2caNRbg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus-community/go-runit v0.1.0 h1:uTWEj/Fn2RoLdfg/etSqwzgYNOYPrARx1BHUN052tGA= github.com/prometheus-community/go-runit v0.1.0/go.mod h1:AvJ9Jo3gAFu2lbM4+qfjdpq30FfiLDJZKbQ015u08IQ= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= -github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= -github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= +github.com/prometheus/exporter-toolkit v0.15.1 h1:XrGGr/qWl8Gd+pqJqTkNLww9eG8vR/CoRk0FubOKfLE= +github.com/prometheus/exporter-toolkit v0.15.1/go.mod h1:P/NR9qFRGbCFgpklyhix9F6v6fFr/VQB/CVsrMDGKo4= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/safchain/ethtool v0.6.1 h1:mhRnXE1H8fV8TTXh/HdqE4tXtb57r//BQh5pPYMuM5k= -github.com/safchain/ethtool v0.6.1/go.mod h1:JzoNbG8xeg/BeVeVoMCtCb3UPWoppZZbFpA+1WFh+M0= +github.com/safchain/ethtool v0.7.0 h1:rlJzfDetsVvT61uz8x1YIcFn12akMfuPulHtZjtb7Is= +github.com/safchain/ethtool v0.7.0/go.mod h1:MenQKEjXdfkjD3mp2QdCk8B/hwvkrlOTm/FD4gTpFxQ= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:GfSdC6wKfTGcgCS7BtzF5694Amne1pGCSTY252WhlEY= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= +golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= diff --git a/node_exporter.go b/node_exporter.go index 22939cbc..2c0e12cc 100644 --- a/node_exporter.go +++ b/node_exporter.go @@ -35,6 +35,7 @@ import ( "github.com/prometheus/common/version" "github.com/prometheus/exporter-toolkit/web" "github.com/prometheus/exporter-toolkit/web/kingpinflag" + "github.com/prometheus/node_exporter/collector" ) diff --git a/node_exporter_test.go b/node_exporter_test.go index 6fbbc7ee..0d6b41e4 100644 --- a/node_exporter_test.go +++ b/node_exporter_test.go @@ -59,7 +59,7 @@ func TestFileDescriptorLeak(t *testing.T) { if err != nil { return err } - for i := 0; i < 5; i++ { + for range 5 { if err := queryExporter(address); err != nil { return err } @@ -131,7 +131,7 @@ func runCommandAndTests(cmd *exec.Cmd, address string, fn func(pid int) error) e return fmt.Errorf("failed to start command: %s", err) } time.Sleep(50 * time.Millisecond) - for i := 0; i < 10; i++ { + for i := range 10 { if err := queryExporter(address); err == nil { break }