Skip to content

Latest commit

 

History

History
167 lines (94 loc) · 10.8 KB

Regulation.md

File metadata and controls

167 lines (94 loc) · 10.8 KB

ISUCON6 予選マニュアル

予選レギュレーションも併せてご確認ください。 http://isucon.net/archives/48396740.html

初期スコアについて

幾つかの初期実装は、ベンチマークはpassするものの、初期スコアが0になっています。これは不具合ではありません。

スケジュール

  • 10:00 競技開始
  • 18:00 競技終了
  • 以後主催者により結果チェックと追試

ISUCON6 予選ポータルサイト

予選進行は以下のポータルからベンチマーク走行のリクエスト・結果チェックを行って進行します。事前通知されているidとパスワードを用いてログインしてください。 このページは18時を過ぎると即座に閲覧不可能になります。ご注意ください。

http://isucon6-dummy.example.com/

また競技に使用した インスタンス名 を、競技時間のうちに必ずページ下部の「運営向け情報」から登録してください。有効なインスタンス名を登録できていない場合、競技後の追試がおこなえないため失格となります。

このページではベンチマーク走行の処理状況も確認できます。緑が走行中のベンチマークジョブを示し、灰色が待機中のジョブを示します。自チームのジョブには * マークが付きます。

ベンチマークが待機中もしくは実行中の間はリクエストは追加できません。

Getting Started

以下の順序で作業を開始してください。

1. インスタンスを起動

以下のdeplyボタンでリソースを起動してください。起動には数分程度の時間がかかります。

登録したMicrosoftアカウントでAzureにログインをおこない、Azure上の手順に従って、競技参加用のリソースグループ内で、サーバーを起動してください。

  • SSHPUBLICKEY: SSHログインに使用する公開鍵を登録してください。
  • VMNAME: インスタンス名を入力してください。デフォルトでは isucon6-qualifier になっていますので、そのままでも構いません。
  • テンプレートの内容は書き換えないでください

途中、ログイン用のSSHキーの登録が必要になりますが、 必ずRSAキーを使って ください。

2. 起動したインスタンスにログイン

起動後、プロビジョニングが始まります。10分程度で、プロビジョニングが終了すると再起動が実行され、 /home/isucon 以下にアプリケーションが配置されます。再起動後に、以下のアプリケーションの動作確認を行ってください。

手順1で登録した公開鍵でisuconユーザーでログインすることが可能です。

インスタンスの起動やプロビジョニングが終わらない場合、お手数ですが、再度インスタンスの起動からやり直してください。

3. アプリケーションの動作確認

起動したインスタンスのPublic IPアドレスにブラウザからアクセスするとログイン画面が表示されます。 ユーザはidとパスワードでログインしますが、データベースにデフォルトで登録されているユーザは全て、パスワードはアカウント名と同じです。例えば、以下のペアが使えます。

  • id: motemen
  • パスワード: motemen

4. 負荷走行

ベンチマーク走行は予選ポータル上からリクエストします。リクエストの際には対象IPアドレスの入力が必要です。

リクエストはキューイングされ、主催者が用意したベンチマーククラスタノードにより順次処理されます。 待ち時間が不公平に・長過ぎるようにならないよう適宜ノード数は調節します。

なおベンチマークは以下のように実施されます。

  1. 初期化処理の実行 /initialize (5秒以内)
  2. アプリケーション互換性チェックの走行 (適宜: 数秒〜数十秒、固定リクエスト数)
  3. 負荷走行 (60秒 - 2.の互換性チェックにかかった時間)

各ステップで失敗が見付かった場合にはその時点で停止します。ただし、互換性チェック中にタイムアウトした分に関しては、失敗とみなさず、それ以外の失敗がない場合には負荷走行ステップに移行します。

参考実装の切り替え方法

各言語実装は systemd で管理されています。基本的には systemctl stop/start ならびに systemctl enable/disable で制御します。

PHPの場合

systemd での切り替えのほか、nginxの設定変更が必要です。nginx.php.conf が置いてあるのでそれを使用してください。

ルール詳細

指定されたサーバー上のアプリケーションのチューニングをおこない、それに対するベンチマークのスコアで競技をおこないます。そのサーバー1台のみでアプリケーションの動作が可能であればどのような変更を加えても構いません。

ベンチマーカーとブラウザの挙動に差異がある場合、ベンチマーカーの挙動を正とします。また初期実装毎に若干の挙動の違いはありますが、ベンチマーカーに影響のない挙動に関しては仕様とします。

スコア計算

スコアは以下のルールで算出されます。

静的ファイル配信成功数x1 + 成功GETリクエスト数x5 + 成功POSTリクエスト数x10 - (サーバエラー(error)レスポンス数x50 + リクエスト失敗(exception)数x100 + 遅延POSTレスポンス数x200)

ベンチマーカーは一定秒数でタイムアウトします。特にPOSTリクエストは、3000ミリ秒(3秒)以内にレスポンスを返す必要があり、遅れたリクエストについては大きく減点されますのでご注意ください。

以下を満たした場合リクエストが成功したと判定し、得点が加算されます。

  • タイムアウトせずにレスポンスを返却する
  • HTTPステータスコードが想定と一致する
  • コンテンツの内容チェックを通過する

制約事項

以下の事項に抵触すると失格(fail)となり、点数が無効として扱われます。

  • GET /initialize へのレスポンスが5秒以内に戻らない場合
  • スコアが0点
  • アプリケーション互換性チェックに失敗した場合
  • 他、ベンチマークツールのチェッカが失敗を検出したケース

最初に呼ばれる初期化処理 /initialize は用意された環境内で、チェッカツールが要求する範囲の整合性を担保します。サーバサイドで処理の変更・データ構造の変更などを行う場合、この処理が行っている内容を漏れなく提供してください。またこの処理が5秒以上レスポンスを返さない場合、失格とします。

アプリケーションは全て、保存データを永続化する必要があります。つまり処理実施後に再起動が行われた場合、再起動前に行われた処理内容が再起動後に保存されている必要があります。

また、アプリケーションは、ブラウザ上での表示を初期状態と同様に保つ必要があります。

予選終了後に行われる主催者による確認作業(追試)においてこれらの点が確認されます。

リーダーボードの更新について

予選ポータル上のリーダーボードのスコアは、ラストの1時間は表示は更新されなくなり、自チームのスコアのみ確認が可能になります。

プロジェクト情報の登録、予選日終了後の作業

予選終了後の主催者による確認作業などのため、予選終了までに以下を必ず実施しておいてください。

  • 主催者のMicrosoftアカウントを予選参加に使用しているリソースグープに共同作成者として招待する
  • ポータル画面の「運営向け情報」からインスタンス名を登録しておく

時間内に登録作業が行われない場合には失格となりますのでご注意ください。

予選終了後は、競技用のリソースグループに対しては一切の操作を行わないでください。運営が追試に利用します。

予選参加日終了後、主催者からベンチマーク成績の追試、ならびにデータ永続化、画面表示に関するチェックが行われます。これは主催者が予選用プロジェクトに招待されているアカウントを経由して行います。 このため、チーム情報に登録したサーバインスタンスはそのまま残しておいてください(停止しても構いませんが削除しないでください)。また、当作業においては登録されたサーバインスタンス以外のリソースグループ内の任意のリソースを操作する可能性があります。

作業完了は18日(日曜)夜、もしくは19日(月曜)夜を予定しています。

http://isucon.net/ における予選の結果発表をもってこの保存期間を終了するものとします。それ以降参加者はAzure上のリソースグループを確認し、各自の責任でリソースの変更(削除等)をおこなってください。

予選通過

予選は以下のルールで通過者が決定します。

各チームの終了時スコアに基づき予選通過者を決定します。最後に提出したスコアがfailしていたチームは失格となります。

一般枠 (計15チーム)

  1. 予選各日の終了時スコアにおける上位3チーム
  2. 予選両日を通し、1の該当チームを除いた中での上位9チーム

学生枠 (10チーム)

  1. 予選両日を通し学生枠参加チーム内における上位10チーム

ただし、学生チームが一般枠の基準で通過した場合、学生枠はそのチームを含めずに10チームを選出するものとする。

その他

サポートは事前に連絡のあった idobata のチャンネルにて行いますが、基本的に、予選環境の構成・操作方法やベンチマークの処理内容については返答しません。 また以下のURLにこれまで返答された質問などがまとめられています。何かある時にはいちどご覧ください。

https://gist.github.com/941/1ba9b7f3e62f6cc8980e7a17db85f02d