2009年9月30日水曜日

subversion がおそいとかなんとか

いうのが慢性的に続いているらしい。社内の subversion 。
「らしい」というのは自分ではその「おそい」のに出くわしたことがないため。
なにやら何分も待つことがあるらしい。。

以前軽く調べてみたことはあって、リポジトリなサーバは

- FreeBSD 4.x
- subversion 1.3.x
-- リポジトリのタイプは fsfs, NFSマウントしてる

クライアントは ほとんど Linux(のはず)

サーバ側でいくつか問題ぽい点
- FreeBSD 4.x での NFS はあまりよくなかった気が
- subversion 1.3.x = sharding 導入前のバージョン
-- 1 ディレクトリ以下に 20万くらいファイルがたまってる状態・・・

というわけで subversion のバージョンアップするとマシになるかも?とは思っていたけど、近いうちに DVCS なもののなにかに置き換えられるらしいので、特に対応する理由は無し。

それでも置き換えるまでに多少はなにかできることないかなともう一度見直してみたところ、 /dev/random 周りをいじるとマシになりそうな気がしたので、こそっと設定しておいた。使い始めたときにこの辺は気づくのでは?と思ってるのできっと効果は薄いか、も全くない。それでも気休めに。
自分が困ってたら効果がみえやすいのだけど。

設定内容
- rndcontrol で 乱数のエントロピーの元を設定

とりあえず ATA の プライマリから頂こうとおもい、さて IRQ 番号は、、、と。
最初、割り当てられてる IRQ番号がわからなかったため カーネルのコンフィグファイル (/sys/[arch]/conf 以下のやつ) みて 14 だろうということで以下実行

# rndcontrol -s 14
rndcontrol: setting irq 14
rndcontrol: interrupts in use: 14


その後、/var/log/messages のローテートされたものに起動時のログが残ってたので IRQ 番号が判明。ログは以下の通り。時刻とホスト名は消した。

/kernel: pci0: at 3.0 irq 9
/kernel: ata0: at 0x1f0 irq 14 on atapci0
/kernel: ata1: at 0x170 irq 15 on atapci0
/kernel: ohci0: mem 0xeddff000-0xeddfffff irq 10 a
t device 15.2 on pci0
/kernel: bge0: mem 0xed6f000
0-0xed6fffff irq 7 at device 4.0 on pci2
/kernel: bge1: mem 0xed4f000
0-0xed4fffff irq 5 at device 5.0 on pci2
/kernel: fdc0: at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
/kernel: atkbd0: flags 0x1 irq 1 on atkbdc0
/kernel: sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
/kernel: sio1: configured irq 3 not in bitmap of probed irqs 0
/kernel: pci0: at 3.0 irq 9
/kernel: ata0: at 0x1f0 irq 14 on atapci0
/kernel: ata1: at 0x170 irq 15 on atapci0
/kernel: pci0: at 15.2 irq 10
/kernel: bge0: mem 0xed6f000
0-0xed6fffff irq 7 at device 4.0 on pci2
/kernel: bge1: mem 0xed4f000
0-0xed4fffff irq 5 at device 5.0 on pci2
/kernel: fdc0: at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
/kernel: atkbd0: irq 1 on atkbdc0
/kernel: sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
/kernel: sio1: configured irq 3 not in bitmap of probed irqs 0


14 で合っていた。ついでに 5 と 7 も追加しておいた。

# rndcontrol -s 5 -s 7
rndcontrol: setting irq 5
rndcontrol: setting irq 7
rndcontrol: interrupts in use: 5 7 14


サーバ起動時に設定されるよう /etc/rc.conf に記述。ちなみに該当のサーバは 1000日以上起動している。次再起動したらそのままお亡くなりになる気がしてならない。

rand_irqs="5 7 14"

FreeBSD 5.0 以降なら yarrow が導入されたから、このあたりを意識することは無いだろう。
FreeBSD 4.x で BIND9 や gnupg 使ってみたことがある人ならわかるんだろう。

検索してみたかんじ、colinux での subversion だと結構知られてることのよう。
coLinux はかるーくしか使ったことがない。

coLinux subversion問題

subversion book の古いのには FreeBSD での問題が明記されている。cvsweb で ports をみてみたものの、それらしい記述はみつけられなかった。

On FreeBSD, certain operations (especially svnadmin create) sometimes hang.
This is usually due to a lack of available entropy on the system. Subversion asks APR to generate random numbers to create UUIDs from time to time, and certain operating systems will block for high-quality randomness. You probably need to configure the system to gather entropy from sources such as hard-disk and network interrupts. Consult your system manpages, specifically random(4) and rndcontrol(8) on how to effect this change. Another workaround is to compile APR against /dev/urandom instead of /dev/random.

[Google Chrome] Mac OS X 版 Chromium

Mac OS X 版の Chromium 、のスナップショット最新版を入手できるちゃちいしぇるスクリプトを
書いて以前から使ってたりする、。
(Chrome のように「今すぐアップデート」があれば要らない。)

zip ファイルをただ open して終わっちゃうから、いらんファイルが残るし /Applications に移動しなきゃいけないけどねん。。

自分は普段あまりつかわない curl を使ってるのは wget がないから。
Mac OS X 、Public Beta - 10.0 まで はあったようで。。
いま敢えて「Wget」をリスペクト
さて、今回は「Wget」について。いわゆるダウンローダとして利用できるコマンドで、Public Betaから10.0のときには標準装備されていたが、なぜか10.1からその役割は「cURL」に取って代わられた。


ちなみにこれ書いてる時点での バージョンは Chrome/4.0.219.7.
↓ User Agent
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.7 Safari/532.1

2009年9月19日土曜日

[Hacker] Mark Shuttleworth や Matthew Dillon

Mark Shuttleworth
・90年代は Debian のデベロッパ
・Thawte の創業者
・Thawte が Verisign に買われる
・宇宙旅行した一般人
・2004年 Canoncal 創業 & Ubuntu をはじめる

Matthew Dillon
・Amiga のプログラマ (Cコンパイラ作者)
・Linux カーネルハッカー (たしか NFS まわりだったような)
・FreeBSD の仮想メモリサブシステムに貢献
・Best Internet Commications 創業者のひとり
・Best Internet Commications が Verio に買われる
・2003年に DragonFly BSD をはじめる

ビジネスの才があるハッカー、という感じを受けるけど、実際どんな人なんだろうな。

2009年9月17日木曜日

[Xen] Domain-0 ごと持って行かれた - つづき

前回のつづき

dom0_mem を指定したらサクっと解消した

[hoge:root/578]#xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 512 8 r----- 84.2
hoge1 1 7167 2 -b---- 257.2
hoge2 2 16383 6 -b---- 46.7

↑の通り、 dom0_mem=512M で起動。
dom0-min-mem のデフォルトでは 256 (MB) になっているから dom0_mem=256M でもよさそうだけど、 そこまで減らさなくても、、ということで 512M に一旦落ち着いた。

前回書いたように、dom0_mem で Domain-0 のメモリを固定しておかないと、Domain-0 ごと持って行かれたので要注意。。みかけ上はDomain-0 だけど、ハイパーバイザごと、かなぁ。いただけない挙動なのでバグレポートのようなものがあがっていそうだけど、いまのとこ調べる気力なし。。

また、dom0_mem はきちんと設定しましょう!といったドキュメントもいまのところみあたらず。設定項目の一つにあるよ、という程度。うーん。

第二版でてた。足が速いな。


2009年9月14日月曜日

[Xen] Domain-0 ごと持って行かれた><

・24Gのメモリを搭載

・メモリ7G の Domain-U を 1つ起動
・メモリ16G の Domain-U を 1つ起動
・・・してみたら固まった><

[hoge:root/34]#ls
hoge1 auto scripts xend-pci-permissive.sxp xmexample1 xmexample.hvm
hoge2 qemu-ifup xend-config.sxp xend-pci-quirks.sxp xmexample2 xmexample.vti
[hoge:root/35]#xm create hoge1
Using config file "./hoge1".
Started domain hoge1
[hoge:root/36]#xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 17020 8 r----- 1579.4
hoge1 1 7167 2 r----- 7.5
[5bm05a1:root/37]#xm create hoge2
Using config file "./hoge2".

(だんまり. 死亡.)

サーバを再起動してもらったところ、/etc/xen/auto からsymlink 張ってたため、 Domain-U を起動しようとしてまた死亡。しかたがないのでシングルユーザモードで起動 & symlink 削除 & マルチユーザに移行してもらい Domain-0 起動してもらうハメに、、。

また、サーバ起動時(Domain-0 起動時) に dom0_mem を指定していない状態のため、Domain-U 起動時に ゴリっと Domain-0 のメモリが減っていく環境。なので、 dom0_mem=512M などと指定してリトライ予定。容量としては余裕(なはず)なので。。

serverfault をみてみたら、Domain-0 は 256M 割り当ててるよ!ってのみつけたので、できるでしょ。

2009年9月13日日曜日

アメーバの MySQL 本

アメーバの中のひとたちが MySQL 本を書いたみたい。
(MySQL によるタフなサイトの作り方)



内容紹介をみるにハードウェアの選定もかかれているっぽいから
ハイパフォーマンス MySQL のようなのを想像。



よんGbps 本とともにソフトバンク・クリエイティブからでる。技術評論社のGoogle本、サーバ・インフラ本に続け!という感じか。
本書はタフMySQL本、MySQLタフ本などと呼ばれる、のかな。

どうでもいいけど、いまさらながらアメーバとアメブロの区別がつかん。
http://www.ameba.jp/ いくと Ameba (アメーバブログ)なんだけど、実際のブログエントリは http://ameblo.jp/ふんふん 。

先ずブログありき、でそこから別コンテンツもあるよーという解釈でいいのかな?

よんGbpsを超えるWeb の本

(よんを数字で書いてないのは ぐぐるさまにひっかかってもしょうがないよなー、と思ったため気休め程度に変更)

ついったーで 4Gbps で検索すると、それらしきつぶやきをみることができるので、たまにみている。こんな具合。いつまででてくるかな。


まだ買っていない、ので誤植が直されると思う次の刷で買おうかな。

アマゾンの評価はこのエントリを書いている時点では一件しかない。買っているひと多そうに思えるのだけど、レビューするひといないんだなぁ。

512MB/s の方がイメージはしやすい気がする。CD-ROM 1枚弱の容量だし。


ほにゃらら bps だと CDN なアカマイが最高? 2Tbps らしい。イコール 256GB/s 。バケモンですな。。
2009年1月20日 - アカマイ、歴史的な大統領就任式で記録的なストリーミングおよびウェブコンテンツを配信
「多くの視聴者が、何としても式典を見て、我が国の第 44 代大統領が初めて語る言葉を聞こうとしているなか、我々はアドビの Flash 技術とアカマイの組み合わせがあれば、これまでにないほど広範なオンライン視聴者に今回の就任式の様子を届けられると分かっていました。」アカマイ・ネットワークの総トラフィックは、東部時間の午後12時15分すぎに毎秒 2 テラビットを超えました。 同時にアカマイは、毎秒 12,000,000 以上のリクエストを配信しました。

2009年9月11日金曜日

NAS が壊れた! - その3

無事fuck you復旧を終え、先日代引きで受け取った。

が、、代金が代金なので、配達のアンチャンに
「ちょ、これ金額・・・あってます・・よね?」と言われた。

予想外の出費だったので、あとで支払いかえとかねば、、。

というわけで、バックアップの大切さをこんなかたちで思い知るハメになった。

NAS の代わりをどうするかは検討中。
iTune Music は 通常通りローカルに置き直したので、ようやく TimeMachine 使うか。
てことは TimeCapsule にしようか、どうしようか、、。



いずれにしてもおさいふがーーーー。

2009年9月10日木曜日

[MySQL] 異なるバージョンでの replication

ついったーでのつぶやきで
5.0 と 5.1 で replication できるの〜?というのを見かけたので、「できるよー」と reply した。

ただし、

マスタのバージョン <= スレーブのバージョン

でないといけない。なのでこの場合は 5.0 がマスタで 5.1 がスレーブなら OK.
以下の URI も reply しておいた。

ソース:
MySQL バージョン間のレプリケーション互換性
一般的なルールとしては、マスタとスレーブを同じバージョンで実行しているときにレプリケーションを設定してください。(MySQL 5.1, 5.0 または 4.1 など)異なるバージョン間でレプリケーションを実行する必要がある場合は、クライアントにマスタと同等またはそれ以上のバージョンを使用していることを確認してください。(例: マスタで 4.1.23、スレーブで 5.0.24)
とか、
マスタで使用中のものが新しく、スレーブで使用中のものが古い場合にレプリケーションを行うと失敗するケースが多分にあります。一般的には、MySQL 5.1.x を実行しているスレーブは、マスタで使用しているバージョンが古い (MySQL 3.23、4.0 または 4.1) でも使用できますが、その逆の場合はできません。
こんなぐあい。

実は去年の MySQL カンファレンスの MySQLジーニアスバーで直接聞いてたりもしたので、知っていた。

自分の手で replication 作ったことがないんだけどね.... orz....

MySQL のサイトはリファレンスマニュアルがしっかりしていていいなー、となにか調べる度に思う。一部古いのもあるけど、、。

2009年9月6日日曜日

Snow Leopard は XQuartz がちと古め

X112.4.0 - XQuartz

があるのだけど、これは(今書いてる時点では) Leopard 用だけ・・・。

10.6 だと
XQuartz 2.3.4 (xorg-server 1.4.2-apple45) が入ってる。

X でふんふんする人ではないけど、どうせなら新しくしたいなぁ。。

と、みたところ MacPorts にもあるのか。

% port search XQuartz
xorg-server @1.5.3-apple15 (x11, devel)
The X.org / Xquartz X server.

xorg-server-devel @1.5.3-apple15 (x11, devel)
The X.org / Xquartz X server.

Found 2 ports.

NAS が壊れた! - その2

査定額でた・・・
  。    。 スポポポポーン!!!
 。 。 。 ゚
  。゚。゜。 ゚。 。
 /  /
( Д )
被害は甚大です。。
XFS がお逝きに・・・

こんどは FreeNAS で ZFS ふんふんして作るのがいいかなぁ・・・。
使ってたのは↓左端のふるーーい型。(もう生産中止)

[Mac OS X] 10.6 - Snow Leopard のちょっといい点

その1

スクリーンショット(command + shift + 3、もしくは領域を選択できる 4)
を撮ったときのファイル名が 

スクリーンショット(YYYY-MM-DD H.MM.SS)

になっててちょっとイイ。

(前は 1, 2, 3... と付いてた)

その2
Finder で並び替えしたときススーッと動くようになってキモチいい

2009年9月5日土曜日

NAS が壊れた!

自分で samba 入れてシコシコ作るのが面倒なので、
某B社製の NAS を使っていたのだけど、壊れてくれました orz...
買ったのが 3年2ヶ月前くらい。うーむ。

当時 FreeNASOpenfiler を知っていたらそいつで作ってたかな。いつからあるんだっけ。。と、
FreeNAS は 2006年
Openfiler は 2004年っぽい

どうしようもないので、これをみて、銀座へ行くことにしたよ・・・

無料査定、で査定額みて
  。    。 スポポポポーン!!!
 。 。 。 ゚
  。゚。゜。 ゚。 。
 /  /
( Д )
とならなければいいなぁ・・・・

さてさて、どうなることやら・・・。

2009年9月3日木曜日

Mac OS X 10.6 - Snow Leopard にした後 MacPorts であれこれしこしこ入れ直してんだけど、ビルドに失敗するようになったもの



"深追いはしてないので、ひょっとしたら問題なくできるのかもしれない。けどビルドできなくなっちゃったなとほほー" 、というものを書く。

今のところ以下。何か入れようとして失敗したら随時追記予定。書いたものがビルドできるようになったら適宜修正。

python26 できた (9/7 確認)
gauche できた (2010/1/7 確認、2009/11/22リリースの Gauche 0.9 で Snow Leopard 対応してた。)
sbcl できた (2010/1/7 確認)
ccl
ghc
erlang できた (9/4 確認)

徐々に修正されつつある。
MacPorts の ML やら リポジトリみてればわかるんだろうけどね・・・
そこまでやる気力なし・・

プログラミング言語関係は厳しい・・・? (ruby19, perl5.8, python30 は ok
% uname -v
Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I386

% port installed perl5.8 ruby19 python30
The following ports are currently installed:
perl5.8 @5.8.9_3 (active)
python30 @3.0.1_4+darwin+ucs4 (active)
ruby19 @1.9.1-p243_0 (active)

% file /opt/local/bin/{ruby1.9,python3.0,perl5.8}
/opt/local/bin/ruby1.9: Mach-O 64-bit executable x86_64
/opt/local/bin/python3.0: Mach-O 64-bit executable x86_64
/opt/local/bin/perl5.8: Mach-O 64-bit executable x86_64

% port provides /opt/local/bin/{ruby1.9,python3.0,perl5.8}
/opt/local/bin/ruby1.9 is provided by: ruby19
/opt/local/bin/python3.0 is provided by: python30
/opt/local/bin/perl5.8 is provided by: perl5.8

追記: その後 python30 無くなって、python31 が現れた。
% port search python30No match for python30 found
% port search python31
python31 @3.1 (lang)
An interpreted, object-oriented programming language

入れた。

% port provides /opt/local/bin/python3.1
/opt/local/bin/python3.1 is provided by: python31
% file /opt/local/bin/python3.1
/opt/local/bin/python3.1: Mach-O 64-bit executable x86_64

環境としては、
- 10.6 を Upgrade DVD で入れて
- Developer Tools を入れて (アップグレードした時点で消されるのねぇ)
- /opt/local 全消ししてから
- 最新 MacPorts を dmg で入れなおした
という状態で、10.5 の時に入れていたものをちくちく入れ直し中、そんな状況。
variants で universal があってもつけずに入れる方針。うれしさがわからん。

python26 がビルドできなくなったので、それまで python26 で 野良make して入れていた mercurial は python26-apple(OS付属のpython. python_select での呼称) で 野良make しなおした。

ので python_select は今のところこんなん。mercurial 用でしか使ってないからpython30 と python31 はディスクのこやしに、、、、
% python_select -s
python26-apple
% python_select -l
Available versions:
current none python26-apple python30 python31

2009年9月2日水曜日

Mac OS X 10.6 の mach_kernel

PowerPC 捨てだけど
ppc 残ってるのはなんでだろう。(ほかのバイナリも)
% uname -v
Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I386
% file /mach_kernel
/mach_kernel: Mach-O universal binary with 3 architectures
/mach_kernel (for architecture x86_64): Mach-O 64-bit executable x86_64
/mach_kernel (for architecture i386): Mach-O executable i386
/mach_kernel (for architecture ppc): Mach-O executable ppc


ls なぞは ppc なかったり. (bash もなくて zsh は あったり.まちまち.)
% file /bin/ls
/bin/ls: Mach-O universal binary with 2 architectures
/bin/ls (for architecture x86_64): Mach-O 64-bit executable x86_64
/bin/ls (for architecture i386): Mach-O executable i386