So sánh · Server GC và Workstation GC
Cùng một API rảnh, hai cách GC giữ bộ nhớ
Server GC và Workstation GC trong container
Server GC tạo một heap cho mỗi core và giữ anon 822 MB trên trần 1 GiB; Workstation GC dùng một heap chung và anon còn khoảng 288 MB.
SERVER GC · MẶC ĐỊNH ASP.NET CORE
Một heap cho mỗi CPU core
WORKSTATION GC · DOTNET_gcServer=0
Một heap dùng chung
Core 0
Core 1
Core 2
Core 3
Core 0
Core 1
Core 2
Core 3
Heap 0
+ GC thread
Heap 1
+ GC thread
Heap 2
+ GC thread
Heap 3
+ GC thread
Một heap dùng chung
DOTNET_GCConserveMemory=5
· Cho heap phình to để giảm số lần GC
· Rất ít trả bộ nhớ về hệ điều hành
· GC thường xuyên hơn, mỗi lần nhẹ hơn
· Trả bộ nhớ về hệ điều hành sớm hơn
TRẦN CGROUP 1 GiB
TRẦN CGROUP 1.5 GiB
HEAP LIMIT 75% · 768 MB
anon 822 MB · bộ nhớ thật, không thu hồi được
file 161 MB · page cache, kernel tự nhả
docker stats: 987.6 MiB / 1 GiB · 96%
anon ≈ 288 MB sau 30 phút · giảm 65%
trần nâng lên 1.5 GiB chỉ để làm đệm
docker stats: 469.5 MiB / 1.5 GiB · 31%
CHÚ GIẢI
anon trước khi sửa
page cache
anon sau khi sửa
GC heap hard limit
© tiennhm