Monthly Archives: 10月 2009

レゴCEOの言葉から経営の肝を考える

“ デンマークのブロック玩具メーカー、レゴグループのヨアン・ヴィー・クヌッドストープ社長兼最高経営責任者(CEO)は27日午前、第11回日経フォーラム「世界経営者会議」で対談し、経営者像について「権威あるリーダーの時代は終わった」と述べた。新しい時代のリーダーは「消費者や取引先、社員の声を聞き、真実を見極める能力が必要だ」と強調した。 “

NIKKEI NET(日経ネット):主要ニュース−各分野の重要ニュースを掲載
幼少のころ、レゴブロックにはお世話になりました。見た目じゃなくて作るのが好きだったから、レゴグッズには走っていません。やっぱ作るのって楽しいんだよー。

Continue reading レゴCEOの言葉から経営の肝を考える

yumでtraceback発生

CentOS で yum update したら “続き” に書いたような traceback が発生して終了した。何もインストールできなくて困るので調べてみた。
同じようなエラーが CentOS の Bug Tracker にありました。
0003481: yum install openmotif22 dies with ‘TypeError: unsubscriptable object’
というのは、こちらのページで知りました。
yum update の “TypeError: unsubscriptable object” は yum clean metadata で対処
けっこう遭遇してる人もいるみたいですね。自分も yum clean metadata で回復しました。
ところで yum の clean って何してんだろうって思って man ページを見てみると、こう書いてありました。

“clean Is used to clean up various things which accumulate in the yum cache directory over time.”

キャッシュディレクトリに蓄積した色んなものを掃除するんだそうです。
じゃあ、metadata を指定すると何をするのか?

“Eliminate all of the files which yum uses to determine the remote availability of packages. Using this option will force yum to download all the metadata the next time it is run.”

だそうです。パッケージが配布サイトで取得可能かを決定するファイルを削除する、って感じでしょうか。削除したメタデータは次回の yum 実行時に全て取得してくれます。
まぁ、キャッシュってのは動作を高速にするために必要ですが、不具合の原因にもなりうるので、気をつけましょうってことですかねぇ。また yum の動きが怪しくなったら yum clean all かな。

Continue reading yumでtraceback発生

国や企業が発するメッセージ

テレビ朝日|サンデープロジェクト
サンプロ見てました。
郵政国営化とか渡り人事の議論をしている中で、財部さんが言った言葉が印象に残りました。

“国も企業も人事が最大のメッセージなんですよ”

そうねー。政治家も経営者も実務者ではないから、実務者をどう配置するかってのが一番強烈に伝わりそう。どんなにかっこいいこと言って、それがメッセージだって言っても、現実に伝わるメッセージは具現化されたものだと思います。

利き耳と利き手のコラボレーション

すイエんサー(すいえんさー)
おもしろかった。電話のコードがグルグルになっちゃう原因を調べてました。とりあえず、受話器を持ち替えるとグルグルしちゃうっぽい。
人間には、利き手、利き足があるように、利き耳があるんだそうです。その組み合わせが原因で電話のコードがグルグルしちゃうらしい。
得意な方の耳で聞くため、得意な方の手で受話器を取ります。で、電話を進めると、メモをする必要が出たりします。そうなると利き手が必要になります。その時、人は受話器を持ち替えてしまうんですね。持ち替え、すなわち回転です。
もう、分かりましたね。利き手と利き耳が同じ人は電話のコードがグルグルしやすいらしいです。聞き耳の方の手で受話器を取って、利き手でメモるんです。同じだったら無理があるんですね。自分は、違うのかも。
で、聞き耳がどうかとかは考えたことなかったけど、自分の席では電話機が左手にあります。自分は普通の人間なので右利きです。そんなわけで自分は電話のコードがグルグルしないのかも。
ってなわけで、利き手と反対側に電話を置くことをお勧めします。

MySQLクエリキャッシュのキャッシュアルゴリズム

会社で開発担当者が MySQL のクエリキャッシュはキャッシュ生成のタイミングが古いものから消していくって言っていたので、怪しいと思って調べてみた。

” Qcache_lowmem_prunes システム変数の情報は、クエリのキャッシュ サイズを調節するときに役立ちます。この変数は、新しいクエリのキャッシュを入れるために取り除かれたクエリの数をカウントしています。クエリ キャッシュでは、古い順番にクエリをキャッシュから削除 (LRU) します。サイズの調節方法については、項4.13.3. 「クエリ キャッシュの設定」 を参照してください。 “

MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.13.4 クエリ キャッシュのステータスと保守
ふむ、確かに古い順番に削除していくと書いている。けど、「古い」の定義が重要です。LRU って書いてますね。Least Recently Used、”最近もっとも使われていない” です。

“LRUとは、キャッシュアルゴリズムなどで用いられる、置換対象のデータを定める方式のうち、参照されていない時間が最も長いデータを置換対象にする方式のことである。”

LRUとは 「LRU方式」 (Least Recently Used): – IT用語辞典バイナリ
LRU に対するアルゴリズムは LFU です。

“LFUとは、キャッシュアルゴリズムなどで用いられる、置換対象のデータを定める方式のうち、参照された頻度が最も少なかったデータを退避させたり、置換したり削除したりするキャッシュアルゴリズムのことである。”

LFUとは 「LFU方式」 (Least Frequently Used): – IT用語辞典バイナリ
最も使われる頻度が低いものを消していく方式ですね。
なんか違いが分かりにくいですが、10分前に10回参照したデータ A と5分前に5回参照したデータ B がある場合、LRU の場合は A が消されるけど、LFU なら B が消されます。
データの重要度を決定するアルゴリズムですね。メモリなどの低レベルなキャッシュを扱う場合は速度が重要なので、アルゴリズムを単純にする必要があり、LRU とか LFU とかは極端な感じになっています。
システムの上位層でキャッシュを実装する場合は、それぞれを組み合わせたり、別の指標を取り入れる必要もありそうですね。例えば、中央データベースの内容を部署ごとのサーバでキャッシュする場合、それぞれの部署と関係の深いデータを優先してキャッシュするとか。
というわけで MySQL のクエリキャッシュは LRU なので、古くてもよく使われるクエリの結果は削除されません。開発担当者には週明けにでも伝えてみよう。

mod_deflateを使わなくても圧縮転送が可能

“ mod_deflateモジュールを導入すると、コンテンツの転送量が減少するためネットワークへの負荷が低減できます。”

@IT:mod_deflateによるコンテンツの圧縮転送(1/3)
そうなんです、Apache のモジュール mod_deflate を有効にすると、通信量を抑えることができるんです。ただしオンザフライの圧縮なので、CPU を使います。対応していないブラウザだと表示できなくなります。適正に設定すれば、細い回線で大量のコンテンツを提供できる可能性があります。
まぁ、設定内容はリンク先に任せるとして、オンザフライの必要性について考えてみた。そう、CPU 資源を使いたくないんですよ。gzip 圧縮なんて、あんま CPU 使わないよ、なんてのは聞きたくありません。少しでも資源を節約したいんです。
ってことで deflate の実際を考えると、(1) 圧縮されたコンテンツを、(2) HTTP ヘッダ “Content-Encoding: gzip” で、(3) 圧縮前の MIME タイプで出力すればいいんですよ。コンテンツの圧縮は事前にしておきます。HTTP ヘッダは mod_headers とかで set します。MIME タイプは、色んな方法があるだろうけど、拡張子を元のファイルと同じにすればいいと思います。
元のドキュメント構成とまったく同じディレクトリ構成を作り、圧縮送信したいファイルだけ同名で圧縮しておき、mod_rewrite でファイルが存在する場合だけ、そっちから出せばいいですね。
これで CPU リソースを使わずに回線負荷を下げることができます。よかった×2。
と思ったんですが、そもそも圧縮が効くのってテキストですよね。Web ページを構成する中で、サイズの大部分は画像だと思います。画像なんて、大抵 jpg だから圧縮済みなんですよ。ほとんど圧縮は効きません。html を圧縮したところで効果は知れています。
でも何もしないよりはマシだろうから、上手いことやってみて下さい。Web アプリのデプロイ手順に追加するのが正解だと思います。古い圧縮ファイルに振り回されないように注意ですが。

OpenBlockS 600でブドウ園のようなデータセンタ

職場で読んでた雑誌に OpenBlockS 600 という、ちっちゃいマシンが載っていて気になった。まぁ、前から気になってはいたんだけど、今回、もうちょっと調べてみた。
こんなやつ。
OpenBlockS 600 – OpenBlockS
けっこう歴史あるのね。
OpenBlockSとは? – OpenBlockS
で、とりあえず気になるのがパフォーマンスです。

"NATのパフォーマンス測定結果
プロトコル 	FTP 	HTTP
スループット 	99.42Mbps 	120.88Mbps"

OpenBlockS 600ネットワーク徹底活用――OpenBlockS 600をネットワーク機器として利用しよう – SourceForge.JP Magazine
100Mbps も出るなら、家や SOHO のルータなら大丈夫かな。でも、もうちょっと複雑なルールだったら値は落ちるのかな。LAMP 環境を同居させたら大変だろうなぁ。利用クライアント数にもよるか。
中身はどうなっているかというと、CPU は旧 Mac と同じ PowerPC になります。っても大抵の Linux ディストリビューションは対応しているので大丈夫。自分が大好きな Gentoo Linux もいけそうです。
CPU の性能も気になりますよね。

“ なお、このPowerPC 405EXのパフォーマンスだが、AMCC社のデータシートによるとMIPS値は1MHzあたり1.52となっており、600MHzで動作させている OpenBlockS 600の場合912MIPS相当となる。同様のアーキテクチャを持つPowerPC G3(PowerPC 750/740シリーズ)が1MHzあたり2.3MIPS程度と言われているので、乱暴な比較ではあるがOpenBlockS 600は二昔前の、400MHzのPowerPC G3搭載Power Macintoshと同程度の性能と考えてよいだろう。 “

パワーアップした超コンパクトサーバー、OpenBlockS 600 ハードウェアレビュー – SourceForge.JP Magazine
理論上、912MIPS だそうです。続きの方に一覧を引用しておきましたが、Celeron 900MHz ぐらいってことかな?
つか、この PowerPC 405EX って CPU、チップセットも統合されてる感じですね。

“PowerPC 405EX: 333 – 600MHz, 16K I/D, MMU, two 1-Lane PCIe ports, two GEnet Ports, Security Engine, USB2.0 OTG”

https://www.appliedmicro.com/MyAMCC/jsp/public/productDetail/product_detail.jsp?productID=PPC405EX
CPU に PCI ポート、ギガビット LAN、USB が内臓されているなんて・・・。馴染みの PC アーキテクチャじゃあ想像したこともないけど、組み込み CPU だとそんなもんなのかな?斬新に感じました。
しかも Security Engine とか言って、SSL や IPSec のアクセラレータも搭載してるっぽい。システムの前の方、L3 ロードバランサのすぐ後ぐらいに適しているかも。静的コンテンツ専用とかリバースプロキシとか。
実は、最初に OpenBlockS の記事を見たときにやりたくなったのが、ラックの中にちっちゃい箱がたくさんぶら下がっているデータセンタだったんです。SSL のアクセラレーションができるならリバースプロキシとして最高なんじゃないかと思います。
込み入った処理は得意じゃないだろうから、ルーチンワークを担当してもらう感じ。PHP とか Java でゴリゴリ処理をこなそうとしたら無理だろうけど、ファイルサーバ的な役割は得意なんじゃないかと思います。
うーん、ますます触りたくなってきた。6万かぁ・・・、サーバが一台買える値段なんだよなぁ。ファンレスってのは魅力だけど、どうすっかな〜。

Continue reading OpenBlockS 600でブドウ園のようなデータセンタ

MS対中国

“ 米マイクロソフト(MS)が22日に世界で発売するパソコン用の新型基本ソフト(OS)「ウィンドウズ7(セブン)」の海賊版が既に中国で売られている。最も安い商品でわずか8元(約110円)。正規版の中国での定価399元の2%程度にすぎない。 “

NIKKEI NET(日経ネット):主要ニュース−各分野の重要ニュースを掲載
さすが中国、対応が早い。
MS もそろそろ諦めてオープンソースにして、サポート料金と教育で儲けるスタイルにすればいいのに・・・。

NUMAをちゃんと調べた

家のデスクトップとして使っている Gentoo Linux でカーネルをアップデートした。その時に NUMA について気になったので調べてみた。

” AMD64 及び Intel® EM64T を搭載したプロセッサを有するシステムは一般的には NUMA プラットフォームとして構築されます。つまり、単一のメモリノードを構成するのではなく、ブート時にカーネルが複数のメモリノードを構成するということになります。複数ノードによる構成は、他のノードがメモリの過度な消費を起こす前に 1 ノードまたは複数ノードでメモリの過度な消費が起こることになる可能性があります。メモリの過度な消費が起こると、次のような結果となる可能性があります。 “

Red Hat Enterprise Linux AS 3 Update 5 リリースノート
うん、これはなんとなく知っていました。一般的な 64bit マシンなら NUMA っぽい、って感じ?CPU にメモリコントローラが統合されたため、メモリの局在化が問題になるんです。それを解決するため、OS 側でも NUMA アーキテクチャへの対応が必要になります。
ここの説明が分かりやすいかも。

“分散共有メモリモデル.各プロセッサはローカルメモリを持ち,他のプロセッサが持つリモートメモリに対してもアクセスできるが,アクセス時間が遅い.ノード間はスイッチまたはクロスバー接続される. “

Omicron NUMA
他の CPU に接続されたメモリにもアクセスできるけど、アクセス時間が遅い、なので一ヶ所に集める、局在化で Out-Of-Memory 発生、みたいな。そんなことが起こらないように、ちゃんと調整する必要があるんですね。
ってことから考えると、最近のメモリコントローラが統合された CPU で、マルチプロセッサだったら NUMA という結論にたどり着くと思います。ところが、マルチコアはどうなの?って疑問が出てきます。まぁ、考えたら疑問にするほどじゃないけど・・・。
結論から言うと、システム上にメモリコントローラがいくつ存在するかってことを考えればいいと思います。メモリコントローラが複数あれば、ある CPU が遠いメモリコントローラにアクセスする必要が出てくるので、特別な処理が必要になってくると考えられます。
自分の CPU は AMD の Turion 64 X2 なので、CPU の中身はこんな感じになってます。
AMD Turion™ 64 X2 デュアルコア・モバイル・テクノロジ アーキテクチャの特長
ほんで、この CPU が一個だけ入っている PC なので、システム内にメモリコントローラは一個だけ。ってことは NUMA として構築する必要はなさそうですね。
同じ AMD の 6 コア Opteron でも同じです。
6コア AMD Opteron™ プロセッサの特長
6 コアでもメモリコントローラは一個だけ、なので CPU が一個だけのシステムなら NUMA である必要はないと思います。
Intel も同じような図があるかなって探したけど、あんまなさそう。まぁ、たぶん同じでしょう。CPU パッケージ一個にメモリコントローラ一個だと思います。だとしたら CPU が一個なら NUMA の必要無し。
で、思ったんだけど、最近の CPU って多コア化が進んでいるけど、メモリコントローラも増えるってことはないのかな?L3 キャッシュへのアクセス権の奪い合いを避けるために L3 から分割するとか。逆に各 CPU のメモリコントローラ同士を接続して連携させ、遠くのメモリへのアクセスコストが減ったりとかしないかな。
まぁ、とりあえず普通のデスクトップなら NUMA の必要無しってことで、再構築しておきます。