Skip to content

Performance is a bit lower than reading raw /proc #365

@runlevel5

Description

@runlevel5

On my Linux box (Fedora 43 ppc64le) I wrote a simple benchmarking

procfs crate benchmark

1. all_processes() call only: 8.886µs
2. all_processes() + iterate (count only): 2.555386ms (530 processes)
3. all_processes() + stat(): 11.22329ms (530 processes)
4. all_processes() + stat() + status(): 33.602079ms (530 processes)
5. all_processes() + stat() + status() + cmdline(): 37.588174ms (530 processes)
6. Full scan (stat+status+cmdline+exe+statm): 45.371686ms (530 processes)
7. Raw /proc read (stat only): 8.524172ms (530 processes)
8. Raw /proc read (stat + status): 18.856123ms (530 processes)

--- Thread scanning tests ---

9. all_processes() + stat() + tasks() iterate: 19.99895ms (530 procs, 964 threads)
10. all_processes() + stat() + tasks() + task.stat(): 33.641131ms (530 procs, 964 threads)
11. Raw /proc + task dir iterate: 12.950577ms (530 procs, 964 threads)
12. Raw /proc + task stat read: 27.881418ms (530 procs, 964 threads)

--- Summary ---
Process count: ~530
Thread count: ~964

it's seems to me there is a little overhead, is it expected?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions