feature image

2022年8月7日 | ブログ記事

ISUCON12予選を学生枠最下位で何とか通過させていただきました

どうもこんにちは。この度ISUCON12の予選に参戦して来ました、#!analog(ノット・アナログ)です。
予選レポートを書いていきたいと思います。

予選の結果について

最終スコア 13923点、失格を除いて全体58位 / 学生8位(自社調べ)でしたが、学生枠最下位ということでなんとか予選突破させていただきました!
去年のISUCON直前にサークルの方の紹介でISUCONを知り、今回2回目の参加としては全体59位は十分すぎるかもしれませんが、正直もう少しは歯が立つと思っていました...

これ以上のスコアを取るためには僕らに何が必要だったのか、予選が終わってから、そして予選通過してしまったことを知ってからはさらに深く考え込んでいたので、予選の様子を振り返りながら綴らせていただきます。

事前にやったこと

決めていた基本方針

初動と役割分担に関して

各自の得意分野と実装力を考慮し、以下のような分担をしました。

準備

Makefile

helpisu

https://github.com/logica0419/helpisu

知見貯め

素振り

タイムライン

時系列順に作業内容・スコア変動を書き連ねていきます。

うちのチームのスコア変遷

なお、乱雑ですがGitのコミットはこちらのリポジトリ群で見られます。

10:00-11:00

スコア 3149 (初期スコア)

スコア 3437

11:00-12:00

スコア 3585

スコア 3899

スコア 3566

12:00-13:00

スコア 3859

スコア 4003

スコア 4237

13:00-14:00

スコア 5129

スコア 5465

スコア 5663

スコア 5984


このタイミングで、サーバー2の/usrディレクトリが消し飛んだことが判明。
復旧が難しいことと時間の問題を考慮し、サーバーの再作成を決定した。


14:00-15:00

スコア 9399

"コンピューターサイエンス(別称: お祈り)"を感じた

スコア 11845

15:00-16:00

ここから約1時間、スコア0が続く

16:00-17:00

スコア 11259

スコア 13638

スコア 14471

ここからスコアが乱高下したため、しばらくスコア記載は割愛

17:00-18:00

スコア 14888 (ベスト)

スコア 12891

スコア 13923

ここでフィニッシュでした。

反省点

単純な知識不足

他の人のリポジトリを見て、知らないSQL構文や、経験から来る圧倒的なオペレーション力には勝てないと感じました。
またflockなど、プロファイラからははっきりと見えないボトルネックが見つけられなかったのも経験と知識の差な気がしています。

今回の問題も解き直して、大きな糧にしていきたいと思います。
また、普段の開発で何気なくやっている技術一つ一つを大事にしていくことで、「違和感」がすぐにわかるようになりたいと思います。

リポジトリの煩雑さ

今回logicaがmainプッシュにしてしまったり、コミットにスコアを記載していなかったりしたせいで、「どのコミットが動くコミットか」がわからなくなるシーンがありました。
また、ある改善の修正を行うと同時に別の改善を入れている、というパターンが多く見受けられ、これも正確なロールバックを困難にしていました。
うちのチームは頻繁に実装を壊しては修正・ロールバックをしているので、これがスムーズな作業の妨げになっていることは否めません。

そこで、今までのmainのみをデプロイするシステムに代えて、ブランチを指定してデプロイができるシステムの構築を開始しました。
これとPRのSquash Mergeを併用することによって、改善の混線とロールバックの複雑さを軽減していきたいと思います。

思い切りを大事にする

正直IDをMutex + メモリにしたのは日和りすぎました。
計測結果を元に慎重な判断を下すのは大事なのですが、時には思い切った判断をすることを意識して本選に臨みたいと思います。

マニュアルの確認が足りない

マニュアルには、「順位の決定には、競技時間中最後のスコアを使います」と書いてありました。
ですが、終了間際まで勝手に「再起動試験の時の得点が適用される」と勘違いしていたので、再起動すればそれだけでスコアが大きく伸びる可能性があるのに、それを競技時間中にする余裕を残せませんでした。

マニュアルの読み漏らしが無いようにすること、チームでマニュアルの内容についてもっと良く話し合うことを徹底したいと思います。

ロマンを求めすぎた

14時台から、logicaは2~3時間billingのN+1改善に取り組み、結果何の成果も得られませんでした。改善のデカさ、要はロマンを追い求めすぎた故の過ちです。
「既に終わったコンペティションを計算しない」という10分でできた改善を見つけられず(クエリの改善を諦めた後見つけました)、盲目的にクエリばかりを眺めてしまっていたのは大きく反省しなければいけません。
チームで一番の実装力を持ち合わせているのはlogicaなので、logicaが時間を無駄に費やすということはそれだけスコアにダイレクトに影響してきます。

もっと小さな単位で改善できる問題ではないか・それに時間をかける価値はあるのかを常に考えること、他の部分に目を向ける余裕を常に持つことで改善を図っていこうと思います。
本選では、できるだけ容易に整合性が保てそうな改善を優先し、数多くのアプローチを加えていくことに神経を注ぎたいと思います。

終わりに

以上、予選を振り返ってみました。
まとまりのない文章になってしまいましたが、最後まで読んで下さったのなら嬉しいです。

うちのチーム(主にlogica)は、来年のISUCONの作問をすることを今年のISUCONの第一目標として掲げています。参加者の皆様の声で決まる部分もあるらしいので、どうかご支援のほどよろしくお願いします。

本選まであと三週間。
「#!analogが本選に上がってくれて良かった!」と思っていただけるくらい、皆様を楽しませる競技ができるように練習を重ねて参戦するので、応援よろしくお願いします!

logica icon
この記事を書いた人
logica

20B。何でも屋です。SysAd / CTF / アルゴリズム / サウンド / グラフィック(デザイン部) にいます。

anko icon
この記事を書いた人
anko

21B/理学院物理学系 CTFがすきなオタク

harsh icon
この記事を書いた人
harsh

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2023年11月26日
ISUCON13にツールの力で勝ちたかった(mazrean)
mazrean icon mazrean
2021年9月21日
ISUCON11 traP CM制作についての小話
dan_dan icon dan_dan
2023年11月26日
【 #ISUCON 】 最近の若者は ssh しないらしいですよ
ikura-hamu icon ikura-hamu
2022年7月24日
ISUCON12に向けてダッシュボードを自作してログを可視化しました
Ras icon Ras
2023年12月5日
部内ISUCON「PISCON」を開催しました!
cp20 icon cp20
2023年11月22日
ISUCON初心者向け講習会のテキストを作り、開催しました!
pikachu icon pikachu
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記