@@ -14,7 +14,7 @@ use std::{
1414 env, fs,
1515 path:: Path ,
1616 sync:: {
17- atomic:: { AtomicBool , Ordering } ,
17+ atomic:: { AtomicBool } ,
1818 } ,
1919} ;
2020
@@ -25,8 +25,10 @@ use tracing_subscriber::{EnvFilter, fmt::format::FmtSpan};
2525
2626const BPF_PATH : & str = "BPF_PATH" ; //BPF env path
2727
28+ mod helpers;
29+ use crate :: helpers:: display_metrics_map;
30+
2831mod structs;
29- use crate :: structs:: NetworkMetrics ;
3032
3133#[ tokio:: main]
3234async fn main ( ) -> Result < ( ) , anyhow:: Error > {
@@ -90,44 +92,6 @@ async fn main() -> Result<(), anyhow::Error> {
9092 display_metrics_map ( net_perf_buffer, running, buffers) . await ;
9193 } ) ;
9294
93-
9495 signal:: ctrl_c ( ) . await ?;
9596 Ok ( ( ) )
9697}
97-
98- pub async fn display_metrics_map (
99- mut perf_buffers : Vec < PerfEventArrayBuffer < MapData > > ,
100- running : AtomicBool ,
101- mut buffers : Vec < BytesMut > ,
102- ) {
103- while running. load ( Ordering :: SeqCst ) {
104- for buf in perf_buffers. iter_mut ( ) {
105- match buf. read_events ( & mut buffers) {
106- std:: result:: Result :: Ok ( events) => {
107- for i in 0 ..events. read {
108- let data = & buffers[ i] ;
109- if data. len ( ) >= std:: mem:: size_of :: < NetworkMetrics > ( ) {
110- let net_metrics: NetworkMetrics =
111- unsafe { std:: ptr:: read_unaligned ( data. as_ptr ( ) as * const _ ) } ;
112- let sk_drop_count = net_metrics. sk_drops ;
113- let sk_err = net_metrics. sk_err ;
114- let sk_err_soft = net_metrics. sk_err_soft ;
115- let sk_backlog_len = net_metrics. sk_backlog_len ;
116- let sk_write_memory_queued = net_metrics. sk_write_memory_queued ;
117- let sk_ack_backlog = net_metrics. sk_ack_backlog ;
118- let sk_receive_buffer_size = net_metrics. sk_receive_buffer_size ;
119- info ! (
120- "sk_drops: {}, sk_err: {}, sk_err_soft: {}, sk_backlog_len: {}, sk_write_memory_queued: {}, sk_ack_backlog: {}, sk_receive_buffer_size: {}" ,
121- sk_drop_count, sk_err, sk_err_soft, sk_backlog_len, sk_write_memory_queued, sk_ack_backlog, sk_receive_buffer_size
122- ) ;
123- }
124- }
125- }
126- Err ( e) => {
127- error ! ( "Error reading events: {:?}" , e) ;
128- }
129- }
130- }
131- tokio:: time:: sleep ( std:: time:: Duration :: from_millis ( 100 ) ) . await ;
132- }
133- }
0 commit comments