Difference between revisions of "Параллельная компиляция"
Line 34: | Line 34: | ||
ВНИМАНИЕ. На многоядерной машине узким местом скорее всего окажется дисковая подсистема. Если будет указан большой параллелизм компиляции и выполнения может оказаться так, | ВНИМАНИЕ. На многоядерной машине узким местом скорее всего окажется дисковая подсистема. Если будет указан большой параллелизм компиляции и выполнения может оказаться так, | ||
то дисковая подсистема не справится с потоком запросов. В этом случае в списке процессов будет много процессов, находящихся в состоянии 'D' (uninterruptible sleep). | то дисковая подсистема не справится с потоком запросов. В этом случае в списке процессов будет много процессов, находящихся в состоянии 'D' (uninterruptible sleep). | ||
+ | |||
+ | Параллельная компиляция поддерживается с версии [[изменения в версии 3.6.1|3.6.1]]. |
Latest revision as of 12:00, 4 April 2017
Навигация: Главная страница/Система ejudge/Использование/Параллельная компиляция
Компиляция решений выполняется программой ej-compile. По умолчанию эта программа работает в одиночном режиме, то есть на одном хосте можно запустить только один экземпляр программы. Для работы в параллельном режиме необходимо указать опцию -p в командной строке программы. В этом случае не будет выполняться проверка на то, что ej-compile уже запущена. Только в этом случае параллельно работающие экземпляры программы не будут конфликтовать между собой.
Можно настроить конфигурационные файлы таким образом, чтобы нужное число экземпляров программы запускалось при старте всей системы ejudge с помощью ejudge-control.
Для настройки автоматического запуска необходимого количества экземпляров программы ej-compile при старте ejudge в конфигурационный файл ejudge.xml необходимо добавить следующий фрагмент.
<config> ... <hosts_options> <host name="IP-ADDRESS"> <option name="compile_parallelism" value="2" /> </host> </hosts_options> ... </config>
Фрагмент, как показано, добавляется внутрь корневого элемента <config>. Вместо IP-ADDRESS необходимо подставить IP-адрес сервера. В значение атрибута value подставляется требуемое количество параллельно запускаемых экземпляров ej-compile. Если используется и настройка parallelism, и настройка compile_parallelism, обе они должны находиться в одном элементе:
<config> ... <hosts_options> <host name="IP-ADDRESS"> <option name="compile_parallelism" value="2" /> <option name="parallelism" value="4" /> </host> </hosts_options> ... </config>
ВНИМАНИЕ. На многоядерной машине узким местом скорее всего окажется дисковая подсистема. Если будет указан большой параллелизм компиляции и выполнения может оказаться так, то дисковая подсистема не справится с потоком запросов. В этом случае в списке процессов будет много процессов, находящихся в состоянии 'D' (uninterruptible sleep).
Параллельная компиляция поддерживается с версии 3.6.1.