Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Total Processes in MiscStat Corrected #1612

Merged
merged 1 commit into from
Mar 23, 2024

Conversation

eric1234
Copy link
Contributor

The ProcsTotal in the MiscStat structure was very inaccurate. It was reading a value which is the total number of kernel scheduling entities. This includes both processes and threads significantly overcounting.

This instead uses an existing method already in common to count the number of processes via the /proc filesystem where any directory is a number. This should still be a single syscall to read that directory entry.

I don't see any existing automated test with this functionality so I did not add any but I did do my own manual testing by writing the following program:

package main

import (
	"fmt"
	"github.com/shirou/gopsutil/v3/load"
)

func main() {
	stats, _ := load.Misc()
	fmt.Printf("Count: %v\n", stats.ProcsTotal)
}

With the previous code it was returning a value of over 1200. After the change the count was around 320 and matched ps -A | wc -l.

This fixes #1606.

The `ProcsTotal` in the `MiscStat` structure was very inaccurate. It was reading
a value which is the total number of kernel scheduling entities. This includes
both processes and threads significantly overcounting.

This instead uses an existing method already in common to count the number of
processes via the /proc filesystem where any directory is a number. This should
still be a single syscall to read that directory entry.

This fixes shirou#1606.
Copy link
Owner

@shirou shirou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work. Thank you so much!

@shirou shirou merged commit e230f52 into shirou:master Mar 23, 2024
23 checks passed
@eric1234 eric1234 deleted the correct-process-counts branch March 28, 2024 02:05
dmitryax referenced this pull request in open-telemetry/opentelemetry-collector Apr 2, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [github.com/shirou/gopsutil/v3](https://togithub.com/shirou/gopsutil)
| `v3.24.2` -> `v3.24.3` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.2/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.2/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>shirou/gopsutil (github.com/shirou/gopsutil/v3)</summary>

###
[`v3.24.3`](https://togithub.com/shirou/gopsutil/releases/tag/v3.24.3)

[Compare
Source](https://togithub.com/shirou/gopsutil/compare/v3.24.2...v3.24.3)

<!-- Release notes generated using configuration in .github/release.yml
at v3.24.3 -->

#### What's Changed

##### disk

- chore: fix typo by
[@&#8203;majorteach](https://togithub.com/majorteach) in
[https://github.com/shirou/gopsutil/pull/1615](https://togithub.com/shirou/gopsutil/pull/1615)

##### host

- \[host]\[linux]: fix utmp size on linux/arm64 by
[@&#8203;shirou](https://togithub.com/shirou) in
[https://github.com/shirou/gopsutil/pull/1603](https://togithub.com/shirou/gopsutil/pull/1603)

##### load

- Total Processes in `MiscStat` Corrected by
[@&#8203;eric1234](https://togithub.com/eric1234) in
[https://github.com/shirou/gopsutil/pull/1612](https://togithub.com/shirou/gopsutil/pull/1612)

##### process

- \[process]\[freebsd]: re-generate types on freebsd arm64 by
[@&#8203;shirou](https://togithub.com/shirou) in
[https://github.com/shirou/gopsutil/pull/1609](https://togithub.com/shirou/gopsutil/pull/1609)

#### New Contributors

- [@&#8203;majorteach](https://togithub.com/majorteach) made their first
contribution in
[https://github.com/shirou/gopsutil/pull/1615](https://togithub.com/shirou/gopsutil/pull/1615)
- [@&#8203;eric1234](https://togithub.com/eric1234) made their first
contribution in
[https://github.com/shirou/gopsutil/pull/1612](https://togithub.com/shirou/gopsutil/pull/1612)

**Full Changelog**:
shirou/gopsutil@v3.24.2...v3.24.3

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
mx-psi referenced this pull request in open-telemetry/opentelemetry-collector-contrib Apr 2, 2024
…2096)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [github.com/shirou/gopsutil/v3](https://togithub.com/shirou/gopsutil)
| `v3.24.2` -> `v3.24.3` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.2/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fshirou%2fgopsutil%2fv3/v3.24.2/v3.24.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>shirou/gopsutil (github.com/shirou/gopsutil/v3)</summary>

###
[`v3.24.3`](https://togithub.com/shirou/gopsutil/releases/tag/v3.24.3)

[Compare
Source](https://togithub.com/shirou/gopsutil/compare/v3.24.2...v3.24.3)

<!-- Release notes generated using configuration in .github/release.yml
at v3.24.3 -->

#### What's Changed

##### disk

- chore: fix typo by
[@&#8203;majorteach](https://togithub.com/majorteach) in
[https://github.com/shirou/gopsutil/pull/1615](https://togithub.com/shirou/gopsutil/pull/1615)

##### host

- \[host]\[linux]: fix utmp size on linux/arm64 by
[@&#8203;shirou](https://togithub.com/shirou) in
[https://github.com/shirou/gopsutil/pull/1603](https://togithub.com/shirou/gopsutil/pull/1603)

##### load

- Total Processes in `MiscStat` Corrected by
[@&#8203;eric1234](https://togithub.com/eric1234) in
[https://github.com/shirou/gopsutil/pull/1612](https://togithub.com/shirou/gopsutil/pull/1612)

##### process

- \[process]\[freebsd]: re-generate types on freebsd arm64 by
[@&#8203;shirou](https://togithub.com/shirou) in
[https://github.com/shirou/gopsutil/pull/1609](https://togithub.com/shirou/gopsutil/pull/1609)

#### New Contributors

- [@&#8203;majorteach](https://togithub.com/majorteach) made their first
contribution in
[https://github.com/shirou/gopsutil/pull/1615](https://togithub.com/shirou/gopsutil/pull/1615)
- [@&#8203;eric1234](https://togithub.com/eric1234) made their first
contribution in
[https://github.com/shirou/gopsutil/pull/1612](https://togithub.com/shirou/gopsutil/pull/1612)

**Full Changelog**:
shirou/gopsutil@v3.24.2...v3.24.3

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ProcTotal Inaccurate in MiscStats
2 participants