ebpf_exporter

Форк
0
/
llcstat.bpf.c 
40 строк · 982.0 Байт
1
#include <vmlinux.h>
2
#include <bpf/bpf_tracing.h>
3
#include "maps.bpf.h"
4

5
#define MAX_CPUS 512
6

7
struct {
8
    __uint(type, BPF_MAP_TYPE_HASH);
9
    __uint(max_entries, MAX_CPUS);
10
    __type(key, u32);
11
    __type(value, u64);
12
} llc_references_total SEC(".maps");
13

14
struct {
15
    __uint(type, BPF_MAP_TYPE_HASH);
16
    __uint(max_entries, MAX_CPUS);
17
    __type(key, u32);
18
    __type(value, u64);
19
} llc_misses_total SEC(".maps");
20

21
static int trace_event(void *map, u32 cpu, u64 sample_period)
22
{
23
    increment_map(map, &cpu, sample_period);
24

25
    return 0;
26
}
27

28
SEC("perf_event/type=0,config=3,frequency=1")
29
int on_cache_miss(struct bpf_perf_event_data *ctx)
30
{
31
    return trace_event(&llc_misses_total, bpf_get_smp_processor_id(), ctx->sample_period);
32
}
33

34
SEC("perf_event/type=0,config=2,frequency=1")
35
int on_cache_reference(struct bpf_perf_event_data *ctx)
36
{
37
    return trace_event(&llc_references_total, bpf_get_smp_processor_id(), ctx->sample_period);
38
}
39

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

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

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

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

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