How is the HighLoad Cup arranged?

Championship rounds take place on the Highload Cup website online.

To become a participant in the championship, you must register and activate your account. Tasks are open to all participants simultaneously at the time of the start of the round. Solutions are sent using a locally installed docker client to a special storage. Solutions are checked automatically by the CodeHub-CodeRunner system developed by the Technopark Mail.Ru Group laboratory staff.

In order to win the competition, it is necessary to give out the best decision on the metric prepared for the championship (during the championship, see the section “How decisions are checked”). 6 best participants will receive prizes, and in good tradition, the all users from the final round will get T-shirts with the symbols of the championship.

Schedule of HLC 2018
 Beta Round - from December, 13 19:00 to December, 21 19:00 UTC/GMT+3
 Qualifying Round - from December, 21 19:00 to January, 31 19:00 UTC/GMT+3
 Final Round - from February, 1 19:00 to February, 5 19:00 UTC/GMT+3

Who is involved?

Anyone can try their hand in the qualifying round of Russian Highload Cup.
There are two requirements for participants in the final stage of the tournament:

  • At the time of the final, the participant must be at least 18 years old;
  • Participants may not be employees or close relatives of Mail.ru Group employees.

 


How is the shelling system arranged?

The verification system was originally created for a specific site called the Russian AI Cup and was refined for highload competitions. Inside, a Tank with a phantom engine is launched, which conducts shelling in several streams with linearly growing load profiles (specific to the task). Before the shelling starts, the user solution has a few minutes (the exact time depends on the task) to process the data from the closing of the JSON file. Correct work with this data is a necessary condition for victory.

Below is a diagram of server components.

 

 

There are two shelling stages — with short and long data.


What resources are given to the participant?

All solutions run as docker containers on identical servers with the following configuration:

Processor: Intel Core i7 9xx 2.4 GHz (solution has 4 cores).
RAM: 2 GB RAM.
Hard disk: 10 GB HDD.


I’ve sent the solution, but how long should I wait?

There are two types of solution verification: rapid shelling and rating verification.

 

Express shelling

 

Available an unlimited number of times per day, and is approximately 1/50 of the rating verification of the solution. This check is a way to find out if the solution is ready for a rating check. It is assumed that the rapid shelling takes no more than 7 minutes.

 

Rating check

 

According to the results of the rating check, you have the opportunity to occupy places in the leaderboard of the current championship. It is conducted in this way:

Before the shelling, 10 minutes of waiting are planned so that the participant’s decision can analyze the transmitted test data and prepare for the shelling.

180 seconds the first phase lasts with a linear profile from 0 to 150 RPS.
Will be released: integral (150 / 180x) dx from 0 to 180 = 13500 requests

300 seconds second phase lasts with a linear profile from 0 to 300 RPS
Will be released: integral (300 / 300x) dx from 0 to 300 = 45000 requests

60 seconds the third phase lasts with a linear profile from 0 to 1000 RPS.
Will be released: integral (1000 / 60x) dx from 0 to 60 = 30000 requests

Validation of responses ~ 2 minutes.
Analysis of the results on the site ~ 2 minutes.

Total shelling lasts about 25 minutes (in the absence of a queue)

Total queries in the shelling: 88500.


How are solutions checked?

The participant's solution is the docker container, which was obtained using the docker build command. The maximum size of the container on the disk should not exceed 5 GB. The verification system will first execute docker pull and then docker run. If successful, shelling will begin. A participant can use any server technologies, programming languages, frameworks at his own discretion (C++, Java + Tomcat, Python + Django, Ruby + RoR, JavaScript + NodeJs, Haskell or something else). Also for data storage: MySQL, Redis, MongoDB, Memcached - everything you can get into Docker :)

As a result of the shelling, logs and metrics are obtained, which will then be shown to participants in the form of graphs on the decision page. The following metrics are tracked separately:

Basic metrics
Correct answer
Request response time
Number of responses per second

The rating of the solution will be as follows: we take the time of all the correct responses that the API managed to give during the shelling. We add to this random time for each incorrect response or request, the answer to which we could not get (the penalty time is always equal to the total timeout of the request). The participant, the total time that costs less than others, is higher in leadership and has a chance to become the winner of the championship.


What does the jury do?

The jury enforces the rules and the integrity of the participants. Attempts to hack the shelling system and gain access to the participants' confidential data or unpublished competition data will be stopped and can be punished up to disqualification.
You have been warned!

Announcement of the competition