Skip to content

Instantly share code, notes, and snippets.

@mirakui
Last active September 16, 2015 04:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mirakui/4a935053c272469ed349 to your computer and use it in GitHub Desktop.
Save mirakui/4a935053c272469ed349 to your computer and use it in GitHub Desktop.
ISUCON4 本選レギュレーション

ISUCON4 本選レギュレーション

当日マニュアル: http://bit.ly/isu4man

修正: 2014/11/08 14:26

採点の記述について、以下の修正を行いました。

-       - 負荷走行終了時、1つのスロット内の全ての広告が配信されていた場合、そのスロットの広告の impression 得点が 5 倍になる(公平性ボーナス)。
+       - 負荷走行終了時、1つのスロット内の全ての広告が配信されていた場合、そのスロットにおける広告の表示回数の5倍が得点に加算される(公平性ボーナス)。

サーバ事項

  • 高速化対象のアプリケーション(以下、単にアプリケーションと呼ぶ)は、主催者によって各チームごとに3台ずつ用意されたサーバのみで動作しなければならない。
  • 3台すべてを利用してもよいし、しなくてもよい。
  • 負荷走行時、スコアに直接影響を与えるような外部サービスとの通信をしてはならない。例えば、競技者が別途用意したストレージを利用する行為は禁止とする。
  • 外部のメトリクス計測サービス(NewRelic, Datadog, Mackerel 等)の利用は自由とする。
  • 主催者による審判やメンテナンスを可能にするため、ファイルシステムの /root/ 以下のファイルや sshd の設定を変更しないこと。

ソフトウェア事項

  • アプリケーションは、サーバを再起動したあと、自動的に正常に動作する状態にならなければならない。
  • 各サーバにおけるソフトウェアの入れ替え、設定ファイルの変更、アプリケーションの再実装などの変更はすべて許可する。
  • アプリケーションを参考実装から書き換える際、基本的に、ベンチマークサーバが失敗として判定するもの以外の変更を許可する。
  • ベンチマークサーバは、実際のユーザが広告を表示する際の挙動を模倣する。競技者は、テストページ(/index.html)の「View test」で使われている /javascripts/isuad.js が、実際の広告表示に利用されていると仮定してよい。ベンチマークサーバは、この isuad.js の挙動を模倣してアクセスを行う。
  • アップロードされた動画ファイルは画質・ファイルサイズなどを変更せず、そのまま配信しなければならない。
  • 広告選択アルゴリズムの変更を許可する。ただし変更によって広告選択に偏りが生じた場合、後述する「公平性ボーナス」が得られにくくなることがあるので注意されたい。

負荷走行と採点

競技時間中、競技者は全チーム共有のベンチマークサーバに、アプリケーションに対する負荷走行を依頼することができる。

ベンチマークサーバは、アプリケーションに負荷走行を行い、スコアを算出する。算出されたスコアはポータルに送信され、他チームと比較することができる。

なお、スコアがポータルに送信されるのは remote オプションで共有のベンチマークサーバを利用した場合のみである。 bench オプションはあくまで動作確認のためのもので、スコアはポータルに送信されない。

ベンチマークサーバによる採点配分は以下のとおりとする。

  • 広告主によって広告の入稿が成功する … 3 点
  • 入稿された広告動画ファイルが配信される(impression) … 0.001 点
  • 入稿時に指定した destination URLに1アクセスが発生する(click) … 1 点
    • 負荷走行終了時、1つのスロット内の全ての広告が配信されていた場合、そのスロットにおける広告の表示回数の5倍が得点に加算される(公平性ボーナス)。

負荷走行時のエラー

負荷走行時にエラーが出力されることがある。エラーには3種類あり、それぞれ異なったペナルティが生じる。

  • NOTICE
    • 1度発生するたびに -0.001 点
  • ERROR
    • 1度発生するたびに -1 点
    • このエラーの割合が全エラー数のうち 25% を超えていた場合、スコアは 0 点となり、ポータルには送信されない。
  • FATAL
    • このエラーが1度でも発生した場合、スコアは 0 点となり、ポータルには送信されない。例えば、レポート系のレスポンスの内容が誤っていた場合には FATAL となる。

benchmarker 起動オプションの提出

競技時間終了時、主催者からの指示に従い、競技者は各自の「1号機」サーバに /home/isucon/finish.txt というファイルを設置し、 benchmarker の起動オプションを記載すること。

記載する内容の例として、

./benchmarker remote --hosts xx.xx.xx.xx1,xx.xx.xx.xx2 --workload 2

このような起動オプションを提出する場合には、 /home/isucon/finish.txt

--hosts xx.xx.xx.xx1,xx.xx.xx.xx2 --workload 2

と書くこと。

主催者による最終スコアの算出

最終スコアは、競技時間終了後、主催者によって計測するものとする。その際の手順を以下に定める。

  1. 競技時間終了後、主催者は全チームの全サーバを再起動する。
  2. 主催者は、1チームずつ、それぞれ1分間の負荷走行を指定された起動オプションで実行する。このときのスコアを最終スコアとする。
  3. もし1度目の負荷走行で失敗した場合、サーバの再起動と負荷走行をもう1度だけ実行する。2度目の負荷走行が成功した場合はそのスコアを最終スコアとする。
  4. 2度目の負荷走行でも失敗した場合、失格とする。

なお、最終スコアの計測時、主催者は以下の事項に従うものとする。

  • 1度目および2度目の負荷走行は、競技時間中に提出された最後のスコアが低いチームから順に、1チームずつ実行する。
  • 主催者は、最終スコア算出後、各サーバを再起動し、 /me/report および /me/final_report を実行する場合がある。このときに、再起動以前と同じレスポンスが得られない場合、失格とする。

ベンチマークサーバの修正

競技時間中および競技時間終了後、ベンチマークサーバにおいて万が一競技運営に著しい支障をきたす問題が発見された場合、主催者は競技者に周知したうえで、ベンチマークサーバを一時的に停止したり、負荷走行の仕様を変更することがある。

レギュレーションの修正

本レギュレーションは、競技の円滑かつ健全な運営を目的として、競技時間中において競技者に周知のうえ変更されることがある。

禁止事項

他チームへの妨害など、競技の円滑かつ健全な運営を妨げる全ての行為を禁止する。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment