Serve.cfg:global:enable remote cache

From EjudgeWiki
Revision as of 22:21, 10 August 2023 by Cher (talk | contribs) (...)

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Глобальные конфигурационные параметры/enable_remote_cache

Типичный путь поступившего на тестирование файла выглядит следующим образом:

  • исходный файл передается через каталоги обмена от ej-contests к ej-compile. Если компоненты находятся на разных хостах, файл копируется по сети.
  • после компиляции скомпилированный файл передается через каталоги обмена от ej-compile к ej-contests. Если компоненты находятся на разных хостах, файл копируется по сети.
  • скомпилированный файл передается через каталоги обмена от ej-contests к ej-super-run. Если компоненты находятся на разных хостах, файл копируется по сети.

Размер скомпилированного файла может быть весьма большим (несколько мегабайт), например, для программ на kotlin или go, и копирование исполняемого файла по сети туда и обратно может потребовать заметного времени, сравнимого со временем тестирования.

В случае, когда и компонент компиляции ej-compile, и компонент тестирования ej-super-run выполняются на одном и том же хосте, отличном от хоста ej-contests, и только на этом хосте, передавать результат компиляции по сети на сервер ej-contests и обратно не имеет смысла.

В этом случае можно использовать локальное кеширование результатов компиляции. Компонент ej-compile не скопирует файл на сервер, а положит его в локальный каталог, из которого он будет забран компонентом ej-super-run.

Для включения локального кеширования глобальная конфигурационная переменная enable_remote_cache должна быть установлена в положительное значение. Кроме того, при запуске компонентов компиляции и тестирования ejudge должна быть указана опция --local-cache.

Пример:

enable_remote_cache

Поддерживается начиная с версии 3.11.0.