Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
cee644f
improve: create macros
thiagoftsm Feb 3, 2026
a1edc29
improve: Simplify codebase
thiagoftsm Feb 3, 2026
2771356
Merge branch 'master' into improve
thiagoftsm Feb 3, 2026
95560ec
improve: Fixes
thiagoftsm Feb 3, 2026
73d35ae
improve: Fixes (p2)
thiagoftsm Feb 3, 2026
00efe58
improve: Fixes (p3)
thiagoftsm Feb 3, 2026
930a3c8
improve: Cleanup warnings
thiagoftsm Feb 3, 2026
903866d
improve: Cachestat
thiagoftsm Feb 3, 2026
5c10e9d
improve: Dcstat and fix Cache
thiagoftsm Feb 4, 2026
79fa06e
improve: Tester
thiagoftsm Feb 4, 2026
96ee4de
improve: Simplify alorithm
thiagoftsm Feb 4, 2026
8bf9df2
improve: Fix/Simplify disk
thiagoftsm Feb 4, 2026
5b6b1a3
improve: Fix/Simplify FD
thiagoftsm Feb 4, 2026
e508dec
improve: Fix/Simplify EXT4
thiagoftsm Feb 4, 2026
624f51d
improve: Fix/Simplify NFS
thiagoftsm Feb 4, 2026
fd0b485
improve: Fix/Simplify XFS
thiagoftsm Feb 4, 2026
5d8ea78
improve: Fix/Simplify ZFS
thiagoftsm Feb 4, 2026
e419b93
improve: Fix/Simplify Disk
thiagoftsm Feb 5, 2026
ee2629f
improve: Fix/Simplify Disk and Hardirq
thiagoftsm Feb 5, 2026
28e0c18
Merge branch 'master' into improve
thiagoftsm Feb 5, 2026
43fe1a3
update_libbpf: Improve/fix oomkill
thiagoftsm Feb 6, 2026
7c17cad
update_libbpf: Improve/fix process
thiagoftsm Feb 6, 2026
e1f560a
update_libbpf: Improve/fix network_viewer
thiagoftsm Feb 6, 2026
9dbbca4
improve: Adjust kern files
thiagoftsm Feb 11, 2026
ac2e735
improve: Fix socket
thiagoftsm Feb 11, 2026
54fa5bf
improve: Fix softirq
thiagoftsm Feb 11, 2026
282bd06
improve: Swap
thiagoftsm Feb 12, 2026
c97a348
improve: Sync_file_range
thiagoftsm Feb 12, 2026
0309762
improve: Sync
thiagoftsm Feb 12, 2026
9446bdd
improve: Syncfs
thiagoftsm Feb 12, 2026
5f59b53
improve: vfs
thiagoftsm Feb 12, 2026
359f718
improve: last fs
thiagoftsm Feb 12, 2026
6a682e5
improve: Fix hardirq (P1)
thiagoftsm Mar 17, 2026
10d1175
improve: Update libbpf
thiagoftsm Mar 17, 2026
2da739d
improve: Fix HARDIRQ load
thiagoftsm Mar 17, 2026
975baa4
improve: Adjust code
thiagoftsm Mar 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions includes/netdata_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,5 +224,63 @@ static __always_inline __u32 monitor_apps(void *ctrl_tbl)
return 1;
}

#if (LINUX_VERSION_CODE > KERNEL_VERSION(4,11,0))
#define NETDATA_BPF_MAP_DEF(NAME, TYPE, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
struct { \
__uint(type, TYPE); \
__type(key, KEY_TYPE); \
__type(value, VALUE_TYPE); \
__uint(max_entries, MAX_ENTRIES); \
} NAME SEC(".maps")

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
#define NETDATA_BPF_HASH_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_HASH, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_PERCPU_HASH_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_PERCPU_HASH, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_ARRAY_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_ARRAY, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_PERCPU_ARRAY_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_PERCPU_ARRAY, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)
#else
#define NETDATA_BPF_HASH_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_HASH, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_PERCPU_HASH_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_HASH, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_ARRAY_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_ARRAY, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_PERCPU_ARRAY_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_ARRAY, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)
#endif

#else
#define NETDATA_BPF_MAP_DEF(NAME, TYPE, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
struct bpf_map_def SEC("maps") NAME = { \
.type = TYPE, \
.key_size = sizeof(KEY_TYPE), \
.value_size = sizeof(VALUE_TYPE), \
.max_entries = MAX_ENTRIES \
}

#define NETDATA_BPF_HASH_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_HASH, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_PERCPU_HASH_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_HASH, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_ARRAY_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_ARRAY, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#define NETDATA_BPF_PERCPU_ARRAY_DEF(NAME, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES) \
NETDATA_BPF_MAP_DEF(NAME, BPF_MAP_TYPE_ARRAY, KEY_TYPE, VALUE_TYPE, MAX_ENTRIES)

#endif

#endif /* _NETDATA_COMMON_ */

22 changes: 14 additions & 8 deletions kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ LIBBPF_HEADERS = ../.local_libbpf
ARCH := $(shell uname -m | sed 's/x86_64/x86/')

EXTRA_CFLAGS += -fno-stack-protector
EXTRA_CFLAGS += -DCONFIG_CC_HAS_ASM_INLINE=0

LINUXINCLUDE += -I$(KERNELSOURCE)/arch/$(ARCH)/include/generated
LINUXINCLUDE += -I$(KERNELSOURCE)/arch/$(ARCH)/include/generated/uapi
Expand Down Expand Up @@ -114,30 +115,35 @@ libbpf:
cd $(LIBBPF)/src && /bin/bash ../../.dockerfiles/change_libbpf.sh $(VER_MAJOR) $(VER_MINOR) && $(MAKE) CC=$(CC_LIBBPF) CFLAGS="-fPIE" BUILD_STATIC_ONLY=1 DESTDIR=../../.local_libbpf INCLUDEDIR= LIBDIR= UAPIDIR= install \

%_kern.o: %_kern.c libbpf
if [ -w $(KERNELSOURCE)/include/generated/autoconf.h ]; then if [ "$(CURRENT_KERNEL)" -ge 328448 ]; then sed -i -e 's/\(#define CONFIG_CC_HAS_ASM_INLINE 1\)/\/\/\1/' $(KERNELSOURCE)/include/generated/autoconf.h; fi ; fi
$(CLANG) $(EXTRA_CFLAGS) -S -nostdinc $(LINUXINCLUDE) $(LLVM_INCLUDES) \
-D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \
-Wno-compare-distinct-pointer-types \
-Wno-gnu-variable-sized-type-not-at-end \
-Wno-tautological-compare \
-fno-asynchronous-unwind-tables \
-Wno-duplicate-decl-specifier \
-Wno-address-of-packed-member \
-Wno-macro-redefined \
-fno-asynchronous-unwind-tables \
-DNETDATASEL=0 \
-D__BPF_TRACING__ \
-D__TARGET_ARCH_$(ARCH) \
-include ../includes/netdata_asm_goto.h \
-O2 -g -emit-llvm -c $<
-O2 -g -emit-llvm $< -o $(<:.c=.ll)
$(LLC) -march=bpf -filetype=obj -o r$@ $(<:.c=.ll)
$(CLANG) $(EXTRA_CFLAGS) -S -nostdinc $(LINUXINCLUDE) $(LLVM_INCLUDES) \
-D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \
-Wno-compare-distinct-pointer-types \
-Wno-gnu-variable-sized-type-not-at-end \
-Wno-tautological-compare \
-fno-asynchronous-unwind-tables \
-Wno-compare-distinct-pointer-types \
-Wno-gnu-variable-sized-type-not-at-end \
-Wno-tautological-compare \
-Wno-duplicate-decl-specifier \
-Wno-address-of-packed-member \
-Wno-macro-redefined \
-fno-asynchronous-unwind-tables \
-DNETDATASEL=2 \
-D__BPF_TRACING__ \
-D__TARGET_ARCH_$(ARCH) \
-include ../includes/netdata_asm_goto.h \
-O2 -g -emit-llvm -c $<
-O2 -g -emit-llvm $< -o $(<:.c=.ll)
$(LLC) -march=bpf -filetype=obj -o p$@ $(<:.c=.ll)
/bin/bash rename_binaries.sh "$(VER_MAJOR)" "$(VER_MINOR)" "$@"

Expand Down
66 changes: 4 additions & 62 deletions kernel/btrfs_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,68 +25,10 @@
*
***********************************************************************************/

#if (LINUX_VERSION_CODE > KERNEL_VERSION(4,11,0))
struct {
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
__type(key, __u32);
__type(value, __u64);
__uint(max_entries, NETDATA_FS_MAX_ELEMENTS);
} tbl_btrfs SEC(".maps");

struct {
__uint(type, BPF_MAP_TYPE_HASH);
__type(key, __u32);
__type(value, __u64);
__uint(max_entries, 1);
} tbl_ext_addr SEC(".maps");

struct {
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0))
__uint(type, BPF_MAP_TYPE_HASH);
#else
__uint(type, BPF_MAP_TYPE_PERCPU_HASH);
#endif
__type(key, __u32);
__type(value, __u64);
__uint(max_entries, 4192);
} tmp_btrfs SEC(".maps");

struct {
__uint(type, BPF_MAP_TYPE_ARRAY);
__type(key, __u32);
__type(value, __u64);
__uint(max_entries, NETDATA_CONTROLLER_END);
} btrfs_ctrl SEC(".maps");
#else

struct bpf_map_def SEC("maps") tbl_btrfs = {
.type = BPF_MAP_TYPE_PERCPU_ARRAY,
.key_size = sizeof(__u32),
.value_size = sizeof(__u64),
.max_entries = NETDATA_FS_MAX_ELEMENTS
};

struct bpf_map_def SEC("maps") tbl_ext_addr = {
.type = BPF_MAP_TYPE_HASH,
.key_size = sizeof(__u32),
.value_size = sizeof(__u64),
.max_entries = 1
};

struct bpf_map_def SEC("maps") tmp_btrfs = {
.type = BPF_MAP_TYPE_HASH,
.key_size = sizeof(__u32),
.value_size = sizeof(__u64),
.max_entries = 4192
};

struct bpf_map_def SEC("maps") btrfs_ctrl = {
.type = BPF_MAP_TYPE_ARRAY,
.key_size = sizeof(__u32),
.value_size = sizeof(__u64),
.max_entries = NETDATA_CONTROLLER_END
};
#endif
NETDATA_BPF_PERCPU_ARRAY_DEF(tbl_btrfs, __u32, __u64, NETDATA_FS_MAX_ELEMENTS);
NETDATA_BPF_HASH_DEF(tbl_ext_addr, __u32, __u64, 1);
NETDATA_BPF_HASH_DEF(tmp_btrfs, __u32, __u64, 4192);
NETDATA_BPF_ARRAY_DEF(btrfs_ctrl, __u32, __u64, NETDATA_CONTROLLER_END);

/************************************************************************************
*
Expand Down
Loading