Настройки rts - ruHaskell/ruhaskell GitHub Wiki
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.