Igalia / snabb

Snabb Switch: Fast open source packet processing
Apache License 2.0
47 stars 5 forks source link

Add `snabb rrdcat' tool to summarize RRD archives #1225

Closed eugeneia closed 4 years ago

eugeneia commented 4 years ago

This adds a little utility to summarize generic RRD archives. It should be useful for finding points of interest in time. I.e., when packets where dropped on a queue, or when throughput spikes.

In function its like a simplified ASCII version of rrdtool graph that is more DWIM (as in it tries to show whatever data is available, and snips / inserts ellipsis at consecutive zero rows or discontinuities).

$ snabb rrdcat -l q1_rxdrops.rrd 
Available sources:
    value (type: counter, heartbeat: 2, min: -inf, max: inf)
Available intervals:
    2 (average)
    30 (average max)
    300 (average max)
Last updated:
    Tue Sep 24 18:41:24 2019
$ sudo ./snabb rrdcat q1_rxdrops.rrd
Tue Sep 17 18:42:00 2019 ?                    
                         ?                    
                         ?                    
...
Tue Sep 24 12:52:00 2019 [  a----------------m avg:22K max:168K
                         [a------------------m avg:8K max:167K
                         [                     avg:- max:-
                         [                     avg:- max:-
Tue Sep 24 13:12:00 2019 [                     avg:- max:-
...
Tue Sep 24 13:27:00 2019 [a                    avg:33.45 max:2K
                         [a----m               avg:6K max:42K
                         [                     avg:- max:-
                         [                     avg:- max:-
Tue Sep 24 13:47:00 2019 [                     avg:- max:-
...
Tue Sep 24 17:47:00 2019 [ a--------m          avg:15K max:86K
                         [a-------m            avg:4K max:70K
                         [a                    avg:142 max:4K
                         [a                    avg:60.60 max:6K
Tue Sep 24 18:07:00 2019 [                     avg:- max:-
                         [                     avg:- max:-
                         [a                    avg:3.07 max:353
                         [a                    avg:13.37 max:1K
Tue Sep 24 18:27:00 2019 [a                    avg:6.05 max:439
                         [a                    avg:20.89 max:2K
                         [                     avg:- max:-
$ sudo ./snabb rrdcat --interval 30 q1_rxdrops.rrd
Mon Sep 23 18:41:30 2019 ?                    
                         ?                    
                         ?                    
...
Tue Sep 24 12:49:30 2019 [a                    avg:495 max:3K
                         [a                    avg:380 max:3K
                         [                     avg:- max:-
                         [                     avg:- max:-
Tue Sep 24 12:51:30 2019 [                     avg:- max:-
                         [a                    avg:25.90 max:233
                         [a                    avg:15.87 max:119
                         [                     avg:- max:-
Tue Sep 24 12:53:30 2019 [a                    avg:29.70 max:446
                         [a                    avg:106 max:837
                         [        a----------m avg:68K max:166K
                         [                 a-m avg:148K max:168K
Tue Sep 24 12:55:30 2019 [         a---------m avg:81K max:167K
                         [a                    avg:52.93 max:411
                         [a                    avg:51.97 max:457
                         [                     avg:- max:-
Tue Sep 24 12:57:30 2019 [                     avg:- max:-
                         [                     avg:- max:-
...
Tue Sep 24 13:28:30 2019 [a                    avg:55.93 max:839
                         [a                    avg:168 max:2K
                         [a                    avg:111 max:1K
                         [                     avg:- max:-
Tue Sep 24 13:30:30 2019 [a                    avg:8.17 max:123
                         [a                    avg:1K max:4K
                         [  a--m               avg:21K max:42K
                         [   am                avg:28K max:40K
Tue Sep 24 13:32:30 2019 [ a--m                avg:10K max:39K
                         [a                    avg:492 max:3K
                         [                     avg:- max:-
                         [                     avg:- max:-
Tue Sep 24 13:34:30 2019 [                     avg:- max:-
...
Tue Sep 24 17:48:30 2019 [  a---m              avg:19K max:53K
                         [    a-m              avg:40K max:54K
                         [     a----m          avg:43K max:86K
                         [     a-m             avg:43K max:60K
Tue Sep 24 17:50:30 2019 [   a----m            avg:28K max:70K
                         [                     avg:- max:-
                         [a                    avg:455 max:2K
                         [a                    avg:2K max:3K
Tue Sep 24 17:52:30 2019 [a                    avg:2K max:7K
                         [a                    avg:2K max:3K
                         [a                    avg:1K max:3K
                         [a                    avg:282 max:4K
Tue Sep 24 17:54:30 2019 [a                    avg:97.30 max:848
                         [a                    avg:64.21 max:328
                         [a                    avg:167 max:886
                         [a                    avg:50.10 max:369
Tue Sep 24 17:56:30 2019 [a                    avg:663 max:4K
                         [                     avg:- max:-
                         [a                    avg:139 max:1K
                         [                     avg:- max:-
Tue Sep 24 17:58:30 2019 [a                    avg:196 max:1K
                         [                     avg:- max:-
                         [a                    avg:204 max:3K
                         [                     avg:- max:-
Tue Sep 24 18:00:30 2019 [                     avg:- max:-
                         [                     avg:- max:-
                         [a                    avg:460 max:6K
                         [                     avg:- max:-
Tue Sep 24 18:02:30 2019 [a                    avg:93.80 max:1K
                         [a                    avg:1.17 max:17.50
                         [a                    avg:51.10 max:767
                         [                     avg:- max:-
Tue Sep 24 18:04:30 2019 [                     avg:- max:-
                         [                     avg:- max:-
...
Tue Sep 24 18:18:30 2019 [a                    avg:30.67 max:353
                         [                     avg:- max:-
                         [                     avg:- max:-
                         [                     avg:- max:-
...
Tue Sep 24 18:22:30 2019 [a                    avg:48.30 max:725
                         [                     avg:- max:-
                         [a                    avg:85.37 max:1K
                         [                     avg:- max:-
Tue Sep 24 18:24:30 2019 [                     avg:- max:-
                         [                     avg:- max:-
...
Tue Sep 24 18:26:00 2019 [a                    avg:29.27 max:439
                         [                     avg:- max:-
                         [                     avg:- max:-
                         [                     avg:- max:-
...
Tue Sep 24 18:28:30 2019 [a                    avg:31.20 max:346
                         [                     avg:- max:-
                         [                     avg:- max:-
                         [                     avg:- max:-
Tue Sep 24 18:30:30 2019 [a                    avg:104 max:1K
                         [                     avg:- max:-
                         [a                    avg:105 max:2K
                         [                     avg:- max:-
Tue Sep 24 18:32:30 2019 [                     avg:- max:-
                         [                     avg:- max:-
...
wingo commented 4 years ago

Really neat! I was able to repro with a loadtest-generated load:

[wingo@snabb1:~/snabb/src]$ sudo ./snabb rrdcat -s value -i 2 /run/snabb/28645/apps/b4sideNic/pci/82:00.0/rxdrop.rrd
Fri Oct 25 10:38:28 2019 ?                    
                         ?                    
                         ?                    
...
Fri Oct 25 12:35:34 2019 [a                    avg:78.85
                         [a                    avg:792
                         [a                    avg:506
                         [a                    avg:2K
Fri Oct 25 12:35:42 2019 [                a    avg:284K
                         [                   a avg:338K
                         [                a    avg:272K
                         [                a    avg:272K
Fri Oct 25 12:35:50 2019 [a                    avg:7K
                         [                     avg:-
                         [      a              avg:106K
                         [  a                  avg:44K
Fri Oct 25 12:35:58 2019 [ a                   avg:29K
                         [     a               avg:96K
                         [ a                   avg:32K
                         [a                    avg:3K
Fri Oct 25 12:36:06 2019 [a                    avg:4K
                         [a                    avg:626
                         [ a                   avg:21K
                         [ a                   avg:22K
Fri Oct 25 12:36:14 2019 [a                    avg:5K
                         [ a                   avg:19K
                         [                     avg:-
                         [                     avg:-
Fri Oct 25 12:36:22 2019 [a                    avg:14K
                         [a                    avg:9K
                         [a                    avg:3K
                         [a                    avg:16K
Fri Oct 25 12:36:30 2019 [a                    avg:11K
                         [  a                  avg:46K
                         [ a                   avg:24K
                         [ a                   avg:26K
Fri Oct 25 12:36:38 2019 [ a                   avg:32K
                         [  a                  avg:41K
                         [   a                 avg:62K
                         [   a                 avg:66K
Fri Oct 25 12:36:46 2019 [    a                avg:69K
                         [   a                 avg:65K
                         [   a                 avg:59K
                         [   a                 avg:53K
Fri Oct 25 12:36:54 2019 [  a                  avg:42K
                         [  a                  avg:38K
                         [  a                  avg:35K
                         [ a                   avg:29K
Fri Oct 25 12:37:02 2019 [   a                 avg:51K
                         [ a                   avg:33K
                         [  a                  avg:44K
                         [a                    avg:5K
Fri Oct 25 12:37:10 2019 [                     avg:-
                         [                     avg:-
                         [                     avg:-
...