Раунды чемпионата проходят на сайте Highload Cup в режиме онлайн.
Чтобы стать участником чемпионата, необходимо зарегистрироваться и активировать свой аккаунт. Задачи открываются для всех участников одновременно в момент начала раунда. Решения отправляют с помощью локально установленного docker-клиента в специальное хранилище. Решения проверяются автоматически системой CodeHub-CodeRunner, разработанной сотрудниками лаборатории Технопарка Mail.Ru Group.
Для победы в конкурсе необходимо выдать за время чемпионата лучшее решение по подготовленной для чемпионата метрике (об этом - в разделе "Как проверяются решения"). 6 лучших участников получат призы, и по доброй традиции все участники финала получат футболки с символикой чемпионата.
Расписание HLC 2018 | ||||
---|---|---|---|---|
Бета раунд | - | Декабрь, 13 19:00 | Декабрь, 21 19:00 | UTC/GMT+3 |
Отборочный раунд | - | Декабрь, 21 19:00 | Январь, 31 19:00 | UTC/GMT+3 |
Финальный раунд | - | Февраль, 1 19:00 | Февраль, 5 19:00 | UTC/GMT+3 |
Любой желающий может попробовать свои силы в отборочном раунде Russian Highload Cup.
К участникам финальной стадии турнира есть два требования:
Система проверки изначально создавалась для другого соревнования под названием Russian AI Cup и была доработана для проведения Highload соревнований. Внутри запускается Танк с движком phantom, который ведет обстрел в несколько потоков с линейно растущим профилем нагрузки (специфично для задачи). Перед началом обстрела у пользовательского решения есть несколько минут (точное время зависит от задачи), чтобы обработать данные из полученного JSON-файла. Корректная работа с этими данными - необходимое условие победы.
Ниже представлена схема серверных компонент.
Обстрела два - короткими и длинными данными.
Все решения запускаются как docker-контейнеры на одинаковых серверах со следующей конфигурацией:
Процессор: Intel Core i7 9xx 2.4 GHz (решению доступно 4 ядра).
Оперативная память: 2 GB RAM.
Жесткий диск: 10 GB HDD.
Бывает два типа проверки решения: экспресс-обстрел и рейтинговая проверка.
Доступен неограниченное число раз в сутки, и составляет по объему примерно 1/50 от рейтинговой проверки решения. Такая проверка является способом узнать, готово ли решение для рейтинговой проверки. Предполагается, что экспресс-обстрел занимает не более 7 минут.
По результатам рейтинговой проверки у вас есть возможность занимать места в лидерборде текущего чемпионата. Проводится она таким образом:
Перед обстрелом запланировано 10 минут ожидания для того чтобы решение участника могло проанализировать переданные тестовые данные и подготовиться к обстрелу.
180 секунд длится первая фаза с линейным профилем от 0 до 150 RPS.
Будет выпущено: integral (150/180x) dx from 0 to 180 = 13500 запросов
300 секунд длится вторая фаза с линейным профилем от 0 до 300 RPS
Будет выпущено: integral (300/300x) dx from 0 to 300 = 45000 запросов
60 секунд длится третья фаза с линейным профилем от 0 до 1000 RPS.
Будет выпущено: integral (1000/60x) dx from 0 to 60 = 15000 запросов
Валидация ответов ~2 минуты.
Анализ результатов на сайте ~2 минуты.
Всего обстрел длится порядка 25 минут (при отсутствии очереди)
Всего запросов в обстреле: 88500.
Решение участника является контейнером docker, который получен с помощью команды docker build. Максимальный размер контейнера на диске не должен превышать 5 Gb. Система проверки выполнит сначала docker pull и затем docker run. В случае успеха, начнется обстрел решения. Участник может использовать любые серверные технологии, языки программирования, фреймворки по своему усмотрению (C++, Java + Tomcat, Python + Django, Ruby + RoR, JavaScript + NodeJs, Haskell или что-то еще). Также и для хранения данных: MySQL, Redis, MongoDB, Memcached - всё, что получится запихнуть в docker :)
В результате обстрела получаются логи и метрики, которые затем будут показываться участникам в виде графиков на странице решения. Отдельно отслеживаются следующие метрики:
Основные метрики |
---|
Корректность ответа |
Время ответа на запрос |
Кол-во ответов в секунду |
Рейтинг решения считается следующим образом: мы берем время всех верных ответов, которые успел дать API во время обстрела. Прибавляем к этому штрафное время для каждого неправильного ответа или запроса, ответ на который мы не смогли получить (штрафное время всегда равно общему таймауту запроса). Участник, суммарное время которого окажется меньше прочих, оказывается выше в лидерборде и имеет шанс стать победителем чемпионата.
Жюри следят за соблюдением правил и честностью участников. Попытки хакнуть систему обстрела и получить доступ к конфиденциальным данным участников или неопубликованным данным соревнования будут пресекаться и могут караться вплоть до дисквалификации.
Вас предупредили!
Забыли пароль? Восстановление