Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@tpjanssen
Copy link
Contributor

Try to load system load averages from /proc/loadavg first. This should prevent reporting the load averages being too high on Proxmox LXC installations.

Thank you for your contribution to the Pi-hole Community!

Please read the comments below to help us consider your Pull Request.

We are all volunteers and completing the process outlined will help us review your commits quicker.

Please make sure you

  1. Base your code and PRs against the repositories developmental branch.
  2. Sign Off all commits as we enforce the DCO for all contributions
  3. Sign all your commits as they must have verified signatures
  4. File a pull request for any change that requires changes to our documentation at our documentation repo

What does this PR aim to accomplish?:

On Proxmox LXC installations the reported system load is the load of the host, not the LXC itself. This code change tries to retrieve the loads from /proc/loadavg first:

root@codedev:/home/pihole# cat loadavg.c 
#include <stdio.h>
#include <stdlib.h>

int getloadavg_proc(double * loadavg)
{
    FILE *f = fopen("/proc/loadavg", "r");
    if(f == NULL)
        return -1;

    int count = fscanf(f, "%lf %lf %lf", &loadavg[0], &loadavg[1], &loadavg[2]);
    fclose(f);
    if (count != 3)
        return -1;

    return 0;
}

int main() {
    double loadavg[3];

    if (getloadavg(loadavg, 3) == -1) {
        perror("Error getting sys load average");
        return 1;
    }

    printf("Sys load: %.2f %.2f %.2f\n", loadavg[0], loadavg[1], loadavg[2]);

    if (getloadavg_proc(loadavg) == -1) {
        perror("Error getting proc load average");
        return 1;
    }

    printf("Proc load: %.2f %.2f %.2f\n", loadavg[0], loadavg[1], loadavg[2]);
}

root@codedev:/home/pihole# ./loadavg 
Sys load: 2.66 2.85 2.70
Proc load: 0.00 0.00 0.00

To make sure the load averages make sense on Proxmox LXC installations, lxcfs on Proxmox should run with parameter --enable-loadavg.

How does this PR accomplish the above?:

Try to retreive the load averages from /proc/loadavg first. In case it fails, the old method (getloadavg) is used.

Link documentation PRs if any are needed to support this PR:


By submitting this pull request, I confirm the following:

  1. I have read and understood the contributors guide, as well as this entire template. I understand which branch to base my commits and Pull Requests against.
  2. I have commented my proposed changes within the code and I have tested my changes.
  3. I am willing to help maintain this change if there are issues with it later.
  4. It is compatible with the EUPL 1.2 license
  5. I have squashed any insignificant commits. (git rebase)
  6. I have checked that another pull request for this purpose does not exist.
  7. I have considered, and confirmed that this submission will be valuable to others.
  8. I accept that this submission may not be used, and the pull request closed at the will of the maintainer.
  9. I give this submission freely, and claim no ownership to its content.

  • I have read the above and my PR is ready for review.

@tpjanssen tpjanssen requested a review from a team as a code owner October 5, 2025 19:12
Try to load system load averages from /proc/loadavg first.

Signed-off-by: tpjanssen <[email protected]>
@rdwebdesign
Copy link
Member

image

🎉

Suggested change by DL6ER

Co-authored-by: Dominik <[email protected]>
Signed-off-by: tpjanssen <[email protected]>
@rdwebdesign rdwebdesign requested a review from DL6ER October 7, 2025 18:32
Copy link
Member

@DL6ER DL6ER left a comment

Choose a reason for hiding this comment

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

Thank you for your contribution!

@DL6ER DL6ER merged commit 1d297f0 into pi-hole:development Oct 7, 2025
13 checks passed
@tpjanssen tpjanssen deleted the development branch October 7, 2025 20:29
@PromoFaux PromoFaux mentioned this pull request Oct 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants