目的のためには手段を選ぼう(昔話)
金曜日, 1月 15th, 2016私が学部生だった頃(1994〜1997)は、まだPC(文字通りのパーソナルなコンピュータ)というものの広まり始めという状況で、今みたいに「入学時にノートPC買って」とかしてる時代ではありませんでした。プログラミングの授業とかコンピュータを使う時間帯は「保管庫に閉まってある学科共通のノートPCを取り出して設置して使う」というのを毎回やってて。どのPC使うかは決められてたけど個人のものじゃない(複数学年で共有)ので、個人データはFDに保存するのがデフォルト。それでもソースコードとかのテキストファイルばかりなら1MBはとても広大だったのだよ。非テキスト扱うようになってすぐにイライラするようにもなったけど。
その共通のノートPCはどちらかというと「端末」としての用途で、コンパイラは学科サーバ(ワークステーション)側にあって、telnet(暗号化されてないsshと思えば間違いない)接続してそこでコンパイル&実行するという使い方。ここの資料でいうところのp.2「UNIXワークステーション」あたりの時期ですね。比較的高速なワークステーションを複数人でタイムシェアリングして使ってる状態。
ちなみにその頃初めて購入したPCはMacintosh LC630で、33MHz, 16MB(メモリ), 250MB(HDD)だったかな。Xcodeの前身とでもいうかCodeWarriorを借りて試してみたら「Hello World出力するだけのCプログラム」をコンパイルするのに1分、実行するのに1分という恐ろしい時代でした。共有利用してる学科のワークステーションでも数秒で済むのに、PCだと1分。それだけしか試さなかったのだけど、今思えばライブラリのロードやらに時間かかってるだけだろうから数百行ぐらいのコードでも同程度の時間で済んだんだろうにね。その頃はそういうことにも考えが及ばず、レポート作成マシンになりました。
ということもあって、もっぱらプログラミングやらする際には学科か総報センターのPCルーム(だと思い込んでいた部屋)を利用することに。実際にはPCルームではなく「端末室」が正しくって、目の前にあるPCっぽいものはあくまでもワークステーションを利用するための最小限の機能しか揃ってなくて、CPUやらメモリやらは全てワークステーション側のリソースを使ってるような端末がズラーッと並んでて。
私「よし、今日はいっぱい端末空いてるな!」
とばかりに5,6台端末同時にログインしてニューラルネットなシミュレーションを端末ごとに5,6個回し始めたわけですよ。
私「スゲー!コマンドに&付ければバックグラウンドで処理してくれるんだ!」
と覚えたてのスキルの試したさと、一つずつのシミュレーション終了を待って実行することのだるさ(スクリプト組むまでは知識がなかったらしい)とで、端末ごとに複数ジョブ投下したわけですよ。自分では1台あたり5,6個のジョブを同時に実行させてるだけのつもりなんですが、実際には1,2台のワークステーションで全て動いてて。その数分後には。
隣のサーバ室からやってきた管理者さん「急に重くなったんだけど何かやってる?」
と質問に来たので状況説明して。それで済めば話は早かったんですが、ジョブを殺そうにもログインできないぐらいにリソースが使われてたたり、ログインしてた端末からも操作受け付けない(実際には強制終了操作は入力されてたと思われるが、その処理にリソースが割り振られる様子が見られない)という状況になってて。結局 fg + Ctrl-C で終了するまでにかなり時間がかかったんだったか、ワークステーション自体を強制終了して再起動したんだったか、そんな感じの事態になってました。
うん、すまんかった。
という話を書いたのは、今回実験2でだしてる課題のシミュレーションを学科サーバでやったという学生がいたらしく、注意してなくてごめんなさい。
という話でした。ちゃんちゃん。