Skip to content

Instantly share code, notes, and snippets.

@acidlemon
Last active April 16, 2023 03:56
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acidlemon/2c7d4e2e5b4e24007e39 to your computer and use it in GitHub Desktop.
Save acidlemon/2c7d4e2e5b4e24007e39 to your computer and use it in GitHub Desktop.
ISUCON 2013 予選レギュレーション

ISUCON 2013 予選レギュレーション

参加者

予選参加者 (以下参加者) はチームでの登録とし、チームは2人もしくは3人での構成とする。

参加者は予選の第1日目、2日目のいずれかのみに参加することができる。

参加者は「一般枠」「学生枠」のいずれかに登録すること。

  • 「学生枠」参加メンバー全員が学生・生徒であること (年齢は問わない)
  • 「一般枠」学生枠以外の参加者

学生枠の要件に該当する参加者でも、一般枠に登録することができる。

参加登録

参加者は、代表者1名が管理ページ https://isucon2013.kayac.com/(注: 現在は閉鎖済み) から twitter もしくは Github アカウントで認証してログインし、必要な情報の登録を行うこと。

登録受け付けは 2013年10月4日 12:00 までとする。

競技時間

  • 予選第1日 2013年10月5日 10:00〜18:00
  • 予選第2日 2013年10月6日 10:00〜18:00

禁止事項

以下の事項は特別に禁止する。

  • 他のチームへの妨害と主催者がみなす全ての行為

サーバ事項

参加者は各自が用意した Amazon Web Service (以下AWS) アカウントを利用し、主催者が指定した Amazon Machine Image (以下AMI) から起動したインスタンスを1台利用する。

使用するインスタンスタイプは m3.xlarge (EBS最適化なし) 1インスタンスとする。他のインスタンスタイプを使用した場合の結果は無効とする。

参加者は 2013年10月7日 10:00 までに競技時間中に使用したインスタンスから AMI を作成し、AMI を主催者の AWS アカウントに共有すること。

AWSの利用料は参加者の負担とする。

ソフトウェア事項

コンテストにあたり、参加者は与えられたソフトウェア、もしくは自分で競技時間内に実装したソフトウェアを用いる。

高速化対象のソフトウェアとして主催者から Perl, Ruby, Python, PHP, Node.js, Go によるWebアプリケーションが与えられる。ただし各々の性能が一致することを主催者は保証しない。どれをベースに用いてもよいし、独自で実装したものを用いてもよい。

競技における高速化対象のアプリケーションとして与えられたアプリケーションから、以下の機能は変更しないこと。

  • アクセス先のURI (IPアドレスおよびパス(複数))
  • レスポンス(HTML)のDOM構造
  • ブラウザで表示した際の見た目(問題ない範囲で)
  • 画像類の内容
  • Javascript/CSSの実行される結果

サーバにおけるソフトウェアの入れ替え、設定の変更、アプリケーションコードの変更および入れ替えなどは一切禁止しない。

起動したインスタンス以外の外部リソースを利用する行為 (他のインスタンスに処理を委譲するなど) は禁止する。

許可される事項には、例として以下のような作業が含まれる。

  • DBスキーマの変更やインデックスの作成・削除
  • キャッシュ機構の追加、jobqueue機構の追加による遅延書き込み
  • 他の言語による再実装

ただしコンテスト進行用のメンテナンスコマンドが正常に動作するよう互換性を保つこと。 各サーバの設定およびデータ構造は任意のタイミングでのサーバ再起動に耐えること。 サーバ再起動後にすべてのアプリケーションコードが正常動作する状態を維持すること。 ベンチマーク実行時にアプリケーションに書き込まれたデータは、再起動後にも取得できること。

採点

採点は採点条件(後述)をクリアした参加者の間で、性能値(後述)の高さを競うものとする。

予選用に提供された AMI にインストールされている性能値計測用ツール(以下計測ツール) を参加者が任意のタイミングで実行することで、性能値が計測され、主催者の用意した管理サーバに送信される。

採点条件として、以下の各チェックの検査を通過するものとする。

  • 負荷走行中、POSTしたデータ(コメント)が、POSTへのHTTPレスポンスを返してから1秒以内に関連するURI GETのレスポンスデータに反映されていること
  • レスポンスHTMLのDOM構造が変化していないこと
  • ブラウザから対象アプリケーションにアクセスした結果、ページ上の表示および各種動作が正常であること

性能値として、以下の指標を用いる。

  • 計測ツールの実行時間は1分間
  • 計測時間内の HTTP GET/POST リクエストの成功数をベースにする。ただしすべてのリクエスト成功について同一の配点とは限らない
  • エラー(ステータスコードが200および300番台以外のもの、規定の時間内に計測ツールがレスポンスを得られなかったもの) の回数をもとにベースのスコアから減点される

本選出場チームの選出

競技時間中に計測され、管理サーバに登録された性能値の最大値によって、本選出場チームが選出される。

一般枠

  • 予選第1日の上位5チーム、予選第2日の上位5チームが本選進出
  • それ以外のチームについては、予選両日を通して上位10チームが本選進出

学生枠

  • 予選両日を通して上位 3チームが本選進出

ただし、競技終了後に参加者から提出された AMI を元に主催者が実行した環境において、競技時間中に計測された性能値に近い値が再現できないチームは失格とすることがある。

情報の管理について

参加者は、予選第2日の競技終了時刻までの間、予選出題内容、計測ツールの計測方法について知り得た情報を自チーム以外の参加者に共有してはならない。ただし主催者が公開している情報を除く。

附記

  • 本レギュレーションに記載されている日時は日本標準時とする
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment