totallyunknown / softnet-stat

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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. Currenty, 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 written in Rust using v1.10.0. All dependencies are listed in Cargo.toml. To build: $ cargo build.

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 3 versions of the /proc/net/softnet_stat file. To excercise 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.

License:GNU General Public License v3.0


Languages

Language:Rust 100.0%