- 2008-12-29 (月) 2:14
- Imo Judge
先日,Imos Contestをしたわけですが,ゆくゆくはこのシステムを24時間稼働用にどうにかしようと思っているわけです.ところで,きうぇからのタレ込みで会津大のオンラインジャッジを見てみたのですがなかなかに操作性が良さそうでなぜでしょうね(マシンの性能が異常に高いのも気になりつつ).そこでいつも何やら的確に操作性に関して文句をつけてくる青にデザインを頼んでみようかなと思っています.もしかすると他では見られないポップでキュートなジャッジができるかもしれません.そんなこんなで,ゆくゆくはPKUに負けない機能を持った軽いジャッジ鯖をめざすので乞うご期待なのです.情オリやらから日本語の問題を導入すると日本人に嬉しいかなとかなんとか思いつつ.ところでふと日記を書こうと思ったのは今回ジャッジ鯖を作る上で詰まった点をメモしようと思ったからなのです.結構すんなり作ってるように見せかけて意外とつまっていたわけなのです\(^o^)/
まず,構成について.Pentium4の1.5GHz,2GB Mem,40GB IDE HDDのハードの上でUbuntuを動かし,VMware Playerの中でDebianを動かしています.通信をHost onlyにすることによって外部への接続の制限をかけています.
問題と対策 — ハードウェア編
- VMwareのコピー先のDebianでeth0がなくなる
→ MACアドレスが記録されているために一致せず消えるので,/etc/udev/rules.d/z25_persistent-net.rulesを削除する.Ubuntuの場合は/etc/udev/rules.d/25-iftab.rulesや/etc/iftabあたりに注意する必要がある.(参考: Debian Etch の仮想マシンでネットワークが使用不能に) - 共有フォルダでファイルの内容がすぐに反映がされない
→ syncとかしても無理で未解決.ソケットで通信してとりあえず応急処置. - chroot下でプログラムをexecできない
→ /usr/libあたりをリンクすればできたといえばできたけど微妙.実はchrootは使い物にならないのです.なのでアクセス制限をしっかりかけて直に実行(もちろん一般ユーザ権限で)すれば良さそう.あと,/tmpと/var/tmpを毎回除去すれば大丈夫そう.
問題と対策 — ソフトウェア編
- CPUとメモリに制限をかけたい
→ ulimit周辺を触れば大抵の制限ができる. - コンパイルエラーが大量に(具体的には8MB以上)吐かれることがある
→ コンパイル時にもulimitすること.C++のテンプレートをうまく使うとコンパイラを実質的に無限ループに陥れることもできるので,CPU時間の制限もかけておかないと危ない. - fork爆弾の対処方法
→ 実行時はulimitをかけることはもちろん,実行フェーズが終了した後に,sudoでkill -9 -1を投げつけて強制終了させる.
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://imoz.jp/2008/12/for-starting-imo-judge/trackback/
- Listed below are links to weblogs that reference
- Imo Judge始動に向けて from 超現実いもす(imos)の日記