hjr3 / 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. 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

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.

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
  • v6.4.x

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.

License:GNU General Public License v3.0


Languages

Language:Rust 100.0%