HaLVM и потоки

Я не совсем понимаю, что, например, HaLVM или подобные технологии делают с точки зрения потоков (ОС).

Я понимаю, что при компиляции кода с опцией -threaded многопоточная RTS Haskell будет использовать потоки ОС для перераспределения существующих потоков Haskell и, таким образом, избежать блокирующего поведения внешних вызовов. Теперь, когда вы используете HaLVM, вам, вероятно, не нужно делать никаких внешних вызовов. Однако мне интересно, как все это сочетается и сколько рабочих потоков выполняет HaLVM. Нет ли других ситуаций, когда отсутствие рабочих потоков ОС может привести к блокировке или иному нежелательному поведению?


person J Fritsch    schedule 15.01.2013    source источник


Ответы (1)


HaLVM использует однопоточную среду выполнения GHC.

Портирование HaLVM для использования многопоточной среды выполнения с поддержкой многоядерного Xen было бы интересным проектом.

person Don Stewart    schedule 15.01.2013
comment
Но какие нежелательные последствия имеет эта однопоточная модель? В каких ситуациях? - person J Fritsch; 15.01.2013
comment
Никто. Это просто не позволяет вам использовать более 1 ядра. Есть также небольшие семантические различия, связанные с блокировкой ввода-вывода. - person Don Stewart; 15.01.2013
comment
Спасибо, я предполагаю, что можно развернуть HaLVM на каждом ядре? - person J Fritsch; 15.01.2013
comment
Да, отдельные HALVM могут работать на каждом ядре, если вы того пожелаете. - person Thomas M. DuBuisson; 16.01.2013
comment
@ThomasM.DuBuisson Что они хотят сказать на слайде №4 slideshare.net/xen_com_mgr/ . Они хотят сказать, что исследовали только простую проблему или что HaLVM поддерживает тонкий граф вызовов? - person J Fritsch; 21.01.2013
comment
@JFritsch Слайд 4? Это кажется довольно четко изложенным, так что поправьте меня, если я смотрю не на тот слайд или не отвечаю на ваш вопрос. Микроядра зависят от множества отдельных серверных процессов, выполняющих IPC. Спроектировать их таким образом, чтобы не было циклических зависимостей, которые затрудняют или делают невозможным загрузку, нетривиально. HaLVM позволяет быстро реализовать прототипы, чтобы доказать (на примере), что конкретный дизайн серверов не имеет таких проблем. - person Thomas M. DuBuisson; 21.01.2013
comment
@ThomasM.DuBuisson В чем разница между микроядром и экзоядром? - person J Fritsch; 21.01.2013