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.
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.
The softnet-stat
binary is distributed via the hjr3/softnet-stat repository on packagecloud.io
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
.
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
To create a new rpm, do the following:
$ mkdir target/x86_64-unknown-linux-musl/release/$VERSION
$ docker run --rm -v $(pwd):/data skandyla/fpm -s dir -t rpm -n "softnet_stat" -v $VERSION -p /data -C /data/target/x86_64-unknown-linux-musl/release ./
This will put something like softnet_stat-1.2.0-1.x86_64.rpm
in the current directory.
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
v6.4.x
To exercise these tests: $ cargo test
.
./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
./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}]
$ 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