2009.01.31
Tracで複数のプロジェクトを併用してマルチプロジェクト風に使用する場合、InterTrac を上手く使うといろいろと便利ですね(もちろん、正式な「マルチプロジェクト」ではないので、それ以外の点で何かと不便な点があるのも確かではありますが)。
もちろん、ホスト名を含めたURLでリンクを貼ったり、ルートからの絶対パスで指定したりすることも可能ですが、前者の場合はホスト名が変わってしまうとNGですし、後者の場合は複数プロジェクトのうち一部を別サーバに移した場合にNGになってしまいます。もっとも、後者のようなケースはまれだとは思いますが(*1)。
InterTracを使うと、URLをエイリアスのような感じで指定することができるようになりますので、URLが変わるような場合でもiniファイルを修正するだけでOK。
(*1)むしろ、リソースの都合などで複数サーバに分けて管理していたものを同一のサーバに統合するようなケースの方が多いかも。
| Permalink
|
| TrackBack (0)
2009.01.30
配布されているソースコードは1種類ですが、バイナリダウンロードの場合はJDKのバージョンにあわせて選択するPostgreSQLのJDBCドライバ。その実体はどの程度違うんだろう・・・と思っていたのですが、たまたまJDBCドライバのソースを眺める機会があったので解決。
Antでビルドする際のオプションにより、最終的にどのドライバを利用するClassファイル群ができあがるかが異なってきているようです(ビルドする際に、ソースコード(の元となるもの)内のテキストの置換を行っています)。
#単純にソースファイル一式をEclipseに取り込んだだけではコンパイルエラー出まくり(^^;
| Permalink
|
| TrackBack (0)
2009.01.29
dblink・・・接続中のデータベースから、別のデータベースに接続するための関数。分散されているデータを結合して検索したりするときに有用?
参考:PostgreSQLのdblink(database link)
まずはdblink関数のインストール。openSUSE11.1でYaSTでpostgresql-contribパッケージをインストールしている場合、必要なSQLファイルが既にコピーされているので、psqlでそれを実行すればOK。
# psql -U postgres -d testdb < /usr/share/postgresql/contrib/dblink.sql
なお、アンインストール用のSQLファイルも存在します(ひたすらDROPしていきます)。
# psql -U postgres -d testdb < /usr/share/postgresql/contrib/uninstall_dblink.sql
select文を発行する場合、
select dblink_connect('conn1',
'hostaddr=192.168.99.203 port=5432 dbname=testdb user=pguser password=pguser');
でリモートデータベースに接続し、
select * from dblink('conn1', 'select col1,col2,col3 from schema1.table1')
t1(col1 integer, col2 character(10), col3 timestamp);
でSELECT文実行。取得対象となるカラム名を全部定義する必要があるので、少し面倒かも・・・。
ちなみに、コネクションを切断する場合は、
select dblink_disconnect('conn1');
のような感じです。
とりあえず試しては見たものの、実際に(僕が)使う機会は出てくるんだろうか・・・(^^;
| Permalink
|
| TrackBack (0)
2009.01.28
10年ほど前に購入し、ここ8年ほど全くといっていいほど使っていなかったPC-9821をいよいよ処分することに。
86音源やS-MPUを追加していたり、メモリは80MB(!)もあったり、割り込みの都合上HDやCD-ROM等をフルSCSIで構築していたりと、まぁそれなりに強化していた(?)マシンではあるのですが、いかんせん使い道がない(^^;
MIDIデータの作成/再生用・・・ということで長年置いてはいましたが、まぁそろそろいいかなぁ、と(笑
で、悩んだのが、HDDのデータの取り扱い。まぁ、4GBしかありませんが、何とかきれいにしておきたいところ。ただ、つながっているマシンが98っていうのと、規格がSCSIっていうのがネックに。1CD Linuxが使える環境ならそれで起動してddで消せますし、あるいはIDE/ATAなら、手頃なマシンにつないでそちらで抹消という選択肢もあるかと思うのですが。
仕方がないので、これまた10年ぶりくらいに、QuickBASICを使い、無限ループでファイルを出力するだけのプログラムを作成して実行(笑)。久しぶりすぎたので、ファイル出力の方法を思い出すのに数分。できあがったのは、
open "d:\temp.txt" for output as #1
while 1
print #1, "1234567890"
wend
こんな感じ。ディスク容量がなくなって書込できなくなるまでひたすら書込。
#QuickBasicって、カーソルを別の行に移動させようとしたタイミングで文法チェック等が行われるんですね。
| Permalink
|
| TrackBack (0)
2009.01.27
こげつきません JNAなるもの で知ったのですが、jnaを使うと、既存のライブラリを簡単に呼び出すことができるようです。
で、試しにnlinkで呼出に失敗したDLLに対してJNAで試してみると・・・問題なく呼び出すことができました。
しかし、JNAにせよ、nlinkにせよ、インタフェースの定義(+α)だけで実際の処理を呼び出すことができるってのは楽ですね。おそらく、ライブラリ側で動的にクラスのバイナリコードを生成しているんだとは思うのですが。
#JNAのライセンスはLGPLのようで。
| Permalink
|
| TrackBack (1)
2009.01.26
ファンからのリクエストで歌う曲を選択していった加藤いづみ「Request~リクエスト~」 ・・・「風のファンタジア」を歌ったんですね(!)。
東京ということで諦めていたのですが、頑張って行けばよかったかも・・・(残念)。
「加藤いづみ」を聴くようになったきっかけはNHK-FMで流れていた Zero だった(1994年頃)のですが、覚えている範囲で一番最初に聴いた曲が 風のファンタジア なんですよね(発売直後ではなく1992年頃だったか・・・?)。もちろん、OVA ロードス島戦記 なのですが。もっとも、Sherryと加藤いづみさんとが同一人物だと知ったのは、もっと後のことですが(97年頃?)。
#ちなみに、僕がいちばん好きな曲は「切なく青い空のページ」かな。次点で「坂道」「木枯らしを抱きしめて」「この街が好きだよ」「Zero」など。
#ロードス島戦記は、伝説までは全巻揃えてました(中学生~大学生の頃)。「新」は途中で挫折してしまいましたが(^^;
| Permalink
|
| TrackBack (0)
2009.01.25
Tracの設定ファイルはinheritを指定することで「共通設定」をベースに各プロジェクトの設定を構築することが簡単です。で、各プロジェクト個別に指定した内容で上書きされます・・・が、残念ながら、上書きされるのは「セクション単位」ではなく「項目」単位なので、内容に気をつけないと、思わぬところでハマルことが。
複数のプロジェクトで、1つだけワークフローを変えるような場合(特に、変更したいプロジェクトのみワークフローがシンプルな場合)、結果としてすごく変な状態のワークフローになってしまう場合も(汗
ワークフローの部分は、複数の項目の設定を組み合わせて1つの設定になるわけですからねぇ・・・。
設定ファイルの継承ではなく、設定ファイルのincludeのようなことを行えると、セクション毎にモジュール化することでもっと柔軟に設定できそうな気もしつつ。
#ただ、inheritやincludeを多用すると、実際にどの設定が最終的に読み込まれているのかわかりにくくなってしまうというデメリットもありますが。
| Permalink
|
| TrackBack (0)
2009.01.24
PostgreSQLのストアド関数でPL/pgSQLを使ってみる練習。まずは、PL/pgSQLを使えるかどうかの確認。
psql -U username -d testdb -c "select * from pg_language;"
で、インストールされている言語の一覧を取得できます。
lanname | lanowner | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl
----------+----------+---------+--------------+---------------+--------------+--------
internal | 10 | f | f | 0 | 2246 |
c | 10 | f | f | 0 | 2247 |
sql | 10 | f | t | 0 | 2248 |
(3 rows)
ってことで、インストールされていないようなので、
createlang -h 127.0.0.1 -d testdb -U username plpgsql
で実際に使用するデータベースに対してPL/pgSQLをインストール(参考:
PostgreSQL 編19 - ストアドファンクション、function、PL/pgSQL、トリガー)。
| Permalink
|
| TrackBack (0)
2009.01.23
PostgreSQLにおいては、通常はpublicスキーマがカレントとなり、スキーマを指定しない場合はpublicに対してアクセスされます(もちろん、明示的に指定することも可能)。
カレントスキーマの情報を取得する場合は、
select current_schema();
を実行すればOK。上記のような場合は
publicが結果として得られます。ちなみに、
select current_schemas(true);
の場合、暗黙的に検索されるパス(pg_catalog)も得られます(引数がfalseの場合は、暗黙的に検索されるパスは表示されません)。
逆にカレントスキーマを設定する場合は、
set search_path to schema1;
でOK。設定は上書きされますので、publicは検索対象から外れることとなります。
set search_path to schema1, schema2;
のように複数指定することも可能です。なお、複数指定している場合、current_schema()の戻り値は先頭のスキーマとなります。
| Permalink
|
| TrackBack (0)
2009.01.21
2009.01.20
Trac/DownloadConfigに、添付ファイルの一覧を表示するマクロの機能を追加しました。
内容としては、文字通りWikiページに添付ファイルの一覧を表示し、そこからダウンロードするためのものです。
用途としては、いろんなページに散在している添付ファイルをまとめて(なるべく少ない操作で)ダウンロードするような利用方法を想定しています。
そのため、プレビュー画面を表示せずに直接ダウンロードするためのリンクと、プレビュー画面を表示するリンクの両方を表示するようにしています。
| Permalink
|
| TrackBack (0)
2009.01.19
ファイルDEメールなんてものがあるんですね。
ATOKのバージョンアップ案内が、これで送られてきました。封筒(?)をミシン目から切り取ればクリアファイルとして利用可能。当然(?)、一太郎2009/JUST Suite 2009の宣伝付き(笑)。
#ただ、切り目の部分のザラザラした感じが微妙かも。
| Permalink
|
| TrackBack (0)
2009.01.18
nlink
内容としては、JavaからDLLを呼ぶ際のラッパーのような感じですか。既存のDLLをJavaから呼び出そうと思うと、「既存のDLL(A)を呼び出すためのDLL(B)」をJavaのJNI仕様に従って作成し、DLL(B)を経由して実行する必要がありましたが、nlinkを利用すると直接DLL(A)を呼び出せるようです。
All Javaで開発できれば問題ないのですが、開発内容によってはそういうわけに行かない場合も。そういうときに便利かもしれません(ライセンスはThe MIT Licenseとのことです)。
ただ・・・チュートリアルに記載されているサンプルは問題なく動いたのですが、手元にあった「あるDLL」を利用しようとした場合、VMがクラッシュしてしまいました。いったいどこに原因があって、どのように解決すればいいのやら???(トレースにおいては、kernel32.dllの部分でエラーが発生したような感じではありますが)
ちなみに、パスの通っていないところのDLLを利用する場合は、NLink.create()を行う際に第2引数でDLLファイルを指定する必要があるようです(java.library.pathは参照されていない?)。
| Permalink
|
| TrackBack (1)
2009.01.17
今年も予約しました(笑)。>ATOK
月額版の方が安くなるという点は気にしてはいけません(^^;
#そろそろShurikenもバージョンアップしようかなぁ・・・(今使っているのはPro4)。
| Permalink
|
| TrackBack (0)
2009.01.16
VMwarePlayer2.5 + VMXBuilderの環境だと・・・VMwareTypeのHDDイメージに作成ができない?? a VMware product must be installedと記載されているのが気になるところ。というか、文字通りなんでしょうね。
VMwarePlayer2.0.xの頃は、Playerにも必要なライブラリ(or実行ファイル)が添付されていたのが、何らかの理由で2.5では添付されなくなったってことなんでしょうかね。
EasyVMXというのもあるようですが、どんな感じなんでしょうね。Webで作成したファイルをダウンロードするようなイメージですか。
| Permalink
|
| TrackBack (0)
2009.01.15
最終更新日から一定期間以上経過したチケットにおいて、アラートメッセージを表示できるようにしてみました。ダウンロードはこちらから(6.5K)
※他のカスタマイズも適用されているため、行番号は参考程度にお考えください。例によって、Trac-0.11.1-ja1に対するパッチです。
こんな感じで画面表示されます。

なお、アラートは3段階で設定することができます(フォントサイズが若干違ってきます)。
トップページにTicketQueryなどで一覧を表示させている場合に組み合わせると効果的かもしれません。
2008/02/28追記
上記のパッチだと表示対象列に status が含まれていないとエラーが出てしまいます。
if result['status'] == 'closed':
の部分を
if result.has_key('status') and result['status'] == 'closed':
のように修正すればOKです。
| Permalink
|
| TrackBack (1)
2009.01.14
TracのWikiページにおいて、ページ毎(厳密にはページ群毎)にアクセス制御を行うことができるようなプラグインを作ってみました。⇒ Trac/WikiAccessControl
| Permalink
|
| TrackBack (0)
2009.01.13
openSUSE11.1上で動作しているXen(Domain0)に、CentOS5.2をインストールしてみました。用途としては、Tracのテスト(検証&開発)環境をVMware上から持っていきたかったため(パフォーマンスもそちらの方が高そうなので)。
まずはDomainUの環境を構築。openSUSE用の環境構築の時と異なり、インストール元より先にHDD等の設定を行っても特にエラーが発生することなし(まぁ、この辺は気にしないこととしましょう)。
CentOS5.2(32bit)のDVDイメージをisoファイルで準備し、DomainUの仮想CD/DVDとしてセットしてインストール開始・・・と思ったら、インストーラは起動するものの、インストーラがisoイメージを認識してくれないという現象が。仕方がないので、ネットワーク経由でインストール。httpを選択し、今回はサイト名として ftp2.riken.jp を、ディレクトリとして Linux/centos/5.2/os/i386 を入力して実行(もちろん他のミラーサイトでもOK)。
GUIインストールモードに切り替わらず、全てテキストモードでインストールすることになりましたが、とりあえずは無事にインストール完了。その後Trac環境を構築しましたが、こちらも問題なく動作OK。
いくつか疑問点。
・GUIインストールモードに切り替わらなかったのは?
・一般ユーザを作成する画面が出てこなかったのは?
・その他各種初期設定画面が出てこなかったのは?⇒SELinuxが有効になっていたのでhttpd起動時にcannot restore segment prot after reloc: Permission deniedエラーが発生。今回はSELinuxは不要なので/etc/selinux/configファイルを編集して無効化。
インストールする時のパッケージグループによるんですかね・・・??? でも、以前VMware(あるいは実マシン)の環境を構築した時と基本的に同じようにインストールしたつもりなんですけどねぇ(CentOSのバージョンが5.0か5.2かの違いはありますが)。
| Permalink
|
| TrackBack (0)
2009.01.12
CcSelectorPlugin
プラグインをインストールしてApacheを再起動し、プラグインを有効にするだけ。それ以外の設定は特に何もないようです。
プラグインの名前からわかるとおり、Ticketの画面においてCc(関係者)の入力を一覧から選択することができるようにするプラグインです。ただし、通常の入力域(テキストフィールド)も残ったままなので、今まで通りの入力も問題なく行うことができます(既に入力されているメンバーは自動的にチェックがつきます)。
現在のバージョンでは、一覧に上がってくるのは、「cc_selector.jsにハードコーディングされている」あるいは「(該当チケットの)Cc(関係者)欄に入力されている」ものに限定されてしまうようです。作者によると、
These addresses should probably be taken from Trac database, but I'm too lazy for this - so, if you want to change this list you must edit cc_selector.js manually.
とのことです(DBからアドレスを取得すべきだが対応していないので、変更したい場合は手でcc_selector.jsを編集してください)。
Ticketのメール送信機能と組み合わせて使うような場合、Ccの入力は結構面倒なのでこのプラグインがあると楽になりそうな感じです(リストの取得の部分がネックではありますが)。
| Permalink
|
| TrackBack (0)
2009.01.11
Tracに標準で入っているRecentChangesマクロにおいて、出力結果に最終更新者およびその時のコメントを出力するように手を加えてみました。
ダウンロードはこちらから(2.4K)
#Trac-0.11.1.ja1をベースに作成しています。
| Permalink
|
| TrackBack (0)
2009.01.10
Domain0において、ハードウェアクロックをUTCではなくlocaltimeに合わせるようにしていたことが原因っぽいです。/etc/sysconfig/clockファイル内の
HWCLOCK="--localtime"
の部分を
HWCLOCK="-u"
にして再起動すると、仮想マシン上の時刻も期待通りの値を示すようになりました。
なお、Managing Accurate Date and Time 3. Linux マシンを正しく設定する を参考にしたのですが、LinuxとWindowsのデュアルブート環境の場合は上記の方法では正しく設定できないということになる・・・?
まぁ、Xenを動作させる端末においてWindowsとのデュアルブート環境を構築することはないと思いますが(仮想マシン上でWindowsを動作させることはあるかもしれませんが・・・ただ、自分の場合はこのケースもまずあり得ませんが)。
#もしかしたら、他に解決する方法があるのかもしれません。
ちなみに、openSUSE11.1では、ntpdateがdeprecated扱いになっているんですね。詳細は、Deprecating ntpdateに書かれているとのことです。これによると、sntpが後継のコマンドとなるようで。
| Permalink
|
| TrackBack (0)
2009.01.09
Ja.NET - Java Development Tools for .NET
.NETプラットフォーム向けJava 1.5
通常のJavaアプリケーションを.NETフレームワーク上で動作させることが可能(=JREをインストールせずにJavaアプリケーションを動作させることが可能?)になる、ってことなんでしょうか?
まだまだ開発中のようではありますが、他の.NET系の言語で開発されているアプリケーションと組み合わせ使うような場合に便利かもしれませんね。.NETフレームワーク以外に、Mono上でも動作することなので、Linuxでも動作可能・・・のはず。ただ、Mono上で動作させた場合、予期せぬ挙動を示した場合の追求(どこに問題があるのか)が大変になってきそうですが。
#ちなみに、JANETはJava Native ExTensionsというものもあるようですね。5年くらい更新されていないようですが(^^;
| Permalink
|
| TrackBack (0)
2009.01.08
openSUSE11.1(64bit版)にDB2Express-C9.5.2beta(64bit版)をインストールしてみたので、そのときのメモ(厳密には、Xenの仮想マシン上へのインストールですが)。
参考資料:DB2 Express-C 9.5 for Linux クイックインストール
tarアーカイブをダウンロードし、展開してインストーラを実行・・・したら、
The required library file libstdc++.so.5 is not found on the system.
というエラーが。
必要となるパッケージは、DB2 サーバーおよび IBM Data Server Client のインストール要件 (Linux)にまとめられており、パッケージとしては、libaioとcompat-libstdc++の2つ。libaioは既にインストール済みだったので、あとはlibstdc++。
YaST2のソフトウェア管理で確認すると、libstdc++43はインストール済み。
zypper what-provides libstdc++.so.5
でlibstdc++.so.5が含まれているパッケージを確認すると、
libstdc++33とのこと。ってことで、改めてYaST2からインストール(32bit版もあわせてインストール)。
あとは、developerworksのページの手順に従って作業を行えばインストール完了。ちなみに、9.5.2の場合は別途LanguagePackをインストールする不要っぽい?
#何故かメッセージが全部英語になっていましたが・・・LANGの設定の都合?
| Permalink
|
| TrackBack (0)
2009.01.07
openSUSE11.1は、PostgreSQLはパッケージで提供されていますがpgAdminIIIは提供されていません(phpPgAdminは提供されているのですが)。openSUSE11.0用のrpmは提供されているのですが、openSUSE11.1用のものはまだ提供されていないようで。
ってことで、ソースからインストールしてみました。なお、事前にYaST2から以下のパッケージおよびその依存パッケージをインストール(OSインストール時に開発関係のパッケージをほとんどインストールしていなかったため、かなり大量のパッケージのインストールが必要でした)。
・gcc
・gcc-32bit
・gcc-c++
・postgresql-devel
・wxGTK-compat
・wxGTK-devel
・libxml2-devel
・libxml2-devel-32bit (これは不要かも)
・libxslt-devel
・make
| Permalink
|
| TrackBack (0)
2009.01.06
時々(?)、Xenの仮想マシン起動時に、
XENBUS: Waiting for devices to initialise: 295s...290s...285s...
という感じでOS起動に5分ほど待たされることが。よくよくメッセージ(スペルが間違っているような・・・?)を見ていると、上記待ち処理の直後に
XENBUS: Timeout connecting to device: device/vbd/51728 (local state 3, remote state 5)
XENBUS: Device not ready: device/vbd/51728
といったメッセージが出ていました。
単純に、デバイス接続で5分間待っていただけのようです。考えられる原因としては、OSのインストール時にCD/DVDドライブを使用したが、OS起動時に該当ドライブが(Domain0側に)マウントされていないってところでしょうか。試しに、/etc/xen/vm/(domainU-name)ファイルの
disk=[ 'phy:/dev/sda7,xvda,w', 'phy:/dev/sr0,xvdb:cdrom,r', ]
の部分をコメントアウトし、
disk=[ 'phy:/dev/sda7,xvda,w', ]
にすれば起動時の待ちが発生しなくなりました。
運用後にDomainU側でモジュールの追加が必要となった場合は、(試していませんが)xm block-attachで追加してあげればOKだと思います。パラメータはおそらく、xenの設定ファイルに記述されていた内容そのまま? だとすると、
xm block-attach /dev/sr0 xvdb:cdrom r
のような感じですればオッケーではないかと。
| Permalink
|
| TrackBack (0)
2009.01.05
ソフトウェアなどの無形資産も特許の対象となるような方向で改正が考えられているようで。
どこまでが特許の範囲になるのかよくわかりませんが、いろいろとややこしいことになりそうですね・・・。複雑な計算式やアルゴリズムなども(新規に考え出されたものは)特許の対象になったりするんでしょうか。あとは、例えばデザインパターンのようなものも??
変な方向に影響が出なければいいのですが。
| Permalink
|
| TrackBack (0)
2009.01.04
仮想ハードディスクイメージファイルをDomainUで利用している場合に、Domain0から直接(DomainUのファイルシステムに)アクセスする方法はいろいろと見受けられますが、パーティション丸ごとをDomainUに割り当てている場合の方法がどうにも見つからない。
試しに、
mount -t ext3 /dev/sda9 /mnt/domu
なんて感じで直接マウントしようとしても(/dev/sda9内にはDomainUにおいてはパーティションは1つしか作成していません)、
mount: wrong fs type, bad option, bad superblock on /dev/sda9,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
というメッセージがマウントできず。
ダメ元で、
・Xenの仮想マシンのハードディスクとして使用しているイメージファイルのマウント
・ゲストOSイメージファイルのマウント
・Dom0からDomUのイメージファイルをディスクデバイスとして扱う
・[users 6724] Re: HDD のイメージファイルの mount(Xen のイメージファイル )
を参考に、「イメージファイルを指定」している部分を、「/dev/sda9」のようにパーティションを直接指定してみて実行。
・・・問題なく、アクセスできるようになりました。注意すべき点は、オフセット値の計算を行うところでしょうか。
fdisk -l -u /dev/loop0
の結果の中の、
Disk /dev/loop0: 40.7 GB, 40797356544 bytes
255 heads, 63 sectors/track, 4959 cylinders, total 79682337 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00021432
Device Boot Start End Blocks Id System
/dev/loop0p1 * 16065 79666334 39825135 83 Linux
Unitsとマウントしたいパーティションの
Startの値を乗じたもの(上記の場合、512×16065=8225280)をオフセット値として指定することになります(計算方法そのものはイメージファイルを使用した場合と同様)。
| Permalink
|
| TrackBack (0)
2009.01.03
xm shutdownの挙動の続き。
XenでドメインUの仮想CPU数を絞る方法によると、dom0_max_vcpus=1オプションなるものがあるようで。
/boot/grub/menu.lstファイル内の
kernel /boot/xen.gz
の部分を、
kernel /boot/xen.gz dom0_max_vcpus=1
のような感じでオプションを追加して再起動。この状態だと、xm shutdownを行った場合も、問題なくDomainUのプロセスが終了してくれるようです。
ちなみに、/etc/xen/xend-config.sxp ファイルのdom0-cpusで設定を行った場合と、xm vcpu-listで表示される結果が異なってきていたりします。dom0-cpusによる設定の場合は、CPUは割り当てられた状態で、かつ、sleep状態になっているようなので(kernelパラメータの場合はそもそもCPUが割り当てられずリストに表示されない)、このあたりがshutdownの動作に影響しているのかもしれません。
なお、pgbenchの結果としては、xend-config.sxpでCPU割当を"1"に指定した場合とほぼ同じ(誤差の範囲と思われる)パフォーマンスでした。
#起動時オプションとしては、他にdom0_mem=512Mのように、Domain0に割り当てるメモリ量の設定もあるようです(オプション一覧はあるんでしょうかね?)。
| Permalink
|
| TrackBack (0)
2009.01.02
仮想マシン上のOSをシャットダウンする場合、DomainU上でshutdownコマンドを実行するか、あるいはDomain0でxm shutdown (domainU-name)を実行することになるのですが・・・Xen)Domain0/Uの比較 で書いたようにdom0-cpusの値をセットした場合、ステータスが「シャットダウン中」のまま、いつまでもプロセスがなくならないという現象が発生(どちらの方法でshutdownした場合も同じ挙動)。
dom0-cpusの設定を元に戻すと、きちんとプロセスも終了するようになったので、おそらくこの部分の設定が影響しているのだとは思うのですが、はて?
もちろん、xm destroy (domainU-name)を実行するとプロセスも終了させることができますが、果たして、これでいいのやら?(ちなみに、shutdownが効かない状態だと、rebootなども反応してくれませんので、こちらの方が影響が大きいかも)
Domain0に割り当てるCPU数は、基本的に無制限にして使うのが一般的なんですかね??
| Permalink
|
| TrackBack (1)
2009.01.01
Domain0/Uのpgbenchの比較の続き(?)。
【通常のカーネルで起動】
tps = 182.361199 (including connections establishing)
tps = 182.918370 (excluding connections establishing)
【Xenカーネルで起動:ただしDomainUは起動しない状態】
tps = 183.628384 (including connections establishing)
tps = 184.206425 (excluding connections establishing)
Domain0のみを稼働させている場合と、そもそも通常のカーネルで起動している場合の結果はほぼ同じで誤差の範囲と考えてもいいのではないかと。念のため、この状態でDomainUを起動して再度測定したところ、前回とほぼ同じ結果となりました。
ただ、DomainUを1つ起動することで処理トランザクション数が1/2になってしまうのは・・・? ディスクI/Oというより、CPU数(コア数)などが関連しているんですかね??(DomainUが起動していることに伴うオーバーヘッドは発生しているはずですし) 残念ながら、テストに使っている端末はDualCoreなCPUが1つだけなので、これ以上DomainUにコアを割り当てても意味のある結果になることかどうか(DomainUに2つを割り当てると、Domain0の分とあわせて物理コア数を超えてしまうので)・・・。3つ以上コアがある端末で、1つ割り当てた場合と2つ割り当てた場合を比較してみたいところです。
・・・その後、Domain0に割り当てる仮想CPU数を強制的に"1"にして、DomainUを起動しない状態で測定して見れば、ある程度参考になる値が取得できるのでは、と思って、やってみました。以下は、Domain0およびDomainUに割り当てる仮想CPU数をいずれも1にした状態で測定しています。
【Xenカーネルで起動:ただしDomainUは起動しない状態】
tps = 98.802046 (including connections establishing)
tps = 98.967479 (excluding connections establishing)
【DomainUを起動した状態のDomain0】
tps = 97.078513 (including connections establishing)
tps = 97.241328 (excluding connections establishing)
【DomainU】
tps = 87.488402 (including connections establishing)
tps = 87.615929 (excluding connections establishing)
上記の結果からすると、単純に割り当てられているCPU数(コア数)に依存しているって感じですね(PostgreSQLの挙動からすると、その通りの結果ではありますが)。この状態だと、Domain0と比べるとDomainUは10%強のパフォーマンス低下のようで。前回の測定より全体的にパフォーマンスが向上しているのは、前回は結果として仮想CPU数が全部で3個になってしまっていた(物理コア数を超えている状態)ことが影響していたのではないかと推測。
ってことは、実際に環境を構築する際は、Domain0の仮想CPU数も調整し、トータルで物理CPU数(コア数)を超えないようにした方がいいって感じでしょうか。Domain0のCPU数は、/etc/xen/xend-config.sxp ファイル内に(dom0-cpus 1)のような感じで記述すればOKです(OSの再起動が必要?)。なお、このファイルの内容に関しては、xendの設定 VA Linux Systems Japanのページにまとめられています。
| Permalink
|
| TrackBack (1)
Recent Comments