アーカイブ

‘FreeBSD’ タグのついている投稿

16進ダンプするコマンド

2009 年 7 月 29 日 コメントはありません

『16進ダンプする』
では

% od -Ax -txC <file>

とすると書いたけどhdというコマンドがあった。

% hd <file>

で16進ダンプできる。

カテゴリー: コンピュータ タグ: ,

[MT4.2] 再構築時にデータベースへの問い合わせにかかる時間

2009 年 7 月 20 日 コメントはありません

MovableTypeではページの生成に非常に時間がかかる。

mod_perlやFastCGIを導入すればバイトコンパイルにかかる時間分を短縮できるが、再構築は分単位で時間がかかる処理のため、バイトコンパイルにかかる時間は無視できる程度になってあまり効果が出ないと思われる。

MTからデータベースへのクエリの発行回数を減らす (mt-search.cgiを例にとって)。』ではデータベースへの問い合わせ回数を減らすことでページの生成時間を減らそうとしているが、アムダールの法則で、問い合わせにかかる時間が全体のうちに占める割合で効果が限定される。

自分の環境ではどうだろうかと思ってデータベースへの問い合わせにかかる時間を計ってみることにした。

環境は

CPU Celeron 2.0GHz
chip set i865G
memory PC2700 768MB
OS FreeBSD 7.2
DBMS MySQL 5.0.77_1
MovableType 4.2.61

という感じで、ウェブサーバと同じマシンでmysqldを動かしている。

index_page.log
インデックスページのみを再構築したときのクエリログは上のようになった。

全体で449クエリ。そのうちSELECTが437クエリ、UPDATEが4クエリ、SETが8クエリ。

次にこのログを元にインデックスページ再構築時と同じクエリ列(query.txt)を作って

% time mysql -u root -ppasswd databese < query.txt > /dev/null

のようにして問い合わせ時間を計測した。

結果

0.086u 0.053s 0:02.13 6.1%      125+1371k 0+0io 0pf+0w
0.100u 0.046s 0:02.19 6.3%      87+977k 0+0io 0pf+0w
0.106u 0.034s 0:02.22 5.8%      130+1432k 0+0io 0pf+0w
0.115u 0.023s 0:02.20 5.9%      88+1001k 0+0io 0pf+0w
0.067u 0.074s 0:02.23 5.8%      109+1236k 0+0io 0pf+0w

となって5回平均で2.19秒かかっていることになる。

再構築時間が最短で13秒かかっているので、オーバーヘッドを含めずに17%程度がデータベースへの問い合わせにかかっている。

オンデマンドに問い合わせているだろうから、データベースサーバを置くマシンを別にしても大差ないだろう。

問い合わせ時間が0秒になっても10秒以上かかっていて、今のところ影響は少ないけど2割を超えてくると注意する必要があるかもしれない。

ftpコマンドで一括転送

2009 年 7 月 17 日 コメントはありません

ftpコマンドでファイルを一括転送するにはmget、mput、mdel内部コマンドをつかう。

>mget *.html

対話モードでは1ファイルごとにダウンロードするか聞いてくるのでprompt内部コマンドで非対話モードに切り替えておく。

カテゴリー: コンピュータ タグ: , ,

[FreeBSD] iP4600の設定とPostScriptプリンタ化

2009 年 7 月 3 日 コメントはありません

Canon Pixus iP4600をFreeBSD鯖につないで設定。
パラレルポートは無いようなのでUSBで接続。

/etc/printcapを設定

iP4600|Canon Pixus iP4600:\
	:sd=/var/spool/lpd/iP4600:\
	:mx#0:\
	:sh:\
	:lp=/dev/ulpt0:\
	:if=/usr/local/libexec/if-simple:\
	:lf=/var/log/lpd-errs:

スプールディレクトリ/var/spool/lpd/iP4600を作っておく。
フィルタの/usr/local/libexec/if-simpleは/usr/share/examples/printing/if-simpleにあるのでそこからコピー。

これでsambaのprintingオプションをbsdにしておけばsambaが自動でプリンタを見つけてくれる。
Windows機からCanonのドライバで印刷すればOK。

[FreeBSD-users-jp 91344] Re: 動作 報告 Canon PIXUS MP810 ( スキャナ・プリンタ複 合機)
を参考にCanonが出しているCUPS用のフィルタでPostScriptプリンタ化。

http://cweb.canon.jp/drv-upd/bj/other.html#linux

から対象機種の機種別パッケージと共通パッケージをとってくる。

rpm2cpio /PATH/TO/cnijfilter-ip4600series-3.00-1.i386.rpm | cpio -ivd
rpm2cpio /PATH/TO/cnijfilter-common-3.00-1.i386.rpm | cpio -ivd

でパッケージを展開。
/compat/linux以下にマージする。

cat psfile.ps | /usr/local/bin/gs -q -r600 -dSAFER -dNOPAUSE -dBATCH -sDEVICE=ppmraw -sOutputFile=- - | /compat/linux/usr/local/bin/cifip4600 --imageres 600 --media plain

とすれば印刷出きるので、/usr/local/libexec/psprint.shに

#!/bin/sh
/usr/local/bin/gs -q -r600 -dSAFER -dNOPAUSE -dBATCH -sDEVICE=ppmraw -sOutputFile=- - | /compat/linux/usr/local/bin/cifip4600 --imageres 600 --media plain

と書いて、/etc/printcapに

ps|lp|PostScript Printer:\
        :sd=/var/spool/lpd/ps:\
        :mx#0:\
        :sh:\
        :lp=/dev/ulpt0:\
        :if=/usr/local/libexec/psprint.sh:\
        :lf=/var/log/lpd-errs:

のように追記すれば、PostScriptプリンタ化できる。

カテゴリー: コンピュータ タグ: , , ,

環境変数の一覧表示

2009 年 5 月 12 日 コメントはありません

環境変数の一覧を出力するにはprintenvコマンドを引数無しで使う。

カテゴリー: コンピュータ タグ: , ,

FreeBSD 7.2-RELEASE

2009 年 5 月 7 日 コメントはありません
カテゴリー: コンピュータ タグ: ,

16進ダンプする

2009 年 4 月 4 日 コメントはありません

ファイルなどを16進ダンプするにはod(octet dump)コマンドを使う。

>od -Ax -txC foo.jpg
0000000    ff  d8  ff  e0  00  10  4a  46  49  46  00  01  01  01  00  60
0000010    00  60  00  00  ff  db  00  43  00  08  06  06  07  06  05  08
0000020    07  07  07  09  09  08  0a  0c  14  0d  0c  0b  0b  0c  19  12
0000030    13  0f  14  1d  1a  1f  1e  1d  1a  1c  1c  20  24  2e  27  20
0000040    22  2c  23  1c  1c  28  37  29  2c  30  31  34  34  34  1f  27
...

もとは8進ダンプするコマンドだけど-tオプションで表示形式を選択できる。

-tに続くxで16進表示を指定。続くCでcharサイズごとに区切る。

-Axオプションはアドレスの表示形式を指定している。

xで16進を指定。

FreeBSDでRAMDISK

2009 年 3 月 26 日 コメントはありません

FreeBSDでは仮想ディスクを提供するドライバmdが用意されている。

mdconfigコマンドでmd*に仮想ディスクを追加、削除できる。

RAMディスクを作成するには。

# mdconfig -a -t malloc -s 256m -u 1

などとする。
-sにはサイズ、-uには/dev/mdに続くデバイスファイルの番号を指定する。
-tにはmalloc、vnode、swapが指定できて、mallocを指定した場合には記憶領域をmalloc(9)を用いて確保する。

あとは通常のディスク同様、

# newfs -U md1
# mount /dev/md1 /mnt

としてマウントする。

仮想ディスクを解放するときは、umountした後、

#mdconfig -d -u 1

として指定した番号の仮想ディスクを削除する。

mdmfsコマンドを使えば以上のことが1コマンドで出来る。

mdmfs -M -s 5m md2 /mnt

-Mオプションは記憶領域をmallocを用いて確保するように指示する。

参考:
FreeBSD ハンドブック 15.10. ネットワーク、メモリ、そしてファイルベースのファイルシステム

カテゴリー: コンピュータ タグ: , ,

GbEの速度

2009 年 3 月 26 日 コメントはありません

「CG-SW05GTPLXB」

上ではGbE環境でのFTP転送スループットは最大で34.MB/sだった。

「おしえてブロードバンド 第52回:ギガビットイーサネットってどれくらい速いの?」

では最大で523.56Mb/s、つまり65.445MB/s、こちらのほぼ倍の速度が出ている。

もちろんこちらで計測したときにはファイルには書き込まず、GETしたデータはnullに捨ててた。

チップはRealtek8110SとMarvel88E8053のよう。

どこかにボトルネックがあるのだろうかと思ってlocalにftpしてみたら34MB/sぐらいしか出ていなかった。

どうやらサーバ側のディスクI/Oがボトルネックになっていたよう。

転送用ダミーデータをSATA接続のHDDに移してホスト1→ホスト3をもう一度計測してみた。

ホスト スループット
ホスト1→ホスト2 36.31MB/s

※ホスト1:GbE-PCI2、ホスト2:Intel PRO/1000 MT Mobile Connection

やはりディスクI/Oがボトルネックになっていた。

ネットワーク速度がHDDの速度に追いついているということは遅延を考えなければ非常に快適な環境ということ。

ホスト1はFreeBSDのサーバ機。

カーネルオプションなどでディスクI/Oのスループットが上がったりするかも。

ネットワーク自体の速度はまた計測方法を考えよう。

MailmanでリストのURLを変更する

2009 年 3 月 26 日 コメントはありません

Mialman運用中にサーバのホスト名が変わったり、WWWのポートが変わったりするとMailmanが持っているリストのURLと食い違ってしまい、ウェブから設定などが出来なくなる。

リストのURLを変更するにはportsで入れた場合/usr/local/mailman/binにあるconfig_list管理コマンドで設定を変更する。

>list_config -o file_name list_name

で現在の設定がfile_nameに出力される。

>vi file_name

などで、ファイルに設定を記述する。
リストのURLを変更する項目はweb_page_url。

web_page_url = 'http://www.hoge.com/mailman/'

のようにMailmanスクリプトまでのURLを指定してやれば良いみたい。

>list_config -i file_name list_name

で設定を登録して完了。
デーモンを再起動する必要はなかった。

カテゴリー: コンピュータ タグ: ,