first commit
This commit is contained in:
commit
01d7cb1a80
34 files changed
+5723
No files matched your search
@@ -0,0 +1,134 @@
|
||||
# ─────────────────────────────────────────────────────────
|
||||
# Makefile — Compila o programa eBPF sockmap
|
||||
#
|
||||
# Comandos:
|
||||
# make → Compila tudo
|
||||
# make vmlinux → Gera vmlinux.h do kernel atual
|
||||
# make bpf → Compila o programa BPF
|
||||
# make clean → Limpa arquivos compilados
|
||||
# make docker-up → Sobe os containers Docker
|
||||
# make docker-down→ Para os containers
|
||||
# make load → Carrega o eBPF sockmap
|
||||
# make unload → Remove o eBPF sockmap
|
||||
# make status → Mostra status do sockmap
|
||||
# make benchmark → Roda benchmark de latência
|
||||
# ─────────────────────────────────────────────────────────
|
||||
|
||||
# Compilador e flags
|
||||
CLANG ?= clang
|
||||
BPFTOOL ?= bpftool
|
||||
ARCH := $(shell uname -m | sed 's/x86_64/x86/' | sed 's/aarch64/arm64/')
|
||||
|
||||
# Diretórios
|
||||
BPF_SRC := bpf
|
||||
BUILD_DIR := build
|
||||
LIBBPF_INC := /usr/include
|
||||
|
||||
# Arquivos
|
||||
BPF_PROG := $(BPF_SRC)/sockmap.bpf.c
|
||||
BPF_OBJ := $(BUILD_DIR)/sockmap.bpf.o
|
||||
VMLINUX_H := $(BPF_SRC)/vmlinux.h
|
||||
|
||||
# Flags de compilação BPF
|
||||
BPF_CFLAGS := -O2 -g \
|
||||
-target bpf \
|
||||
-D__TARGET_ARCH_$(ARCH) \
|
||||
-I$(BPF_SRC) \
|
||||
-I$(LIBBPF_INC) \
|
||||
-Wall \
|
||||
-Wno-unused-value \
|
||||
-Wno-pointer-sign \
|
||||
-Wno-compare-distinct-pointer-types
|
||||
|
||||
# ─── Alvos principais ───
|
||||
.PHONY: all vmlinux bpf clean docker-up docker-down load unload status benchmark help
|
||||
|
||||
all: vmlinux bpf
|
||||
@echo ""
|
||||
@echo "✅ Compilação concluída! Objeto BPF em: $(BPF_OBJ)"
|
||||
@echo ""
|
||||
@echo "Próximos passos:"
|
||||
@echo " 1. make docker-up → Subir os containers"
|
||||
@echo " 2. make load → Ativar o eBPF sockmap"
|
||||
@echo " 3. make benchmark → Testar a latência"
|
||||
|
||||
# ─── Gerar vmlinux.h ───
|
||||
vmlinux: $(VMLINUX_H)
|
||||
|
||||
$(VMLINUX_H):
|
||||
@echo "🔧 Gerando vmlinux.h a partir do kernel $(shell uname -r)..."
|
||||
@mkdir -p $(BPF_SRC)
|
||||
$(BPFTOOL) btf dump file /sys/kernel/btf/vmlinux format c > $(VMLINUX_H)
|
||||
@echo "✅ vmlinux.h gerado com sucesso!"
|
||||
|
||||
# ─── Compilar programa BPF ───
|
||||
bpf: $(BPF_OBJ)
|
||||
|
||||
$(BPF_OBJ): $(BPF_PROG) $(VMLINUX_H)
|
||||
@echo "🔧 Compilando programa eBPF..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
$(CLANG) $(BPF_CFLAGS) -c $(BPF_PROG) -o $(BPF_OBJ)
|
||||
@echo "✅ Programa BPF compilado: $(BPF_OBJ)"
|
||||
@echo ""
|
||||
@echo "📋 Programas e mapas no objeto:"
|
||||
@$(BPFTOOL) prog show --bpffs 2>/dev/null || true
|
||||
@echo ""
|
||||
|
||||
# ─── Docker ───
|
||||
docker-up:
|
||||
@echo "🐳 Subindo containers Docker..."
|
||||
cd docker && docker compose up -d --build
|
||||
@echo ""
|
||||
@echo "✅ Containers rodando! Acesse http://localhost:8080"
|
||||
|
||||
docker-down:
|
||||
@echo "🐳 Parando containers Docker..."
|
||||
cd docker && docker compose down -v
|
||||
@echo "✅ Containers parados."
|
||||
|
||||
docker-logs:
|
||||
cd docker && docker compose logs -f
|
||||
|
||||
# ─── eBPF Sockmap ───
|
||||
load:
|
||||
@echo "⚡ Carregando eBPF sockmap..."
|
||||
sudo bash scripts/loader.sh load
|
||||
|
||||
unload:
|
||||
@echo "⚡ Removendo eBPF sockmap..."
|
||||
sudo bash scripts/loader.sh unload
|
||||
|
||||
status:
|
||||
@sudo bash scripts/loader.sh status
|
||||
|
||||
# ─── Benchmark ───
|
||||
benchmark:
|
||||
@echo "📊 Rodando benchmark de latência..."
|
||||
@echo " Acesse: http://localhost:8080/benchmark"
|
||||
@curl -s http://localhost:8080/benchmark | python3 -m json.tool 2>/dev/null || \
|
||||
curl -s http://localhost:8080/benchmark
|
||||
@echo ""
|
||||
|
||||
# ─── Limpeza ───
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
rm -f $(VMLINUX_H)
|
||||
@echo "🧹 Limpeza concluída."
|
||||
|
||||
# ─── Ajuda ───
|
||||
help:
|
||||
@echo "eBPF Sockmap — Acelerador de comunicação entre containers Docker"
|
||||
@echo ""
|
||||
@echo "Comandos disponíveis:"
|
||||
@echo " make Compila o programa eBPF (vmlinux.h + .o)"
|
||||
@echo " make vmlinux Gera apenas o vmlinux.h"
|
||||
@echo " make bpf Compila apenas o programa BPF"
|
||||
@echo " make docker-up Sobe os containers (nginx + node + mysql + postgres)"
|
||||
@echo " make docker-down Para e remove os containers"
|
||||
@echo " make docker-logs Mostra logs dos containers"
|
||||
@echo " make load Carrega e ativa o eBPF sockmap"
|
||||
@echo " make unload Remove o eBPF sockmap"
|
||||
@echo " make status Mostra status e estatísticas"
|
||||
@echo " make benchmark Roda teste de latência"
|
||||
@echo " make clean Limpa arquivos compilados"
|
||||
@echo ""
|
||||
Reference in new issue
Block a user