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