Всем привет,
Есть система вычислений на TPL (Task) с сильным "ветвлением".
Все написано по "фен шую" с async и тд и мы в общем-то довольны.
Мы читаем парочку гигов с диска и по сети, исходя из данных (если данные вообще есть) и даем их дальше.
Имеем:
1. Много Task.ContinueWith.
2. Много временных объектов которые выбрасываются на след. шаге.
3. Почти нулевой gen3/LOH.
4. 3000+ тасков в сумме.
Все работает хорошо пока есть чем заняться.
Но, если делать "нечего", то мы получаем много мелких тасков и упираемся в 30-40% GC.
На данный момент есть идея включить
server GC или играться с
Latency Modes.
Резерв по памяти есть, но отключать GC полностью нельзя.
Может у кого есть другие идеи?