ebpf_exporter

Форк
0
/
tcp-syn-backlog-exp2zero.bpf.c 
41 строка · 903.0 Байт
1
#include <vmlinux.h>
2
#include <bpf/bpf_tracing.h>
3
#include <bpf/bpf_core_read.h>
4
#include "maps.bpf.h"
5

6
// 17 buckets, max range is 32k..64k
7
#define MAX_BUCKET_SLOT 17
8

9
struct key_t {
10
    u64 bucket;
11
};
12

13
struct {
14
    __uint(type, BPF_MAP_TYPE_HASH);
15
    __uint(max_entries, MAX_BUCKET_SLOT + 2);
16
    __type(key, struct key_t);
17
    __type(value, u64);
18
} tcp_syn_backlog SEC(".maps");
19

20
static int do_count(u64 backlog)
21
{
22
    struct key_t key = {};
23

24
    increment_exp2zero_histogram(&tcp_syn_backlog, key, backlog, MAX_BUCKET_SLOT);
25

26
    return 0;
27
}
28

29
SEC("kprobe/tcp_v4_syn_recv_sock")
30
int BPF_KPROBE(kprobe__tcp_v4_syn_recv_sock, struct sock *sk)
31
{
32
    return do_count(BPF_CORE_READ(sk, sk_ack_backlog));
33
}
34

35
SEC("kprobe/tcp_v6_syn_recv_sock")
36
int BPF_KPROBE(kprobe__tcp_v6_syn_recv_sock, struct sock *sk)
37
{
38
    return do_count(BPF_CORE_READ(sk, sk_ack_backlog));
39
}
40

41
char LICENSE[] SEC("license") = "GPL";
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.