ebpf_exporter

Форк
0
/
cachestat.bpf.c 
47 строк · 1.2 Кб
1
#include <vmlinux.h>
2
#include <bpf/bpf_tracing.h>
3
#include <bpf/bpf_core_read.h>
4
#include "maps.bpf.h"
5
#include "regs-ip.bpf.h"
6

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

14
SEC("kprobe/add_to_page_cache_lru")
15
int add_to_page_cache_lru(struct pt_regs *ctx)
16
{
17
    u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
18
    increment_map(&page_cache_ops_total, &ip, 1);
19
    return 0;
20
}
21

22
SEC("kprobe/mark_page_accessed")
23
int mark_page_accessed(struct pt_regs *ctx)
24
{
25
    u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
26
    increment_map(&page_cache_ops_total, &ip, 1);
27
    return 0;
28
}
29

30
// This function is usually not visible.
31
SEC("kprobe/folio_account_dirtied")
32
int folio_account_dirtied(struct pt_regs *ctx)
33
{
34
    u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
35
    increment_map(&page_cache_ops_total, &ip, 1);
36
    return 0;
37
}
38

39
SEC("kprobe/mark_buffer_dirty")
40
int mark_buffer_dirty(struct pt_regs *ctx)
41
{
42
    u64 ip = KPROBE_REGS_IP_FIX(PT_REGS_IP_CORE(ctx));
43
    increment_map(&page_cache_ops_total, &ip, 1);
44
    return 0;
45
}
46

47
char LICENSE[] SEC("license") = "GPL";
48

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

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

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

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