운영 메모리 누수 진단 — long-running 프로세스의 진단 전략
장기 실행 서비스의 누수 추적. /proc 모니터링, cgroup memory.max, OOM 회피.
19개의 포스트
장기 실행 서비스의 누수 추적. /proc 모니터링, cgroup memory.max, OOM 회피.
별 라이브러리 없이 glibc 만으로 메모리 디버깅. mtrace, mcheck, MALLOC_CHECK_.
표준 glibc malloc 대체 + 내장 profiler. pprof로 시각화.
Valgrind보다 빠른 heap profiler. KDE 출신, 운영 환경에도 적용 가능.
프로세스 메모리의 실제 정체. VSS vs RSS vs PSS, /proc/[pid]/{status,smaps}.
print 만으로 부족한 자리들 — x/memory examine, ptype, STL 컨테이너, pretty printer.
ESP32-C3 메모리 구조 — 400KB SRAM, 4MB SPI flash, MMU. 파일시스템 선택.
CXL이 푸는 문제, 세대별 진화, 4.0의 핵심 변경 (128 GT/s·Bundled Port).
HBM과 GDDR의 분기점 — bandwidth·capacity·cost의 트레이드오프와 시장 분할.
동적 할당의 한계와 fragmentation, WCET-bounded allocator, safety-critical 기준을 살펴봅니다.
MEMORY와 SECTIONS — Flash와 RAM에 C++ 객체와 코드를 정확한 위치에 두는 법.
STREAM benchmark (Copy·Scale·Add·Triad). Roofline. PMU BUS_ACCESS · DDR bandwidth.
Heap canary·MPU guard·data watchpoint·desktop ASan — 임베디드 메모리 오염을 잡는 도구를 정리합니다.
Stack 패턴 채우기로 high-water mark, overflow hook, canary, MPU guard region, RTOS task stack 분석을 한 자리에 정리합니다.
NUMA node topology, numactl 운영, libnuma API, HBM/CXL tier, 자동차 ECU의 mini-NUMA까지 정리합니다.
Natural alignment, struct padding 규칙, packed의 unaligned access penalty, offsetof와 alignof 사용을 정리합니다.
Malloc의 fragmentation과 비결정성, pool/arena/slab 대안, FreeRTOS heap_4/5와 정적 대안까지 임베디드의 메모리 전략을 정리합니다.
DDR3/4 초기화 sequence. ZQ calibration, write leveling, walking bit test, JESD79 사양.
Stack/heap/static — 누가 어디 사는가.