DEV Community

Review Laptop
Review Laptop

Posted on • Edited on • Originally published at reviewlaptop.vn

Memory profiling: valgrind/heaptrack trên WSL2 vs native Linux

Memory profiling — valgrind/heaptrack on WSL2 vs native Linux

Khi debug bộ nhớ, tôi thường chọn valgrind memcheck hoặc heaptrack để đo leak và flame graph. Trên máy dev chạy Docker (xem ReviewLaptop để biết cấu hình RAM/SSD phù hợp), tôi hay so sánh WSL2 với native Linux vì overhead WSL2 ảnh hưởng đến thời gian chạy profiler và độ chính xác flame graph.

valgrind memcheck speed & heaptrack flame graph trên WSL2 vs native

Trên native Linux, valgrind --tool=memcheck thường chậm hơn chương trình gốc khoảng 10–30× tùy workload, và I/O đĩa (SSD Gen 4) giúp giảm bottleneck khi ghi log. Trên WSL2, do lớp ảo hóa nhân và chuyển ngữ hệ thống gọi, tôi thường thấy overhead thêm 5–15% so với native khi đo cùng lệnh.

Command copy được:

# WSL2 / Linux native
gcc -g -O0 main.c -o main
valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all ./main > valgrind.log 2>&1
Enter fullscreen mode Exit fullscreen mode

Với heaptrack:

# WSL2 / Linux native
gcc -g -O0 main.c -o main
heaptrack ./main
heaptrack_gui heaptrack.main.*.gz
Enter fullscreen mode Exit fullscreen mode

Kết quả so sánh (giá trị tham khảo chung theo dòng chip/RAM, không gán benchmark máy cụ thể):

  • valgrind memcheck speed: native ~15–25× slowdown; WSL2 ~18–30× slowdown.
  • heaptrack flame graph: native overhead ~2–4× CPU, I/O ghi trace ổn định trên SSD Gen 4; WSL2 thêm ~10–20% thời gian do chuyển ngữ syscall và filesystem \wsl$.

RAM cần thiết cho profiling & config .wslconfig

Profiling bộ nhớ nhân đôi/gấp ba dung lượng RAM so với chạy thường. Với stack Docker + IDE, tôi khuyến nghị tối thiểu 16GB RAM, và 32GB là an toàn nếu đồng thời mở IntelliJ/VS Code và chạy profiler.

Config .wslconfig để giới hạn RAM cho WSL2 (best practice chung):

[wsl2]
memory=16GB
swap=0
localhostForwarding=true
Enter fullscreen mode Exit fullscreen mode

Trên native Linux, tôi dùng cgroup/systemd để giới hạn bộ nhớ container profiler, tránh OOM khi ghi heaptrack trace. Tóm lại: WSL2 tiện cho workflow Windows + Docker, nhưng nếu bạn cần đo chính xác overhead và thời gian profiling, chạy native Linux (hoặc VM Linux với SSD Gen 4) sẽ cho kết quả flame graph sát thực tế hơn.

Bài viết này là bản tóm tắt kỹ thuật — canonical URL trỏ về bài gốc.

Top comments (0)