-
Notifications
You must be signed in to change notification settings - Fork 48
Настройки rts
Denis Gabidullin edited this page Mar 30, 2021
·
4 revisions
Runtime система, встроенная в любую программу на Haskell, достаточно мощна и хорошо конфигурируема. Однако по историческим причинам опции по умолчанию далеки от идеала, и зачастую простой их настройкой можно улучшить производительность в разы.
Все опции можно найти на лучшем ресурсе по Haskell.
Опции можно задавать следующими образом:
- при запуске программы через агрументы командной строки:
$ ./myprogram +RTS опции -RTS
- через переменную огружения GHCRTS:
GHCRTS=опции ./myprogram
- при компиляции, указав опцию
--with-rtsopts='опции'
Ниже приведен достаточно простой набор опций, который может существенно улучшить жизнь:
-
-A64m
- размер первого поколения (до мажорной сборки), чем больше - тем реже минорные GC, но тем больше время выполнения каждого минорного GC, так же увеличивается потребление памяти программой. Занимаемая память:Размер A*число
потоков. -
-qb0
- параллельная сборка c балансировкой, начиная с первого GC (не обязательно на современных GHC) -
-AL128m
- размер общей памяти для больших объектов, разделяется на все потоки. -
-qn[CPU_COUNT/2]
количество тредов, занимающихся сборкой, должно быть меньше или равно числу реальных CPU. -
-I0
- отключение idle GC.