@cryptotaxi247 / netdata-1 / commits / b9f05de31

Update libs code (#12190)

thiagoftsm committed Feb 21, 2022 at 13:44 UTC b9f05de31513ed3bce583c638156bc8aee0bd03a
12 files changed +35 -50
collectors/ebpf.plugin/ebpf.c
+2 -1
@@ -58,7 +58,8 @@ ebpf_module_t ebpf_modules[] = {
58 .apps_routine = ebpf_cachestat_create_apps_charts, .maps = NULL,
59 .pid_map_size = ND_EBPF_DEFAULT_PID_SIZE, .names = NULL, .cfg = &cachestat_config,
60 .config_file = NETDATA_CACHESTAT_CONFIG_FILE,
61 - .kernels = NETDATA_V3_10 | NETDATA_V4_14 | NETDATA_V4_16 | NETDATA_V4_18 | NETDATA_V5_4 | NETDATA_V5_15,
61 + .kernels = NETDATA_V3_10 | NETDATA_V4_14 | NETDATA_V4_16 | NETDATA_V4_18|
62 + NETDATA_V5_4 | NETDATA_V5_15 | NETDATA_V5_16,
63 .load = EBPF_LOAD_LEGACY, .targets = NULL},
64 { .thread_name = "sync", .config_name = "sync", .enabled = 0, .start_routine = ebpf_sync_thread,
65 .update_every = EBPF_DEFAULT_UPDATE_EVERY, .global_charts = 1, .apps_charts = CONFIG_BOOLEAN_NO,
collectors/ebpf.plugin/ebpf_apps.h
+1
@@ -379,6 +379,7 @@ typedef struct ebpf_bandwidth {
379 uint64_t retransmit; // Number of times tcp_retransmit was called
380 uint64_t call_udp_sent; // Number of times udp_sendmsg was called
381 uint64_t call_udp_received; // Number of times udp_recvmsg was called
382 + uint64_t close; // Number of times tcp_close was called
383 } ebpf_bandwidth_t;
384
385 /**
collectors/ebpf.plugin/ebpf_socket.c
+9 -23
@@ -1295,11 +1295,10 @@ netdata_vector_plot_t * select_vector_to_store(uint32_t *direction, netdata_sock
1295 *
1296 * @param values the values used to calculate the data.
1297 * @param key the key to store data.
1298 - * @param removesock check if this socket must be removed .
1298 * @param family the connection family
1299 * @param end the values size.
1300 */
1302 -static void hash_accumulator(netdata_socket_t *values, netdata_socket_idx_t *key, int *removesock, int family, int end)
1301 +static void hash_accumulator(netdata_socket_t *values, netdata_socket_idx_t *key, int family, int end)
1302 {
1303 uint64_t bsent = 0, brecv = 0, psent = 0, precv = 0;
1304 uint16_t retransmit = 0;
@@ -1320,8 +1319,6 @@ static void hash_accumulator(netdata_socket_t *values, netdata_socket_idx_t *key
1319
1320 if (w->ct > ct)
1321 ct = w->ct;
1323 -
1324 - *removesock += (int)w->removeme;
1322 }
1323
1324 values[0].recv_packets += precv;
@@ -1329,7 +1326,6 @@ static void hash_accumulator(netdata_socket_t *values, netdata_socket_idx_t *key
1326 values[0].recv_bytes += brecv;
1327 values[0].sent_bytes += bsent;
1328 values[0].retransmit += retransmit;
1332 - values[0].removeme += (uint8_t)*removesock;
1329 values[0].protocol = (!protocol)?IPPROTO_TCP:protocol;
1330 values[0].ct = ct;
1331
@@ -1357,8 +1353,6 @@ static void read_socket_hash_table(int fd, int family, int network_connection)
1353
1354 netdata_socket_idx_t key = {};
1355 netdata_socket_idx_t next_key = {};
1360 - netdata_socket_idx_t removeme;
1361 - int removesock = 0;
1356
1357 netdata_socket_t *values = socket_values;
1358 size_t length = ebpf_nprocs*sizeof(netdata_socket_t);
@@ -1375,35 +1369,21 @@ static void read_socket_hash_table(int fd, int family, int network_connection)
1369 continue;
1370 }
1371
1378 - if (removesock)
1379 - bpf_map_delete_elem(fd, &removeme);
1380 -
1372 if (network_connection) {
1382 - removesock = 0;
1383 - hash_accumulator(values, &key, &removesock, family, end);
1373 + hash_accumulator(values, &key, family, end);
1374 }
1375
1386 - if (removesock)
1387 - removeme = key;
1388 -
1376 key = next_key;
1377 }
1378
1392 - if (removesock)
1393 - bpf_map_delete_elem(fd, &removeme);
1394 -
1379 test = bpf_map_lookup_elem(fd, &next_key, values);
1380 if (test < 0) {
1381 return;
1382 }
1383
1384 if (network_connection) {
1401 - removesock = 0;
1402 - hash_accumulator(values, &next_key, &removesock, family, end);
1385 + hash_accumulator(values, &next_key, family, end);
1386 }
1404 -
1405 - if (removesock)
1406 - bpf_map_delete_elem(fd, &next_key);
1387 }
1388
1389 /**
@@ -1575,6 +1555,7 @@ void ebpf_socket_fill_publish_apps(uint32_t current_pid, ebpf_bandwidth_t *eb)
1555 curr->retransmit = eb->retransmit;
1556 curr->call_udp_sent = eb->call_udp_sent;
1557 curr->call_udp_received = eb->call_udp_received;
1558 + curr->call_close = eb->close;
1559 }
1560
1561 /**
@@ -1595,6 +1576,7 @@ void ebpf_socket_bandwidth_accumulator(ebpf_bandwidth_t *out)
1576 total->retransmit += move->retransmit;
1577 total->call_udp_sent += move->call_udp_sent;
1578 total->call_udp_received += move->call_udp_received;
1579 + total->close += move->close;
1580 }
1581 }
1582
@@ -1652,6 +1634,7 @@ static void ebpf_update_socket_cgroup()
1634 publish->retransmit = in->retransmit;
1635 publish->call_udp_sent = in->call_udp_sent;
1636 publish->call_udp_received = in->call_udp_received;
1637 + publish->call_close = in->call_close;
1638 } else {
1639 if (!bpf_map_lookup_elem(fd, &pid, eb)) {
1640 ebpf_socket_bandwidth_accumulator(eb);
@@ -1665,6 +1648,7 @@ static void ebpf_update_socket_cgroup()
1648 publish->retransmit = out->retransmit;
1649 publish->call_udp_sent = out->call_udp_sent;
1650 publish->call_udp_received = out->call_udp_received;
1651 + publish->call_close = out->close;
1652 }
1653 }
1654 }
@@ -1695,6 +1679,7 @@ static void ebpf_socket_sum_cgroup_pids(ebpf_socket_publish_apps_t *socket, stru
1679 accumulator.retransmit += w->retransmit;
1680 accumulator.call_udp_received += w->call_udp_received;
1681 accumulator.call_udp_sent += w->call_udp_sent;
1682 + accumulator.call_close += w->close;
1683
1684 pids = pids->next;
1685 }
@@ -1706,6 +1691,7 @@ static void ebpf_socket_sum_cgroup_pids(ebpf_socket_publish_apps_t *socket, stru
1691 socket->retransmit = (accumulator.retransmit >= socket->retransmit) ? accumulator.retransmit : socket->retransmit;
1692 socket->call_udp_sent = (accumulator.call_udp_sent >= socket->call_udp_sent) ? accumulator.call_udp_sent : socket->call_udp_sent;
1693 socket->call_udp_received = (accumulator.call_udp_received >= socket->call_udp_received) ? accumulator.call_udp_received : socket->call_udp_received;
1694 + socket->call_close = (accumulator.call_close >= socket->call_close) ? accumulator.call_close : socket->call_close;
1695 }
1696
1697 /**
collectors/ebpf.plugin/ebpf_socket.h
+4 -13
@@ -139,15 +139,7 @@ typedef struct ebpf_socket_publish_apps {
139 uint64_t retransmit; // Number of times tcp_retransmit was called
140 uint64_t call_udp_sent; // Number of times udp_sendmsg was called
141 uint64_t call_udp_received; // Number of times udp_recvmsg was called
142 -
143 - // Publish information.
144 - uint64_t publish_sent_bytes;
145 - uint64_t publish_received_bytes;
146 - uint64_t publish_tcp_sent;
147 - uint64_t publish_tcp_received;
148 - uint64_t publish_retransmit;
149 - uint64_t publish_udp_sent;
150 - uint64_t publish_udp_received;
142 + uint64_t call_close; // Number of times tcp_close was called
143 } ebpf_socket_publish_apps_t;
144
145 typedef struct ebpf_network_viewer_dimension_names {
@@ -238,10 +230,9 @@ typedef struct netdata_socket {
230 uint64_t sent_bytes;
231 uint64_t first; // First timestamp
232 uint64_t ct; // Current timestamp
241 - uint16_t retransmit; // It is never used with UDP
242 - uint8_t protocol;
243 - uint8_t removeme;
244 - uint32_t reserved;
233 + uint32_t retransmit; // It is never used with UDP
234 + uint16_t protocol;
235 + uint16_t reserved;
236 } netdata_socket_t __attribute__((__aligned__(8)));
237
238
libnetdata/ebpf/ebpf.c
+4 -2
@@ -279,7 +279,7 @@ static char *ebpf_select_kernel_name(uint32_t selector)
279 {
280 static char *kernel_names[] = { NETDATA_IDX_STR_V3_10, NETDATA_IDX_STR_V4_14, NETDATA_IDX_STR_V4_16,
281 NETDATA_IDX_STR_V4_18, NETDATA_IDX_STR_V5_4, NETDATA_IDX_STR_V5_10,
282 - NETDATA_IDX_STR_V5_11, NETDATA_IDX_STR_V5_15
282 + NETDATA_IDX_STR_V5_11, NETDATA_IDX_STR_V5_15, NETDATA_IDX_STR_V5_16
283 };
284
285 return kernel_names[selector];
@@ -301,7 +301,9 @@ static int ebpf_select_max_index(int is_rhf, uint32_t kver)
301 if (kver >= NETDATA_EBPF_KERNEL_4_11)
302 return NETDATA_IDX_V4_18;
303 } else { // Kernels from kernel.org
304 - if (kver >= NETDATA_EBPF_KERNEL_5_15)
304 + if (kver >= NETDATA_EBPF_KERNEL_5_16)
305 + return NETDATA_IDX_V5_16;
306 + else if (kver >= NETDATA_EBPF_KERNEL_5_15)
307 return NETDATA_IDX_V5_15;
308 else if (kver >= NETDATA_EBPF_KERNEL_5_11)
309 return NETDATA_IDX_V5_11;
libnetdata/ebpf/ebpf.h
+7 -3
@@ -57,7 +57,8 @@ enum netdata_ebpf_kernel_versions {
57 NETDATA_EBPF_KERNEL_5_0 = 327680, // 327680 = 5 * 65536 + 0 * 256
58 NETDATA_EBPF_KERNEL_5_10 = 330240, // 330240 = 5 * 65536 + 10 * 256
59 NETDATA_EBPF_KERNEL_5_11 = 330496, // 330240 = 5 * 65536 + 11 * 256
60 - NETDATA_EBPF_KERNEL_5_15 = 331520 // 331520 = 5 * 65536 + 15 * 256
60 + NETDATA_EBPF_KERNEL_5_15 = 331520, // 331520 = 5 * 65536 + 15 * 256
61 + NETDATA_EBPF_KERNEL_5_16 = 331776 // 331776 = 5 * 65536 + 16 * 256
62 };
63
64 enum netdata_kernel_flag {
@@ -68,7 +69,8 @@ enum netdata_kernel_flag {
69 NETDATA_V5_4 = 1 << 4,
70 NETDATA_V5_10 = 1 << 5,
71 NETDATA_V5_11 = 1 << 6,
71 - NETDATA_V5_15 = 1 << 7
72 + NETDATA_V5_15 = 1 << 7,
73 + NETDATA_V5_16 = 1 << 8
74 };
75
76 enum netdata_kernel_idx {
@@ -79,7 +81,8 @@ enum netdata_kernel_idx {
81 NETDATA_IDX_V5_4 ,
82 NETDATA_IDX_V5_10,
83 NETDATA_IDX_V5_11,
82 - NETDATA_IDX_V5_15
84 + NETDATA_IDX_V5_15,
85 + NETDATA_IDX_V5_16
86 };
87
88 #define NETDATA_IDX_STR_V3_10 "3.10"
@@ -90,6 +93,7 @@ enum netdata_kernel_idx {
93 #define NETDATA_IDX_STR_V5_10 "5.10"
94 #define NETDATA_IDX_STR_V5_11 "5.11"
95 #define NETDATA_IDX_STR_V5_15 "5.15"
96 +#define NETDATA_IDX_STR_V5_16 "5.16"
97
98 /**
99 * Minimum value has relationship with libbpf support.
packaging/current_libbpf.checksums
+1 -1
@@ -1 +1 @@
1 -de0a406ca56b73597a95a96cc0c5bf523161f69517fc5f2f5096fbaef7f223b5 v0.6.1_netdata.tar.gz
1 +d8f935cfdd9256c0902112fc949c9d5d23f1687c66ed359a9a18f06cc71dc676 v0.7_netdata.tar.gz
packaging/current_libbpf.version
+1 -1
@@ -1 +1 @@
1 -0.6.1_netdata
1 +0.7_netdata
packaging/ebpf.checksums
+3 -3
@@ -1,3 +1,3 @@
1 -44f21082c348b81f73034a986904207ee050379d51d6a6733a71323f2d36c8dd netdata-kernel-collector-glibc-v0.9.0.tar.xz
2 -9589070de6b7fe29fb0ea8f23394625c2887ddf3007bca9e65cfdb11ce41a7f7 netdata-kernel-collector-musl-v0.9.0.tar.xz
3 -f39c5c97f10d08ce72551a64aef8f9264346608e7d215afc910a5fe2158db868 netdata-kernel-collector-static-v0.9.0.tar.xz
1 +380103099c16a1703aca6d3aef5ea36142f6ecc621af79e0ecf248f768a8502f netdata-kernel-collector-glibc-v0.9.2.tar.xz
2 +23700cd83035d7f3b61e826c5b957e99ff67afcf11c59df3d096a9372115b2b0 netdata-kernel-collector-musl-v0.9.2.tar.xz
3 +a96d9f05a11208dcd58eb9e781f383ca88530abc407b24c7eaa0059d823892ed netdata-kernel-collector-static-v0.9.2.tar.xz
packaging/ebpf.version
+1 -1
@@ -1 +1 @@
1 -v0.9.0
1 +v0.9.2
packaging/libbpf.checksums
+1 -1
@@ -1 +1 @@
1 -de0a406ca56b73597a95a96cc0c5bf523161f69517fc5f2f5096fbaef7f223b5 v0.6.1_netdata.tar.gz
1 +d8f935cfdd9256c0902112fc949c9d5d23f1687c66ed359a9a18f06cc71dc676 v0.7_netdata.tar.gz
packaging/libbpf.version
+1 -1
@@ -1 +1 @@
1 -0.6.1_netdata
1 +0.7_netdata