- PR -

マルチスレッド動作を確認したい

投稿者投稿内容
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-05-18 17:57
機能確認試験の試験項目はこれから作成するのですか? 問題の同期処理を外そうが外すまいが、
アプリケーションに対する要件が変化したわけではないので、機能確認試験とやらの内容が
変わる訳ではないですよね?
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-05-18 18:10
引用:

ukさんの書き込み (2005-05-18 17:57) より:
機能確認試験の試験項目はこれから作成するのですか? 問題の同期処理を外そうが外すまいが、
アプリケーションに対する要件が変化したわけではないので、機能確認試験とやらの内容が
変わる訳ではないですよね?




今作成中です。

そういう意味で言うと、基本機能は変わったわけではないが、修正によるデグレ確認
という言い方の方がわかりやすいかもしれないですね。

それとシュンさんのおっしゃるようにリモートデバッグか何かで見るのは多いにアリ
だとは思いますが、サーバ側の起動スクリプトの変更などちょっとわずらわしい面も
ありますね。

実施員は私ではないかもしれないため、万人が比較的簡単にできるような確認方法を
模索しております。
# 難しいけど
a-san
常連さん
会議室デビュー日: 2004/03/15
投稿数: 30
投稿日時: 2005-05-18 18:14
あるブロック内を複数のスレッドが同時に実行しているのを確認すればいいんですよね?
こういうのはどうですか?
コード:
static int count = 0;
    //synchronized(hoge) {
        count++;
        if (count > 1) System.out.println("複数のスレッドから呼ばれました");

        ...

        count--;
    //}


(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-05-18 18:29
引用:

a-sanさんの書き込み (2005-05-18 18:14) より:
あるブロック内を複数のスレッドが同時に実行しているのを確認すればいいんですよね?
こういうのはどうですか?
コード:
static int count = 0;
    //synchronized(hoge) {
        count++;
        if (count > 1) System.out.println("複数のスレッドから呼ばれました");

        ...

        count--;
    //}




]

ソースに手を入れるのが一番簡単だとは思うんですが
なにぶん試験なもんで簡単にコード修正できないんですよねぇ。


今のところ、スレッドダンプ複数回とってwaitがないことを確認する
で十分かなとも思ってます。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-05-18 18:30
対象のソースコードをいじっていいのなら、長時間のSleepでもかませるのが
手っ取り早いと思いますが。


サーバーの起動スクリプトの変更って面倒ですか?
JVM起動時引数にこんなのを一行追加するだけですよね…

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=<port-number>,server=y,suspend=n
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-05-18 18:45
引用:

シュンさんの書き込み (2005-05-18 18:30) より:
対象のソースコードをいじっていいのなら、長時間のSleepでもかませるのが
手っ取り早いと思いますが。


サーバーの起動スクリプトの変更って面倒ですか?
JVM起動時引数にこんなのを一行追加するだけですよね…

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=<port-number>,server=y,suspend=n



はい、わかっております。
面倒と言ったのは「政治的に面倒」ということです。

たかだか一項目ごときで環境に手入れんじゃねーよ、と言われそうでこわいです。
# 何故かというと大きいシステムで、方々から検証されてまして。
# 簡単にstop&startができないので

ただ、ちょっとこの項目をここでやるべきかどうかも悩ましくなってきたので
その辺も含めて検討しようかと思います。

項目としては、そのようにパラメータ変更を記述しておいて、後でできないと
なったら性能試験で確認とかもアリかなとか思ったり。
# 性能試験だと色々モニタリングとかもするだろうし
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-05-18 19:22
なるほどです。

デバッグ実行だのソースコード修正だのは、あくまで動作確認レベル
の確認事項としておいて、本格的な確認はロギングコードを埋め込ん
だうえで後のフェーズで、というのがしっくりきそうですね。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2005-05-18 23:55
unibon です。こんにちわ。

引用:

(株)ぽちさんの書き込み (2005-05-18 14:51) より:
何かのツールを使えば、スレッドがマルチで動作していることを確認できる
でしょうか?
# java付属のhprofとかじゃ無理ですかね・・

何か便利そうなツール等、アドバイスあればお願いします。


たとえば Windows だったら、ハイパースレッディングをオンにして、CPU 負荷が 50% + 0% = 50% にならず、50% + 50% = 100% になっているかを確認するのではダメでしょうか?
#例の件で、せっかくハイパースレッディングをオフにしたばかりなのに〜、と言われることも多そうですが。
#ほかには、ハイパースレッディングをオンにしたら、パフォーマンス云々どころかバグが出てしまった(隠れていたバグがあらわになってしまった)、となってしまう危険性(?)もありますね。これはほんとうは嬉しいことなのですが。

引用:

(株)ぽちさんの書き込み (2005-05-18 18:45) より:
# 何故かというと大きいシステムで、方々から検証されてまして。
# 簡単にstop&startができないので


しかしこれだとハイパースレッディングをオンにするのも無理っぽそう。

スキルアップ/キャリアアップ(JOB@IT)