amarao (amarao_san) wrote,
amarao
amarao_san

Category:

Войнушка приложений

Правила:

Два приложения запускаются в виртуалках (серверах?) и имеют связность только с арбитром (никакого интернета). Арбитр выступает в качестве tcp-relay (то есть пересоздаёт поток tcp в обе стороны). Он же контролирует валидность http.

Каждое приложение выставляет http-интерфейс и способно отправлять http-запросы. Приложения запускаются с квотой по CPU-time и memory. Время на старт приложения в cpu-quota не учитывается. После старта IO на диск или куда-либо, кроме арбитра (то есть противника) запрещено.

Приложение, вылетевшее за квоту своей памяти или процессора раньше конкурента, проигрывает.

Объектом борьбы являются страницы памяти фиксированной длины (4к), "раздающиеся" в начале. Приложения могут друг другу "постить" (post) страницу. Если противник успешно загрузил страницу, то он может удалить у себя эту страницу, если нет (например, не успел) - оставить. Приложение, которому успешно загрузили страницу, обязано её хранить (потеря засчитывается за проигрыш). Каждому приложению выдаётся в начале N страниц данных, а квота по памяти составляет величину между N и 2N.

Правила http: за один запрос можно передать только одну страницу, задержка между пакетами внутри tcp не может быть больше 10мс (кроме FIN/FIN2). Запрещено рвать http-соединение, делать невалидные ответы и т.д.

Лимита на число соединений нет, на воюющих приложениях и арбитре разрешены в качестве динамических все порты, кроме того, на котором слушает "принимающий", задержка больше 10мс на установку сесиии (частный случай правила для tcp) засчитывается за проигрыш.

Победитель обязан "показать" все оставшиеся у него страницы памяти - их отсутствие/изменение означает дисквалификацию.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 9 comments