ISUCON公式Blog

ISUCONとはさくらインターネット株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです

ISUCONの過去問に
チャレンジするための
シンプルな環境構築
商標「ISUCON」利用の
ガイドラインはこちら

ISUCON10 本選問題の解説と講評

こんにちは、ISUCON10 の本選出題を担当した白金動物園の mirakui です。最近はパン作りにハマっています。この記事では、本選問題であるアプリケーションの「XSUCON」について、問題の概要と想定していた解き方について解説していきたいと思います。

XSUCON とは

近年の ISUCON にはとても多くの方が参加してくださり、スコアランキングを表示したりベンチマーカー実行を指示したりするいわゆる「ポータルサイト」の負荷対策には毎年の出題担当たちが苦労してきました。記念すべき 10 回目の開催である ISUCON10 ではぜひこの ISUCON ポータルサイト自体を問題にしたい、と私たち白金動物園が1年前から温めてきた構想を形にしました。

というわけで ISUCON10 の本選問題は「XSUCON」という、 ISUCON を模した仮想的な競技のポータルサイトでした。XSUCON の世界観を表現するために動画まで作ってしまいました。せっかくなので見てください。



詳しい仕様は下記のマニュアルやソースコードを参照いただければと思います。
ISUCON10 本選当日マニュアル
XSUCON アプリケーションマニュアル
ソースコード (GitHub: isucon/isucon10-final)

簡単に概要を説明すると、
  1. 最初に仮想選手登録・仮想チーム登録リクエストが押し寄せる(初期状態では10チームで締め切り)
  2. 仮想選手たちが仮想負荷走行をエンキューしたり、仮想運営に質問を投げたりする
  3. 仮想運営は、質問が来たら返答を返す
  4. 仮想選手達は仮想負荷走行が終わったかどうかや、質問の回答が来たかどうかを知るために、通知のエンドポイントをひたすらポーリングしまくる
Read more...

ISUCON カルトクイズを公開します!

こんにちは、運営の櫛井です。
10月13日に放送した ISUCON10 アフターイベントご視聴・ご参加いただきありがとうございました!
放送の中で行なったISUCONクイズ(通称ISUCONカルトクイズ)は、80名ほどの方にリアルタイムにご参加いただき大変盛り上がりました。AhaSlidesというツールを利用しましたが、参加者が同時に参加できる楽しさがありオススメです。
ididi


結果は、本選と同じくtakonomuraさんの優勝となりました。完全制覇おめでとうございます!
isucon quiz

ISUCONカルトクイズがなかなか好評だったので、設問・選択肢・正解率を共有させていただきます。皆さんは何問わかりますか?

Q.1 ISUCONに予選という仕組みが始まったのはいつから?
 (100点 正解率 61%)
 A. ISUCON1
 B. ISUCON3
 C. ISUCON5
 D. ISUCON7

Q.2 競技時間8時間のうち、自チーム以外のスコアランキングが更新されなくなるのはいつ?
 (100点 正解率 96%)
 A. 残り4時間
 B. 残り2時間
 C. 残り1時間
 D. 残り30分

Q.3 ISUCON1の優勝賞金は?
 (100点 正解率 6%)
 A. 100万円
 B. 50万円
 C. 10万円
 D. 6万円

Q.4 エンジニアHubのインタビューでISUCON10の本選出題担当である白金動物園が語った「学生が強くなったのは◯◯を手に入れたから」 正しいのはどれ?
Read more...

ISUCON10 オンライン予選で発生したトラブルについて

ISUCON10 予選において発生していた、競技開始の遅延をはじめ、ベンチマーカーの不具合、ポータルの 50x エラー等、度重なるトラブルについて詳細を説明させていただきます。

運営チーム一同として、様々な要因から複合的なトラブルに発展させてしまったという認識です。これらの反省点を踏まえ、同種のトラブルを起こさぬよう、次の運営チームへ反省点やデータを引き継いでいきたいと考えています。その観点において、以下に ISUCON10 予選で発生していた各種トラブルの背景・原因について振り返ります。

競技時間の延期について

まずは ISUCON10 予選の競技時間が、当初予定の 10:00 開始から 12:00 、さらに延期して 12:20 となった件について説明します。

これは、競技環境のサーバーの展開作業 (全台作成/デプロイ) が想定を大幅に超える時間を要した事が直接的な原因です。VM (仮想マシン) のディスクイメージ完成の遅延が根本原因と言えますが、下記で順を追って解説します。

インフラ環境および作業の流れ

ISUCON10 では、サイバーエージェントさまのインフラを利用して予選・本選ともに競技を実施しました。サイバーエージェントさま ("インフラチーム") よりストレージ・サーバーといった物理的資源に加え、今回の ISUCON10 向けの仮想環境基盤 ("クラウド基盤") の提供があり、その上に競技環境を構築、選手へ提供されました。

展開作業までの流れとしては、以下の通りです:

1. 一般的な VM (仮想マシン) のイメージである qcow2 ファイルを作問チームが作成 (必要なソフトウェアやソースコードはこの時点でセットアップ)
2. インフラチームへ引き渡し
3. インフラチームが作問チームのリクエストしたスペック・台数で VM を展開
4. 展開された VM は cloud-init を利用して選手の SSH 公開鍵を ~isucon/.ssh/authorized_keys に登録する等、チームごとの初期化処理を自動で行う

VMイメージ完成の遅延

予選に際しては、まず予選作問チーム側の要因として、最終版となるマスターイメージの完成が競技前日の 23 時となっていました。本来であれば早期に確定できるはずでしたが、言語移植作業の遅延等で、完成が遅れていました。

また、マスターイメージを利用しての検証作業も、競技前日の完成となってしまっていたため不十分でした (後述します)。
Read more...

本選スコアデータおよび順位の誤りについて

ISUCON10 本選の結果発表と全チームのスコアに選手の皆さまより指摘があり、誤りが確認されたため下記の通り発表いたします。

ISUCON10 本選当日マニュアルでは、最終スコアは競技終了後に運営が実施する 3 回の負荷走行のうち最も高いものと定義していました。その定義に従い、各チーム 3 回の負荷走行を追試として実施しましたが、その最大を計算する際に 1 回目の負荷走行のスコアについて計算に加えられておらず、誤って競技終了時点で最後に実施された負荷走行のスコアが、追試 1回目のスコアとして計算に加えられていました。

正しい順位について

誤りを訂正するため、改めて計算および複数人での検算をしたところ、下記のチームについて順位に誤りがあることがわかりました。
(当初発表していた順位 → 正しい順位)

  • 11位 → 8位: hidekiy (最終スコア: 24123 → 28244)
  • 8位 → 9位: shallowverse (最終スコア: 26249)
  • 9位 → 10位: ふんばり温泉チーム (最終スコア: 25080)
  • 10位 → 11位: 101010 (最終スコア: 24682 → 24870)
  • 16位 → 15位: SNE (最終スコア: 15706 → 14494)
  • 17位 → 16位: :innocent::innocent::innocent: (最終スコア: 14206)
  • 19位 → 17位: FCCPC_かみのやま温泉 (最終スコア: 12365 → 10751)
  • 20位 → 18位: いすこんがさき、しゅうろんはあと (最終スコア: 10177)
  • 15位 → 19位: curl gotti (最終スコア: 15909 → 7747)
  • 18位 → 20位: 牡蠣の鋭利な殻が指に突き刺さり利き手を負傷 (最終スコア: 12550 → 6805)
  • 22位 → 21位: へしこず (最終スコア: 4803 → 5707)
  • 21位 → 22位: SunPro (7633 → 2691)

  • なお、1 位~ 7 位に関して変動はありませんでした。

    スポンサー特別賞について

    今回の順位訂正に伴い、スポンサー各賞の対象チームに変化が生じることが分かりました。下記のように対応いたしますので、ご確認ください。
    • LegalForce 記念ラッキー賞 (株式会社 LegalForce 様)
      • 総合 10 位に対して贈られる賞です。
      • 当初発表していたチームは「101010」でしたが、順位の変動により、「ふんばり温泉チーム」が受賞者となります。
      • チーム「101010」については同等の特典を主催である LINE 株式会社より手配いたします。
    Read more...

    ISUCON10 オンライン本選の利用言語比率

    ISUCON10 オンライン本選の利用言語比率を公開します。オンライン本選は33チームの参加がありました。

    オンライン本選 利用言語比率

    利用率の全体ランキングは以下の通りです。

    Go     28組 84.8%
    Nodejs   3組  9.1%
    Ruby     1組  3.0%
    Rust     1組  3.0%

    優勝したtakonomuraチームの利用言語はGoでした。

    昨年の言語比率はこちら

    ↑このページのトップヘ