-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmemo.txt
More file actions
421 lines (321 loc) · 25 KB
/
memo.txt
File metadata and controls
421 lines (321 loc) · 25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
# cpulook, dev memo
------------------------------------------------------------------------------
ToDo
------------------------------------------------------------------------------
2025-08-09
* cpulist.cfg 及び hosts ディレクトリを
${XDG_CONFIG_HOME:-$HOME/.config}/cpulook に移動する。hosts に関して
は設定をするための簡単なインターフェイスを定義するべきの気がする。
それとは別に利便性の為 cpudir の中も確認する様にしたい。
* cpukill: subtype は現在 switch によって固定されているが、削除対象に
よって subtype を自動判別するべきではないのか?
* cpu ps, etc. の様に subcommand 式にするべきではないのか?
------------------------------------------------------------------------------
Done
------------------------------------------------------------------------------
2025-08-10
* BASHPID は対応していない bash version がある。bash 4.0 以降でしか使えない →
二箇所使われていたが一箇所目は別に $$ と同じ文脈だった。二箇所目は単に唯一の
ID が欲しかった所なので BASHPID が空の時は $$.$RANDOM で誤魔化す事にした。
これでも衝突が起こる可能性はゼロではないが bash 3.2 で動いている HPC はもう殆
どないし、問題が起こる確率も低そうだから取り敢えずはこれで良い事にする。
というより自分自身の PID を知る方法がない。ble.sh では sh -c 'echo "$PPID"'
を使っているがその出力を取得するために ble/util/assign を使っている。同じこと
をする為には (permission 的にも衝突的にも) 安全に一時ファイルを作成して、その
一時ファイルに対して sh -c 'echo "$PPID"' の結果を書き込み、そしてそれを読み
取るという事を実装しなければならなくて大変である。というかそもそも重複しない
一時ファイルを生成する為に unique id が必要で、その為に pid を取得したいのだ
から、pid を取得する為に重複しない一時ファイルが必要になるのは堂々巡りである。
* mkdir -p は cpulook/mkdir に置き換える。
* cpulook/is-function を定義する。
* log_submit は改名する。定義箇所を確定する。printf %()T をできれば用いる。
* m/*/*.src は m/sys.bash に統合する。m/ 以下の install は各ファイルを一つずつ
列挙する様にする。switch は未だ存在しない時にのみ作成する (これは既にそうなっ
ていた)。
m/bsub は lava を想定しているということを明記する → これは取り敢えず
m/bsub.bash の中には記述しておいた。恐らくこれで良いだろう。
* GNUmakefile or support BSD make: これは取り敢えず BSD make でも最小限の修正で
動く様に、GNU make 特有の記述は使わない様にした。但し、BSD make で実際にテス
トしていないので色々とエラーが生じる可能性はある。
* rshexec を cpuexec.sh にしたが、それに対応する rshkill の名前をどうするか。
lib/cpukill.sh だと cpukill との違いが分かりづらく良くない。という事を考える
と、もっと specific な名前にするべきの気がする。
そもそも rshexec.sh は rsh 専用とは言っても直接実行する時にも使える様なスクリ
プトになっていて rsh 専用という訳でもないという事から lib に移動しようと考え
たが、それでもやはり一部のタスク実行手法 (subtype) 固有の方法である事に変わり
はない。という事を考えると、m/direct.sh 的なファイルを用いて
m/direct.sh exec ...
m/direct.sh kill ...
等として実行するべきではないか? rsh や ssh は m/direct.sh を呼び出して利用す
る方式になる。一方で、submit や cpukill 等は m/direct.sh を source してから中
で定義されている関数を呼び出す形になる。更に、直接実行する場合にも source
lib/direct.sh してから中で定義された関数を同じシェルの中で呼び出すのが自然な
のではないか? という事を考えると direct.sh の内部で cpudir の解決なども一気に
実行するのも変な気がする。
a 一つの方法は common-header.sh に更に変更を加えて cpudir が既に定義されてい
る場合には処理をスキップして、スクリプトをコマンドとしても source 用ライブ
ラリとしても、両方の用途で使える様にする事。
b 或いはもう一つの方法は rsh や ssh 経由で実行する際には、更に別のスクリプト
経由で呼び出すという事。例えば、
lib/call.sh direct exec ...
lib/call.sh direct kill ...
然しこの場合にはプロセスの名前に rshexec.sh 等の様な分かりやすい物が現れな
い為、kill を実行する時にプロセスを特定しづらくなる。そもそも rshexec.sh が
独立したコマンドになっていて、更に特徴的な名前になっているのは kill の時に
プロセスを照合できる様にするため。
という事は最終的には一つの独立したコマンドにしたいという事と、それから特徴
的な名前を持たせたいという事。
c やはり lib/cpuexec.sh 等の様な名前にするということ。一方で kill の方につい
ては関数として実行して間接的に呼び出す? 或いはもっと特徴的な名前にしても良
い気がする。例えば
lib/direct.exec.sh
lib/direct.kill.sh
の様な感じにする。cpu や direct よりも良い方法はあるだろうか? 例えば sh? も
しくは bash? 或いは現在の様に m/sh/exec.sh m/sh/kill.sh という形にする? し
かし元々サブディレクトリやら何やら作りたくなくて現在のリファクタリングをし
ているのに結局サブディレクトリを作ってしまっているのは良いのだろうか?
うーん。結局取り敢えずは今の実装のままにする?
x 現状のままにする上での問題点は common-header の解決を共通化するのが難しい
という事。ファイル名が .sh の時には lib の下にあると思って .. を追加する
様にしているが、m/*/*.sh の形をしている場合に勝手に ../.. を追加して良い
のかは微妙である。例えば cpulook の本体が "m" というディレクトリにインス
トールされていたとして、 m/lib/cpugetdata.sh を見つけたらどうする? m まで
削除するのか、或いは lib まで削除するのかファイル名だけでは判断が付かない。
→或いは別の方法は lib/common.bash が見つかる迄ディレクトリを遡るという方
式。m や lib ディレクトリは下手にシンボリックリンクにしたり変な構成にした
りという事はないと考えれば、直接に cpudir の中にあると想定して良い。この
場合には単純に上に遡りながら lib/common.bash を探す様にすれば良い。
その時の問題は lib/common.bash という名前が一般的すぎて他のフレームワーク
が提供する common.bash を間違って呼んでしまわないかという事。
lib/common.bash も改名するべきの気がする。
やはり元々のファイル名 cpudefs に戻すべきだろうか? 或いは
cpulook.common.bash にしたら間違いもない。或いは単に cpudef.bash にするか?
うーん。取り敢えず cpudef.bash にする。
取り敢えずは m/rsh/rshexec.sh は現在の場所に置いたままにする。
common-header.bash の方で何処にスクリプトがあっても正しく判定できる様にする。
判定には lib/common.bash の存在を用いるので、より紛れなく判定できる様に
lib/common.bash は lib/cpudef.bash に改名した。
2017-06-11
* Unicode を用いたもっといい感じの progress の表示?
U+2588 8/8 - U+258F 1/8 の文字を使うことができる。
Python pip の progress がこれを使っていたので、
恐らく色々の環境で問題なく表示できると仮定して良いという事だろう。
試験的にこれを実装してみるのは悪くないことである。
progress は cpulook の中で呼び出している gawk スクリプトで生成している。
特に function create_progress2 がそれを担っている。
現在表示している内容は何であろうか。
- load average → 赤い # の文字でこれを示している。
- util → 全体の使用量
- uuse → 自分の使用量
- core の境目
先ず uuse > util という事はないと仮定して良い。
もしその様な場合には uuse = util と考えて良い。
一つの升目の中で uuse util と境目がある場合はどうするか。
Unicode の BLOCK 文字では三つの色の切り替えはできない。
util の表示の方を優先させたいので、
uuse に関しては切り捨てか切り上げのどちらかを選択する必要がある。
切り上げと切り捨てで近い方を選択するという事で問題ないだろう。
或いは常に切り上げという事で問題ない様にも思う。
もう一つの問題点は core の境目をどの様に表現するかである。
もし core の境目が文字の境目と常に一致しているのであれば、
8/8 の代わりに 7/8 を使えば良いかもしれない。
但し、2色使っている様な升目では微妙である。
また、core の幅を等間隔にしないと見にくい。
core の幅を等間隔にする為には WIDTH に収まるように
core の幅を整数で決め打ちするのが良いだろう。
生成の手順としては uuse を適当な値に補正する。
取り敢えず load や core の境界を考えずに生成してみる。
→どうやら screen (emacs と同じになる様に変更), emacs は幅 2 であると解釈している?
これは East_Asian_Width Ambiguous という事だろうか。
どのように対応するのが良いだろうか。
a 完全な対応方法は試しに何か出力してみて、
CSI 6 n で現在位置の変化を検出する事によって端末の曖昧幅を調べるという方法である。
また実現方法にも問題が残る。tput で現在のカーソルの位置を取得できれば便利だがそういう機能は恐らくない。
調べてみた所 bash のレベルで実行可能な様である。
https://stackoverflow.com/questions/2575037/how-to-get-the-cursor-position-in-bash
https://unix.stackexchange.com/questions/88296/get-vertical-cursor-position/183121#183121
% しかし、実のところ実際に表示している端末と
% screen の曖昧幅の取り扱いが違ったりすると結局ずれが生じる。
% 実際にずれが生じている。
% 現在は Poderosa を自分で勝手に弄った物を使っている所為で
% Poderosa の側を screen に合う様に対応するのが億劫である。
%
% というか以前合うようにした様な気がするがどうなったのか。
調べて幅が 1 であれば Unicode ブロック文字を使う事にした。
% screen はブロック文字は 幅2 の様だ。なので有効にならない。
% と思ったら .screenrc に cjkwidth の設定を書いていなかった。
% C-a : cjkwidth off にしてみると幅1になる。
% C-a : cjkwidth on にすると幅2になる。
% C-a : cjkwidth emacs にしても何も変わらない。
% screen の実体を見ると自前でビルドしたものだ。screen-4.1.0
% 日付を見ると 2012-04-24 02:50:09 になっている。
% これは明らかに自分が手を加える前の奴だ。再ビルドしよう…。
%
% ビルドした。よく見たら screen-4.3.1 だ。
自前の screen にした。これで不整合は置きないはず。
DSR(6) に対して screen は CPR で幅1を返す。
因みに Poderosa (自前) は DSR(6) に応答しない。
b もう一つの方法は自分のユーザだけでブロックに依る表示を行い、
それ以外のユーザでは旧来の方法を用いるという物である。
c 或いは、端末の幅の半分を超えない様に出力するという手もある。
これだと実質的な幅が 40 以下になってしまうという問題がある。
d 或いは、文字を1文字出力する度に HPA で位置を調整するという手もあるかもしれない。
しかしそうだとしても全角幅を仮定して出力すれば半角幅の時に隙間が空くし、
半角幅を仮定して出力すれば全角幅の時に前の文字を削除してしまうので内容が消える。
何れにしても区切りの部分などが正しく出力できないので余り意味がない。
結局上記の通り a で対応した。
2013-05-04
* "rsh でコマンドを実行すると poll: protocol failure in circuit setup というエラーが出る事" [#D0001]
[日付] 2013/05/04 - 2013/05/05 03:47:26 [完]
[状況]
沢山の core 空きがある状況で、沢山の rsh を同時に実行すると、幾つかの rsh で
poll: protocol failure in circuit setup
というメッセージが表示されてコマンドの起動に失敗する。
実際にそのホストへ行って見るとコマンドは起動されていない様であり、
また、同時に実行した別の (エラーメッセージを出していない) rsh によるコマンドの起動は成功している様子である。
[対処]
http://www.novell.com/support/kb/doc.php?id=3077223
上記のページによると rsh がコマンドを起動する時、
1 local => remote:514 にアクセスをし local のポート番号 (p1 とする) を伝える
2 remote => local:p1 にアクセスをし接続を確認して? からコマンドを起動する
という手順になっているらしい(? 多分…)。しかし p1 の範囲として使われるのは 1016-1022 であり、
これらのポートが既に使われている場合に circuit setup エラーが発生する。
つまり、同時に rsh がコマンドの起動を試みている状況ではポート番号の取り合いになって、
ポート番号が枯渇してしまうという事だろうか。
また、上の状況が発生した後暫くは rsh でコマンドを実行する事が出来なくなった。
(もしポート番号の取り合いが原因だとしたら) 幾つかの rsh は暫くはそのポート番号を保持し続けるという事だろうか。
また別のサイトでは、よく分からない記述が為されている。
http://wall-climb.com/2007/01/26/rsh%E3%82%92%E3%83%90%E3%83%83%E3%82%AF%E3%82%B0%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B/
「ローカルの rsh もリモートの rsh もバックグラウンドで動作するのがうまくいかないと rsh が連続で同時に発行され」の意味が分からない。
しかし、コマンドが起動したら rsh が即座に終了するように設定しておけばこの問題は生じないらしい?
実際に、
rsh laguerre02 -n "( sleep 10; echo hello; ) &>/dev/null </dev/null &"
というコマンドを実行してみたら呼び出した rsh が即座に終了してくれた。
これを真似してコマンドを起動してやれば rsh が終わった時には、
既に rsh セッションは終了した事になっているので、現状の問題は生じないはずである。
但し、毎回この様な長いコマンドを作文して rsh に直接渡すのは嫌なので、この部分をスクリプトにしてしまいたい。
そう思って m/rsh/rshexec.sh というスクリプトを作り、
rsh から rshexec.sh に起動したいコマンドを引数として渡す事によってコマンドを非同期に実行できるようにした。
submit.src もその様に書き換えたのだが…。
ふと思って、
for((i=0;i<100;i++)); do
echo hello$i >~/tmp/a.txt
rsh laguerre02 cat ~/tmp/a.txt
done
の様なスクリプトを作って実行してみたら…
poll: protocol failure in circuit setup
のエラーが発生してしまった…。つまり、rsh が起動中だとかそうでないとかそういう事は関係なく、
連続で rsh を沢山実行すると結局このエラーが出てしまうと言う事のようだ。
(多分、上記の処置の方法は、単体の rsh の実行でもこのエラーメッセージが出てしまった場合に有効なのであろう。)
という訳で、方針を変更して複数の rsh 要求を 1 つに纏めて発行する様にする。
例えば 5 秒待っても新しいコマンドが追加されなかったらその時点で rsh を実行する、など。
取り敢えず実装した。複数の cpuseekd インスタンスがあっても大丈夫な様に設計したつもり…だがテストはしていない。
------------------------------------------------------------------------------
ChangeLog
------------------------------------------------------------------------------
2014-04-25
* cpukill, cpusub, cpuseekd (echox): echox を .mwg/libexec/echox に配置変更
* install.sh: インストールスクリプトを作成
2013-11-17
* cpulook: 表示色変更 for terminfo colors#256
2013-10-23
* cpuseekd (allocate_cpu): bugfix, cpu を使い果たした直後に allocate_cpu を呼び出すと、
直前に投げたジョブが cpulook の結果に反映されず一つの cpu に2つずつタスクを割り当ててしまうバグ。
cpulook の結果が新しい場合には、最低 1 分待って再度 cpulook を実行する様に変更。
2013-05-18 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* m/rsh/get_used.src: cpujobs.awk を用いて uuse, guse を取得する様に変更
* m/rsh/rshexec.sh: 子プロセスを自身 (rshexec.sh) で実行するように変更。
更に、コマンドの実行は bash -c を用いるのではなく eval を用いる様に変更。
* cpujobs.awk: `bash -c ' ではなく `rshexec.sh --sub -c ' を目印に、
m/rsh によるタスクを判定するように変更。
* m/rsh/rshkill.sh: `bash -c ' ではなく `rshexec.sh --sub -c ' を目印に。
2013-05-13 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cputop: 右端で自動で折り返す terminal で行が増えるのを防ぐ為、
COLUMNS に 1 文字分余裕を持たせる様に変更。
2013-05-07 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulook: *.stat を待つ時に、中身がある事を確認する迄待つ様に変更。
* cpugetdata.sh: load が gauge の幅を超えた時の表示を追加。
* cpujobs.awk: 作成。m/rsh/get_used.src から機能を独立して作成。
* cpujobs.awk: lava の job に対応。
2013-05-06 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpugetdata.sh: [bugfix] gawk に渡すパラメータの内に空文字列があるとパラメータがずれる問題。
引数を ':' で区切って渡す事にした (引数内に文字 ':' が混入しなければOK)
* m/bsub/get_used.src: [bugfix] 変数名 cpu を host に変更したのを適用していなかった。
* m/bsub/get_used@local.src: 出力ファイル名と形式を変更
* m/bsub/get_used.src: get_used@local の出力から uuse と guse の両方を計算するように変更
* m/bsub/cpukill.src: 作成
* cpugetdata.sh: gauge に表示する内容で load と util を別々に表示する様に変更した。
util の方を今迄通りに棒グラフで示し load については # 記号の位置で表す事にする。
2013-05-05 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulook, m/rsh/get_used.src: 現在実行されている job の一覧を表示する機能
* cpulook, cpuseekd: tmp/cpulook.cache を tmp/cpustat.txt に名称変更
* cpusub: ログファイルの指定方法を変更 (どうせ今迄ログファイルを指定した事は無い)。
オプションとして `-l <filename>' 等と指定すると、stdout, stderr の接続先が指定される。
代わりに `-o <filename>' または `-e <filename>' と指定する事で
stdout または stderr の接続先ファイルをそれぞれ指定する事も出来る。
* cpusub: その場で実行する時の host 名を短縮名で指定できるように変更。
* cpukill: 作成。リモートのジョブをキャンセルする時に使用する。m/rsh/cpukill.src で対応。
* cpulook: cpu のメータ部分のフィールド名が変な記号だったのを GAUGE に変更
2013-05-04 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpugetdata.sh, get_used.src: used 変数の名前を uuse に変更
* cpugetdata.sh, get_used.src: 全体で使用されている数を表す guse を追加
* cpulook, cpugetdata.sh: host の情報を記録する一行ファイルの名前を *.stat.tmp から tmp/*.stat に変更
* cpulook: cpulook.tmp を tmp/cpulook.time に変更
* cpulook, cpuseekd: cpustat.txt を tmp/cpulook.cache に変更
* cpulook: 表示で `AC' (allocated cpus?) となっていたのを `UC' (used cores) に変更
また、分離記号に `w' が使われていたのを `:' に変更
(覚えていないが、元々は分離記号ではなくて何かの値だった様な…?)。
* m/rsh/submit.src, m/rsh/rshexec.sh:
大量の rsh を発行するとエラーになるので rsh を必要最小限に抑える為、
複数のコマンド起動を一つの rsh でまとめて実行するように変更。
2013-04-24 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cputop: Changed to show command line arguments instead of only a program name.
* cpugethost.sh: Created. 短縮名からホスト名を取得するスクリプト。
* cputop, cpups, cpulast: 短縮名を用いてホストを指定できる様に変更
* readme.txt: Created
2013-03-20 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulook:
host からの返答を自分でチェックし、揃ったらその時点で結果を出力する様に変更。
引数に指定した待ち時間はタイムアウトの時間として解釈される。
2013-03-16 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulook: 列名 `SERVER' を `HOST' に変更
* cpuseekd: (minor) 英語の修正、待ち時間の調整
* cpuseekd: 端末題名の設定に terminfo を使用するように変更
2013-03-11 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cputop: Changed to show working processes only.
To show all processes, specify the command line option `-a'
* cpuseekd: 待ち時間の調整、v モードの判定の仕方の変更
2013-02-21 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulook: cpulist.txt でなく cpulist.cfg を用いる様に変更
* cpulook: 列幅の調整
2012-05-22 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulist.cfg: 列を追加。ユーザ当たりのタスク数上限
* cpugetdata.sh: ユーザ当たりのタスク数の上限を考慮に入れた idle 値の計算
* cpuseekd: cpulist.cfg を使用するように変更
2012-04-24 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpuseekd: 過去の task.eat のバックアップを取るように変更
2012-04-24 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpuseekd: 環境依存の部分を m/ ディレクトリに分離
2011-12-27 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpugetdata.sh: bugfix
2011-11-27 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulist.cfg: Created
* cpugetdata.sh: タスク数の上限を考慮に入れた idle 値の計算
2011-11-23 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpugetdata.sh: progress bar の見た目を変更
* cpuseekd: (minor) 条件式を等価書換
2011-09-30 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpusub: その場で rsh で実行する為のオプション `-i HOST' を追加。
2011-08-29 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cputop, cpups, cpulast: Created.
2011-08-28 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpuseekd
2011-08-16 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpugetdata.sh: util 値の取得方法の修正
2011-07-20 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulook: 待ち時間を引数に指定できる様に変更
* cpugetdata.sh: 様々なパラメータを参照して idle 値を計算
2011-07-19 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpusub, cpuseekd: Created.
2011-07-17 K. Murase <murase@nt.phys.s.u-tokyo.ac.jp>
* cpulook, cpugetdata.sh: Created