post
때로는 성급한 최적화도 재미있다 (2025)
연결성 모니터링 시스템의 ICMP Echo Request 기록 구조체를 줄이는 과정에서 링 버퍼 메모리 사용량이 12KiB에서 4KiB로 감소함 sent_ns와 received_ns를 모두 저장하지 않고 수신 후에는 지연 시간만 남기도록 공용체를 쓰자 배열 크기가 8KiB로 줄어듦
한 줄 요약
연결성 모니터링 시스템의 ICMP Echo Request 기록 구조체를 줄이는 과정에서 링 버퍼 메모리 사용량이 12KiB에서 4KiB로 감소함
핵심 내용
연결성 모니터링 시스템의 ICMP Echo Request 기록 구조체를 줄이는 과정에서 링 버퍼 메모리 사용량이 12KiB에서 4KiB로 감소함
sentns와 receivedns를 모두 저장하지 않고 수신 후에는 지연 시간만 남기도록 공용체를 쓰자 배열 크기가 8KiB로 줄어듦
나노초 정밀도 대신 100마이크로초 단위를 쓰고 received를 비트필드로 바꿨지만, 구조체 패딩 때문에 추가 절감은 발생하지 않음
소스 주소 대신 ICMP identifier의 일부 의미를 4비트 카운터로 대체하면서 구조체가 8바이트로 줄고 512개 배열이 4KiB가 됨
애플리케이션은 메모리 제약이 없었기 때문에 실용적 필요는 없었지만, 필드 배치와 비트 접근 비용까지 따지는 최적화 실험이 됨
왜 중요한가
sentns와 receivedns를 모두 저장하지 않고 수신 후에는 지연 시간만 남기도록 공용체를 쓰자 배열 크기가 8KiB로 줄어듦 나노초 정밀도 대신 100마이크로초 단위를 쓰고 received를 비트필드로 바꿨지만, 구조체 패딩 때문에 추가 절감은 발생하지 않음 소스 주소 대신 ICMP identifier의 일부 의미를 4비트 카운터로 대체하면서 구조체가 8바이트로 줄고 512개 배열이 4KiB가 됨
참조한 것 · 가져온 것
원문: https://invlpg.com/posts/2025-06-19-premature-optimization.html
GeekNews: https://news.hada.io/topic?id=30323