Skip to content

hjr3/softnet-stat

main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

softnet-stat

Build Status

Parse the /proc/net/softnet_stat file into something more readable. For more information about /proc/net/softnet_stat, I suggest reading Monitoring and Tuning the Linux Networking Stack: Receiving Data.

Compatible Systems

This parser should work on all Linux kernels since v2.6.32. In later versions of the kernel, more fields were added. Currently, the parser will default these fields to a value of 0 if they are not found in the file.

Distribution

The softnet-stat binary is distributed via the hjr3/softnet-stat repository on packagecloud.io

Build

This software was built Rust using v1.56.0. All dependencies are listed in Cargo.toml. To build: $ cargo build.

The v1.x.x releases were built using Rust v1.10.0.

Static Binary

To build a completely static binary for production use, the binary can use musl as a target.

For Linux:

$ cargo build --target=x86_64-unknown-linux-musl

For macOS:

docker run --rm -it -v "$(pwd)":/home/rust/src ekidd/rust-musl-builder cargo build --release

Tests

This program has been tested against /proc/net/softnet_stat files from these Linux versions:

  • v2.6.32
  • v2.6.36
  • v3.11.x
  • v5.10.47

To exercise these tests: $ cargo test.

Examples

Formatted

./softnet-stat

Cpu            Processed      Dropped        Time Squeezed  Cpu Collision  Received RPS   Flow Limit Count
0              1842008611     0              1              0              0              0
1              1863193957     0              2              0              0              0
2              1711764716     0              3              0              0              0
3              1640600369     0              0              0              0              0
4              1737798067     0              5              0              0              0
5              1686686610     0              1              0              0              0

Json

./softnet-stat --json
[{"processed":1842008611,"dropped":0,"time_squeeze":1,"cpu_collision":0,"received_rps":null,"flow_limit_count":null},{"processed":1863193957,"dropped":0,"time_squeeze":2,"cpu_collision":0,"received_rps":null,"flow_limit_count":null},{"processed":1711764716,"dropped":0,"time_squeeze":3,"cpu_collision":0,"received_rps":null,"flow_limit_count":null},{"processed":1640600369,"dropped":0,"time_squeeze":0,"cpu_collision":0,"received_rps":null,"flow_limit_count":null},{"processed":1737798067,"dropped":0,"time_squeeze":5,"cpu_collision":0,"received_rps":null,"flow_limit_count":null},{"processed":1686686610,"dropped":0,"time_squeeze":1,"cpu_collision":0,"received_rps":null,"flow_limit_count":null}]

Read From Stdin

$ cat /path/to/file | ./target/debug/softnet-stat -s
Cpu            Processed      Dropped        Time Squeezed  Cpu Collision  Received RPS   Flow Limit Count
0              1842008611     0              1              0              0              0
1              1863193957     0              2              0              0              0
2              1711764716     0              3              0              0              0
3              1640600369     0              0              0              0              0
4              1737798067     0              5              0              0              0
5              1686686610     0              1              0              0              0

About

Parse the `/proc/net/softnet_stat` file into something more readable.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages