birdPostgreSQL チューニング(2)

PostgreSQL チューニング(2)

その後、Tuning PostgreSQL for performance というページを見つけ、大いに参考になりました。

wal_fsync_method
前に書いた通り、Linux 2.4 に普通の SCSI ディスク、という構成だと fsync が最速なようです。
wal_buffers
ドキュメントを読む限り、今回の場合大きくしてもそれほど効果無いはずです。しかし、ここに超巨大な値 (1Gbytes など) を指定すると一時的 (起動後しばらく) は性能がブーストされるようです。その後ずっと利用していると徐々に性能が劣化し、最終的には小さな値を指定した時と同じくらいの値に落ち着くようです。
shared_buffers
Oracle と違い、shared_buffers はメモリの許す限り大きくすればよい、というわけではないようです。今回の場合、max_connections * 4 くらいの値が最適なようでした。
checkpoint_segments
チェックポイント間隔を長くし過ぎると pause 時間も延びてしまいうまくない、というのは以前書いた通りです。今回はコンスタントな性能を目指すことにして、checkpoint_segment は 1 にしてみました。それにより多少オーバーヘッドは増えて (スループットは低下して) しまいますが、許容範囲内と判断しました。なお、合わせて checkpoint_warning を 0 にしておかないとログに warning が出力され続けて大変なことになります(笑。

他にも、auto commit よりも明示的に commit した方が早い場合があるとか、pg_autovacuum を利用するために stat オプションをいくつか true にすると多少性能が劣化する、などの現象が見られました。

結果的には、何も設定しなかった時と比較すると2倍前後高速化されました。やっぱり RDBMS はチューニングが大事、なんですねぇ…。

birdPSX のチューナ出力, 献血

PSX のチューナ出力

録画ではない、リアルタイムの放送を PSX で見ていた時に、1) スーパーインポーズされる字幕に微妙にモスキートノイズが乗っているような気がする、2) いわゆる「砂嵐」の見え方が普通にテレビで見るものと全然違う、ということに気がつきました。どうもリアルタイムな視聴でも MPEG エンコーダ/デコーダを通った画像になっているっぽい。録画モードを切り替えても別に表示品質が変わるわけではないので、録画用のストリームを常時生成しているわけでもなさそう。
OSD1 のことなどを考えると確かにその方が出力系をシンプルに出来そうな気もしますが、HDD/DVD レコーダって普通こういうものなのかな?
追記。しかしよく考えてみると、それでは例えば SLP モードで録画中にリアルタイムの綺麗な映像が見えるようにするためには、MPEG エンコーダが2つ必要なことになってしまいますね。さすがにそれはないよなぁ。気のせいか…。
さらに追記。「モスキートノイズが見えた」ように見えたのは目の錯覚だった模様。改めてよーく見てみたら全然そんなことなかった。砂嵐が普通と違うのもきっと GRT などのせいでしょう。大変失礼しました…。

献血

とても久しぶりの献血。400cc 抜きました。「水分補給して」と何度も言われたものだから、タダで飲めるジュースとお茶を飲み過ぎ、激しく水っぱらに。チョロQ付きボールペンをいただく。柊次にあげようっと。

birdPC 自作, 柊次の誕生日

PC 自作

ひさびさに妹のために PC を自作することに。1
とりあえず予算は 10 万以下で、3D 系はナシ、主な用途は publishing 系です。今のところ、CPU は Pentium4 2.60C、メモリを出来るだけたくさん積んで (1Gbytes)、HDD は 160Gbytes (Seagate Barracuda) 追加、後は静音に気をつかってあげるくらいで OK かなぁ、と思っています。
しかし最近の情報にはすっかり疎くなってしまって、マザーボードとかビデオボード、ケースや電源や CPU ファンについてはまるで見当も付かず。彼女のディスプレイは NANAO の 19inch なんですけど、今時アナログの画質が良いビデオボードってどれなんでしょ。
あ、そうだ、ブロードバンドルータもあった方がいいだろうなぁ…。
にんともかんとも。楽しいけどね。

柊次の誕生日

昨日は柊次の誕生日でした。もう5歳。早いもんです。
誕生日プレゼントはちょっと前から「ラジコン、ラジコン」と言い続けていたので、子供達と一緒に近所のイトーヨーカドーへ。ところがなぜかラジコンが全然おいておらず、そんな中父親 (僕) は目ざとく見つけた BITCHAR-G を強力に Push。しかし子供にとってはあの小ささはちっとも魅力的に映らないらしく、「もっと大きいのでなきゃヤダ!」と言う。「お父さんはこれがいいと思うけどナー」という父の言葉のむなしく、もう一つだけ置いてあったラジコン、仮面ライダー555 のジェットスライガーに決定。「商品入れ換えのため」半額近く値下げされてたので良しとしました。
安くなっていたのはちょうどテレビ放映が終わってしまうためなんですが、柊次に「もうすぐ 555 終わっちゃうんだよ」って言ったら、「だから買うんだよ」と言い返されて妙に感心してしまった。確かに来年の誕生日にはもう 555 グッズは手に入らなくなっているでしょう。家族で楽しんだ番組 (鈴鹿8耐も見たし、じじばばには変身ベルトも買ってもらったし、今年はずっと 555 だったね) が終わってしまうのは寂しいけど、しょうがない。このラジコンがあれば楽しいことも思い出せるよね。
このラジコン、対象年齢が6歳から、とちょっと柊次には早かったのですが、家に帰って実際に遊んでみてその理由がわかった。モーターが強力で、かなりのスピードが出ます。内蔵されてるニッカド電池も8分で使い切ってしまう。それでも柊次ならなんとかコントロールしてるんですけど (GT3、GT4 で鍛えられてるから?)、鳥乃がコントローラを持つと超危険!親の見ていないところでは遊ばないよう言わないと、家中穴だらけにされてしまいそう…。
メカ的に見ると、フロント、リアともステアリングとともに動くようになってて、横にスライドしたりその場でくるくる回転出来たりと結構面白い動きが出来るマシン。我が家の場合フローリングなのでちょっと路面μが低すぎてほとんどアイスバーン上で走ってる感じになっちゃうんですが、それはそれで結構楽しい。なんて言ってると僕が壁に穴を空けそうだ…。

bird

東京限定の話ですけど、かつての共通一次、今の大学入試センター試験日って、雪の特異日な気がする…。こんどちゃんと調べてみよ。

birdPostgreSQL チューニング, 今年の年賀状, ニュースステーション

PostgreSQL チューニング

あんまり IO が速くないマシンで、とにかく bulk insert の性能を稼ぐにはどうするか、というチューニング。
bulk insert のみ、という条件だとなんとなく shared_buffers や wal_buffers といったパラメータはあまり関係がないようで、wal_sync_method と checkpoint_segments あたりが肝な模様。いろいろと試行錯誤中です1。あ、もちろんデータファイル領域 ($PGDATA/base) とログ領域 ($PGDATA/pg_xlog) は異なる物理ディスク上に配置してあります。
wal_sync_method ですが、Linux 2.4 で普通の SCSI ディスクだと fsync と fdatasync がほとんど同じ、open_sync はそれの2倍くらい遅い、という感じのよう (open_datasync は使えませんでした)。確か PC Solaris だと open_datasync が一番速かったような気がするんだけど…2。 後者の checkpoint_segments について。Oracle なんかだと checkpoint 間隔があんまり短くなり過ぎないように調整するのがセオリーだけど、PostgreSQL で checkpoint_segments をデカくしてチェックポイント間隔を広げると、いざチェックポイントが発生した時にかなり長い間ロックアップ状態になってしまう。確かに単にスループットで比較すれば間隔を広げた方が良いんだけど、長時間アプリケーションが pause してしまうのは致命的な場合もあるよなぁ。この問題は普通どうやってチューニングするんだろう?
とかなんとかいろいろ調べている間に、PostgreSQL の ML にこんなメールが!つまり、bulk insert 中に他のテーブルをまとめて引き抜く (大量の sequential scan 発生) ような処理は 7.4 ではツライかもしれない、ってことか…。もう少しいろいろテストしてみよう。
そういや pgbench の initialize 時の tuple 生成の速度を調べたら、80000tuples/sec 以上の速度で insert 出来てるじゃん!…と思ってソースを読んでみたところ、単に insert してるわけじゃなくて copy コマンドを使っているのですね。この手をアプリケーションで使う、ってのはアリなのかな…。

今年の年賀状

2004年賀状 は、こんな感じでした。親が写っていない、いわゆる「嫌われる」年賀状ですが、コンセプト3のためにしょうがなかったのだ、ということにしておいてください。親ばかだ〜>俺。

ニュースステーション

今日は久々に真理さんいじめの珍味のコーナー (食の快楽) があった。森永さんと真理さんは何気にいいコンビだ…。

birdKernel 2.6 のメモリの使い方, 口の中の傷

Kernel 2.6 のメモリの使い方

Kernel 2.6、すごく快調です。使用中にメモリメータを見ていて気がついたのですが、2.6 はスワップをほとんど使いませんね。2.4 の頃はしばらく使っていると (それほどメモリに厳しいことをしなくても) 知らぬ間にスワップも使われていたんですが、2.6 では今のところ全くスワップを使いません。挙動も心なしかきびきびしている感じだし、なかなかいいなぁ、2.6。

口の中の傷

数日前の食事中に噛んでしまった唇の切り傷が案の定化膿してしまって、放っておいてもズキズキ痛い。口の中の傷ってどうして必ず痛くなっちゃうんだろう…。

birdPSX キークリック音の謎, フリスク ユーカリミント味, VMware 4.0.5 (Build:6050) の Kernel 2.6 対応

PSX キークリック音の謎

以前、「PSX リモコンのキークリック音が鳴ったり鳴らなかったりする」という話を書きましたが、なんとなく法則性が見えてきました。
PSX の操作画面は、バックにチューナの出力が見えている時と見えていない時があるのですが1、チューナの出力が見えている時 (その時放送されている TV の音声が流れている時) にはクリック音を出さない、ということのようです。
EPG (番組表) 画面のように「画面は見えないけれども音声だけ聞こえる」ような場合も、クリック音はなりません。そういう仕様だったのね…。

フリスク ユーカリミント味

僕は昔からお腹が弱いのかしょっちゅう下痢をするたちだったのですが、なぜかフリスクのユーカリミント味を一日1個〜2個食べていると非常にお腹の調子が良くなることに気がつきました。フリスクって整腸作用があるのかしら…。

VMware 4.0.5 (Build:6050) の Kernel 2.6 対応

こちらのページを参考に無事動かすことが出来ました。簡単に手順をまとめます。

Kernel 2.6 で起動した後、VMware をインストール (既にインストール済みの人は vmware-config.pl を実行) しようとすると、途中でエラーが発生し停止してしまいます。しかしとりあえずエラーが出るところまでインストール (または vmware-config.pl の実行) を行ってください。

:  
Do you accept? (yes/no) yes  
  
Thank you.  
  
grep: /proc/ksyms: No such file or directory  
grep: /proc/ksyms: No such file or directory  
grep: /proc/ksyms: No such file or directory  
Trying to find a suitable vmmon module for your running kernel.  
  
None of VMware Workstation's pre-built vmmon modules is suitable for your  
running kernel.  Do you want this program to try to build the vmmon module for  
your system (you need to have a C compiler installed on your system)? [yes]  
  
Using compiler "/usr/bin/gcc". Use environment variable CC to override.  
  
What is the location of the directory of C header files that match your running  
kernel? [/lib/modules/2.6.0/build/include]  
  
Extracting the sources of the vmmon module.  
  
Building the vmmon module.  
  
make: Entering directory `/tmp/vmware-config0/vmmon-only'  
make[1]: Entering directory `/tmp/vmware-config0/vmmon-only'  
make[2]: Entering directory `/tmp/vmware-config0/vmmon-only/driver-2.6.0'  
make[2]: Leaving directory `/tmp/vmware-config0/vmmon-only/driver-2.6.0'  
make[2]: Entering directory `/tmp/vmware-config0/vmmon-only/driver-2.6.0'  
..././linux/driver.c: In function `init_module':  
..././linux/driver.c:246: structure has no member named `prev'  
..././linux/driver.c:247: structure has no member named `next'  
make[2]: *** [driver.o] Error 1  
make[2]: Leaving directory `/tmp/vmware-config0/vmmon-only/driver-2.6.0'  
make[1]: *** [driver] Error 2  
make[1]: Leaving directory `/tmp/vmware-config0/vmmon-only'  
make: *** [auto-build] Error 2  
make: Leaving directory `/tmp/vmware-config0/vmmon-only'  
Unable to build the vmmon module.  
  
For more information on how to troubleshoot module-related problems, please  
visit our Web site at "http://www.vmware.com/download/modules/modules.html" and  
"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".  
  
Execution aborted.  

その後、上記ページで紹介されているパッチ (vmware-any-any-update48.tar.gz) を入手し展開、出来たディレクトリ中の runme.pl を実行します。

tpx20:~/var/vmware-any-any-update48# ./runme.pl  
Updating /usr/local/bin/vmware ... Unknown version  
Sorry, there is no binary patch available for your version of vmware.  
VMware modules in "/usr/local/lib/vmware/modules/source" has been updated.  
  
Before running VMware for the first time after update, you need to configure it  
for your running kernel by invoking the following command:  
"/usr/local/bin/vmware-config.pl". Do you want this script to invoke the command  
for you now? [yes]  
  
Making sure VMware Workstation's services are stopped.  
  
Stopping VMware services:  
   Virtual machine monitor                                             done  
   Bridged networking on /dev/vmnet0                                   done  
   DHCP server on /dev/vmnet8                                          done  
   NAT networking on /dev/vmnet8                                       done  
   Host-only networking on /dev/vmnet8                                 done  
   Virtual ethernet                                                    done  
  
grep: /proc/ksyms: No such file or directory  
grep: /proc/ksyms: No such file or directory  
grep: /proc/ksyms: No such file or directory  
Trying to find a suitable vmmon module for your running kernel.  
  
None of VMware Workstation's pre-built vmmon modules is suitable for your  
running kernel.  Do you want this program to try to build the vmmon module for  
your system (you need to have a C compiler installed on your system)? [yes]  
  
Using compiler "/usr/bin/gcc". Use environment variable CC to override.  
  
What is the location of the directory of C header files that match your running  
kernel? [/lib/modules/2.6.0/build/include]  
  
Extracting the sources of the vmmon module.  
  
Building the vmmon module.  
  
Building for VMware Workstation 4.0.x.  
Using 2.6.x kernel build system.  
make: Entering directory `/tmp/vmware-config1/vmmon-only'  
make -C /lib/modules/2.6.0/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules  
make[1]: Entering directory `/usr/src/kernel-source-2.6.0'  
  CHK     include/linux/version.h  
  HOSTCC  scripts/fixdep  
  HOSTCC  scripts/split-include  
  HOSTCC  scripts/conmakehash  
  HOSTCC  scripts/docproc  
  :  

すると何やら怒られはしますが、とりあえずさっきエラーが出たところは無事通過し、最後まで辿り着きます。これで、とりあえず VMware を再び使える状態になります。VMware 起動時に「カーネルが新しすぎるぞ」と怒られますが気にしない、気にしない。

たぶん次期バージョン (4.1?) では正式に Kernel 2.6 に対応してくれるでしょう。

birdネットワークメディアプレイヤー, Kernel 2.6 化

ネットワークメディアプレイヤー

PC Watch の記事によると、先日の「Xbox を AV クライアントに」という話以外にも、各社からネットワークメディアプレイヤーと呼ばれるカテゴリの製品が出てきたようですね。

Microsoft の動きを見ていて思うのは、コンピュータの基礎の部分は既に「ある」ものとして、その上のサービスを至極まっとうに発想できている、ということです。対して日本の家電メーカを見れば、なんというかまだまだベース部分の構築に汲々としていて、なかなかさらに上位の概念の提案までたどりつけていないように見えます。

僕なんかはまぁその、MS がよりどころとしている基礎部分に文句付けたりしてるわけなんですが、なんにせよちゃんと上を見ている視線がある、というのは価値あることです。

ところで上記記事には、

今回東芝が公開したデジタルホームのデモは、デジタルホームのあるべき姿を示していると言える。日本の家電ベンダのデジタルホーム構想では、PCが無視されていたり、PCがつながらないという未来像を示しているものが多い。しかし、家庭におけるPCの普及率が70%を超える今、PCを無視したデジタルホーム構想は歪んでいる。PCとデジタル家電が相互に接続でき、コンテンツ保護も実現された形でメディアデータのやりとりができるという今回の東芝のデモは、誰にとっても受け入れやすいものではないだろうか。

という文章がありますが、PC の家庭における普及率が 70% という数字だけを受けて、上記の結論を導き出すのはかなり強引な気がします。その 70% のうち、どれほどの PC がホームサーバとして稼働可能な状態にあるのでしょうか?実はホームサーバとして稼働可能な PC の割合は意外に低いんじゃないか、というのが僕の感覚的な印象です。

それに、PC が家電メーカーのホームネットワーク構想から無視されるのは、その普及率であるとか技術上の問題ではなく政治的な問題でしょう。それが「歪んでいる」という見方ももちろん可能だとは思いますが、僕からみれば、現在の MS に支配された PC そのものの方がよっぽど政治的に歪んでるように思えます。家電的世界まで全て MS ワールドになっちゃって、なんだかよく分からないアプリケーションを使わせられる未来なんて気持ち悪くないすか?

Linux のようなオープンな基盤の上に、そこそこイケてるフレームワークが乗っかって、各社がその上のアプリケーションの機能や方向性でもって (フェアに) 競争する、みたいな未来の方がいいなぁ。基盤技術がオープンでないところの弊害はこの、フェアな競争が出来ないところにあるんだよな…。

Kernel 2.6 化

自宅でメインに使っている Debian woody マシン (この Web サーバが動いているマシン) の kernel を 2.4.22-ck2 から 2.6.0 に変更してみました。もう 2.6.1 も出てますけどね…。

簡単に手順をまとめます。なお今回、kernel 2.6 に必要なその他もろもろのツール類をいちいち自分で調べて入れるのが面倒だったため、Debian backports を利用してインストールしてみました。

まず、次の行を /etc/apt/sources.lst に追加します。

#  
# woody backports  
#  
deb http://www.backports.org/debian stable kernel-2.6 kernel-source-2.6.0  

その後、とりあえず普通に「apt-get update」「apt-get upgrade」した後、「apt-get install kernel-source-2.6.0」を実行し、カーネルソースをインストールします (もちろん dselect 等を使って同等のことをしてもよし)。

さて次に、通常のカーネル再構築/インストール手順に従い、下記の通り実行します。

# cd /usr/src  
# tar jxvf kernel-source-2.6.0.tar.bz2  
# ln -s kernel-source-2.6.0 linux  
# cd linux  
# make menuconfig  
# make-kpkg --revision tpx20.01 kernel_image  
# cd ..  
# dpkg -i kernel-image-2.6.0_tpx20.01_i386.deb  

以上でカーネル入れ換えは完了です。このままリブートすることで新しい kernel 2.6 が利用できます。僕の環境ではごく普通に立ち上がり、今までと変わらず使うことが出来ました。1点、サウンドドライバを OSS から ALSA へ切り替えた関係で、/etc/modules の記述を変更する必要がありました。

[変更前]

# /etc/modules: kernel modules to load at boot time.  
#  
# This file should contain the names of kernel modules that are  
# to be loaded at boot time, one per line.  Comments begin with  
# a `#', and everything on the line after them are ignored.  
cs4281  
ipchains  

[変更後]

# /etc/modules: kernel modules to load at boot time.  
#  
# This file should contain the names of kernel modules that are  
# to be loaded at boot time, one per line.  Comments begin with  
# a `#', and everything on the line after them are ignored.  
snd-cs4281  
snd-pcm-oss  
snd-mixer-oss  
ipchains  

他にも、通常の kernel 2.4 からアップグレードした方は、X Server の nice 値を -10 から 0 へ変更した方が良いかもしれません (「dpkg-reconfigure xserver-common」で変更出来ます)。僕は以前、ck カーネルに切り替えた時に変更済みでした。

現在のところ分かっている不具合としては、VMware が起動出来ない点くらいです。vmware-config.pl をやり直してもカーネルモジュールの作成に失敗してしまうのですが、Google 先生に聞いてみたところ動かすための手はあるらしい。引き続き調査中。

さて、しばらく使ってみよう…。

birdま、またしても…

ま、またしても…

サーバが止まってました。いかんいかん。ログを見ると今朝の 8:00 過ぎから今 (16:30 頃) まで止まっていたみたい。
しかし、なぜいきなり apache が消えるかなぁ…1。とりあえず cron で5分毎にチェックすることで対処。バータリーだ…。

birdランク王国, 薄いDVD, favicon.ico

ランク王国

を見ていたら、なんとあの新しいキャラメルコーンのかわいいパッケージは中田英寿がデザインしたとの情報が!
有名な話なのでしょーか?結構びっくりした…。
ググッてみたところ、1) かなり有名な話らしい、2) 直接デザインしたわけではなくて、デザインチームにいくつかアイディアを出した、という話らしい。
ふむー。知らなかった…。

薄いDVD

kakaku.com の掲示板を見ていて知ったのですが、巷には普通より薄い DVD もどきというようなものが存在するようで (例えばコレ?)、おまけ DVD などの分野に利用されているらしい。やっかいなことに、こういった薄いディスクを PSX に入れると出てこなくなることがあるらしい。
知らなかった…。気をつけねば。

favicon.ico

アイコンファイルを用意してみました。ico ファイルって、はるか昔の記憶 (Windows 3.1 時代?・笑) では実体は BMP ファイルだったと思ってたんですが、favicon.ico ファイルに関しては GIF ファイルなどでも良いのですね。知らなかった…。
今日は初めて知ったことばっかりだ。

First | Prev | 422 | 423 | 424 | 425 | 426 | Next | Last