スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

mp3日本語タグをLinuxで編集 

mp3日本語タグをLinuxで編集したい。
環境はFedtoraCore5。パッケージで含まれているEasyTagはちゃんと日本語をいじれるのかしら?


ほんなとこ。

スポンサーサイト

I/O elevator変更 

前の記事でFedoraCore5のファイルI/Oチューニングについて書いた。
Kernel 2.6.xの時にはI/O elevatorを変更する訳だが、私のマシンではI/O elevatorとしてDeadlineへ変更してみた。これはリアルタイムOSに近い動作をする、とか書かれているのだが良く分からなかった。
個人のデスクトップマシンとして利用してみての感じは、あまり変わらないか、アプリケーションの起動にかかる時間が少し短くなった、というところ。

大きな(数GB程度)のファイル操作はまだ行っていないので、感じがどの程度変わっているのかはこれから。

LinuxファイルI/Oチューニング 

Linuxは私の使っている範囲ではファイルI/Oがパフォーマンスボトルネックになっていることが多い。で、チューニングの情報を集めてみるのだが、なかなか役立つ情報を入手できない。
決まって全般的なチューニングの進め方について述べ、次にボトルネックの調べ方について述べる。
最後にチューニングパラメータ設定手順のヒントだけを非常に簡単に挙げておわってしまう。いや、どこがボトルネックなのか最初に一発で分かればいいよ? でも全般的なチューニングの進め方でそうしたドキュメントが述べている通り、色々な可能性を繰り返しチューニングしながらつぶしていかなきゃいけないんだよね。
そのためには具体的なチューニングパラメータの設定手順がなきゃできないんだよね。それを教えろよ!それを!

ということで、今回はLinuxファイルI/Oチューニングについて調べた。大きなファイルの書き込み(ex. cpコマンド)を行うと、システムが数秒間程度反応しなくなる症状が出ているのでこれを改善したい。またファイルの書き込み速度が非常に遅い症状も同時に出ている。

症状の様子を見ている限り、大きなファイルの書き込みが始まって終わるまでの間は別のファイルI/Oが待たされてしまい、lsコマンドの様な軽い処理も反応しなくなる模様。さて、ボトルネックはどこでしょう? って、ファイルI/O以外にありえるのか?

とにかく推測が正しいのであれば、解決方法は単一の大きなファイルI/Oにシステムを占有させないことに決まっている。となればI/Oスケジューラ(Linuxの用語では"I/O elevator")をいじるのが正しそう。色々と検索かけて、PDFファイルを読んでみたところやりかたは次のようなものらしい。

(1)Linux Kernel 2.4.x
現在のパラメータを調べる

# elvtune /dev/sdb

/dev/sdb elevator ID 2
read_latency: 2048
write_latency: 8192
max_bomb_segments: 6


お望みのパラメータ値を書き込む

# elvtune -r 1024 -w 2048 /dev/sdb

/dev/sdb elevator ID 2
read_latency: 1024
write_latency: 2048
max_bomb_segments: 6


-r 読み込みの最大時間
-w 書き込みの最大時間
-b 書き込みを一括して最大いくつまで同時に行うか

-rや-wの値の単位がなんなのかは明示された資料をみつけられていません。多分[msec]で、2048なら2秒ちょっとになるのでしょう。確かに大きなファイルを書き込みにいって待たされるけど8秒とかで処理されるような気がするなぁ。あくまで「気がする」だけだけど。
それからelvtuneは運用中に行っても安全、とわざわざ書かれていたので安心して実行して良い、はず。

(2)Linux Kernel 2.6.x
I/Oスケジューラの種類を選ぶ。Linuxの用語では"I/O elevator"を選ぶ訳ですな。

/boot/grub/grub.conf

title Fedora Core (2.6.16-1.2111_FC5 Deadline I/O elevator)
root (hd0,0)
kernel /vmlinuz-2.6.16-1.2111_FC5 ro root=LABEL=/ rhgb elevator=ELV quiet
initrd /initrd-2.6.16-1.2111_FC5.img


上記のようにkernel行にオプションelevatorを追加してやればよい。ELVには次のいずれかが入る。
Completely Fair Queuing(default) ―> cfq
Deadline ―> deadline
NOOP ―> noop
Anticipatory ―> as

(http://www.redhat.com/magazine/008jun05/features/schedulers/ より)

FedoraCore5の場合、/boot/grub/grub.confを書き換えてリブートすればよい。grub.confの変更はそれだけで有効になります。
それぞれのI/O elevatorの動作方法は上記URLに書かれているので心配な人は確認してほしいが、簡単にまとめると、

Completely Fair Queuing(CFQ)
 デフォルト。プロセスごとにI/Oキューを用意し、I/O帯域を公平に振り分けようとする。中規模から大規模なマルチプロセッサシステムや、複数のLUNやコントローラに対してバランス良く振り分けることが必要なシステム向け。

Deadline
 遅延を小さくすることを目的としたもの。realtimeシステムに近い動作を行い、ラウンドロビンで複数のI/O要求を公平にさばこうとする。5本のI/Oキューを持ちアグレシッブに順序入れ替えを行ってパフォーマンスを稼ぐ。

NOOP
 非常にシンプルなFIFO。大きなI/Oとかあったらシステムをブロックしそうだね。

Anticipatory
 アグレッシブな順序入れ替えを行って遅延を小さくしようとする。小さく遅いディスクを持つシステム向け。

となる。RedHat4では4つのI/O elevatorは組み込みだそうで、特に用意しなくてもデフォルトで使用できるとのこと。

まぁ、普通はデフォルトのCFQ、問題が起きたら他を試してみる、と言うことになろうか。I/O elevatorを選んでも解決しない場合、なにがしかのパラメータを変更することになる。まだ調べてないが、/sys/block/hda/queue/iosched/* とかをいじればよいらしい。Kernel 2.6.xになって/sys/が使われるようになったばかりであるため、しばしば変更が繰り返されている模様。なので sysctl でいじるのがよいのか、どうやればいいのかもよくわからん。

取り合えず2.6.xカーネルマシンでI/O elevatorをデフォルトのCFQからDeadlineに変更してみて、挙動がどのように変更されるかを見てみているところ。

FedoraCore5でssh-agentを使う 

FedoraCore5のグラフィカルログインで使っているのだが、環境整備も落ち着いてきたの>でそろそろssh-agentを使いたい。以前はWindowsからTTSSHでの利用が中心だったため、>ログインスクリプト(~/.bash_loginだったかな?)でssh-agentの有無を確認して実行した>り、ログアウトの際にプロセスを殺したりしていた。

グラフィカルログインでの場合それではあまりうまくいかない。というかそもそも設定をしないでいてもssh-agentが起動している。あとは秘密鍵?とかをしかるべきファイルに書き込んでやればよいだけかな?

当然検索したらMakino Takakiさんのページがヒット。ここに書かれているものを参考にして設定。

[ローカル側]

% ssh-keygen -t dsa
% cat .ssh/id_dsa.pub | ssh -l REMOTE_USER REMOTE_HOST "bash -Cc 'cat >> .ssh/authorized_keys'"
% vi .bashrc
(追加)
echo -n "ssh-agent: "
source ~/.ssh-agent-info
ssh-add -l >&/dev/null
if [ $? == 2 ] ; then
echo -n "ssh-agent: restart...."
ssh-agent >~/.ssh-agent-info
source ~/.ssh-agent-info
fi

if ssh-add -l >&/dev/null ; then
echo "ssh-agent: Identity is already stored."
else
ssh-add
fi


これでOK。→後で気がついたのだけど、scpしても.bashrcのこの部分が実行される。echoを実行すると返り値が悪いのか、標準出力への出力が悪いのか分からないけど、scpがこけます。その場合には標準出力への出力部分を消去しておけばいい。

グラフィカルログインした際には、最初にパスフレーズを尋ねてくる。
シェルを起動した際にssh-agentにパスフレーズを憶えさせていなければパスフレーズを尋ねてくるし、憶えていればそのままパスワード無しでsloginできる。これでOK。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。