自作のソフトウェアが、ハイパースレッドやマルチプロセッサ環境で正しく動作するかを確認するする手法やツールにはどのようなものがあるでしょうか?

ソフトウェアの作成方法についてのガイドラインはいくつか見ましたが、客観的にテストできるツール類の情報がなくて困ってます。
現状は、インテルスレッドチェッカーの評価版を使用してみる予定です。
動作環境は、OS:windows2003,開発環境は VisualStudio 2005。
ソフトウェアの種類はDB,IISと連携するサーバアプリケーションです。

回答の条件
  • 1人2回まで
  • 登録:2007/04/09 13:13:43
  • 終了:2007/04/16 13:15:03

回答(3件)

id:studioes No.1

studioes回答回数523ベストアンサー獲得回数612007/04/09 14:04:52

ポイント27pt

http://www.compuware.co.jp/products/devpartner_fm/boundschecker/

こんなのもありますが・・・

 情報がないというか、選択肢がないのだと思います。

 マルチタスクによる問題を確実に確認する手法はあまり無いと思います(学会でコードからのデッドロック検出手法につての論文が出ていた気がするし) 起こらないように作るしかないんじゃ・・・

 シリアライズする。 ロックの順序を統一する。 ロック後に別のロック待ちをするときにはタイムアウトを設定する等、基本的な対策でやるしか無いかと。

 特にデータベースへのロックになってくると、追いかけるのは大変です(ユースケースに基づくテストプログラムを作って、データベース側のデッドロック検出を併用する等の力業で・・・)

id:silver_ocapi

作成するにあたっては当然気をつけるのですが、ソースコードレビューと、自分で考えたテストケース作成、バグ発生時のデバッグ以外の確認方法がないかなと思っております。

ご紹介いただきました、Bounds Checker は使用したことがないです。Purify は使用しております。紹介ページにはマルチプロセッサ特有のチェックには記載がありませんでした。

評価版がダウンロードできるようなので、後日試してみることにします。

2007/04/09 18:39:16
id:felix33 No.2

felix33回答回数343ベストアンサー獲得回数22007/04/09 21:04:46

ポイント27pt

実際に動作させてみないとわかりませんね。チップレベルでダメという場合もありますから。

id:silver_ocapi

動作させてみるとのことですが、マルチプロセッサでの動作確認ためには、このようなことをやってみるという具体的な内容はないのでしょうか?

チップレベルでということなので、問題の切り分けのためのリファレンスチップセットと比較するとかでしょうか?

2007/04/09 22:08:49
id:kurukuru-neko No.3

kurukuru-neko回答回数1844ベストアンサー獲得回数1552007/04/11 05:30:09

ポイント26pt

あまりツールには頼れないとおもいますよ。

同時稼動するたとえ正常に排他制御がされても

それだけでおよいと言うわけでもありません。

プロファイラーでの解析や、デッドロック

は必ず発生する前提でコードを作成して対策

(トレース)していないと再現も困難です。

試験時サーバー側のCPUの処理能力に

応じた並列度で試験を繰り返し自動実行

して期待した結果と、統計情報を得て

解析するしかないような気がします。

http://support.microsoft.com/kb/231282/ja

http://q.hatena.ne.jp/1112054078

なげやりですがもうすぐセミナーがあるので

質問してみるとか?

http://www.xlsoft.com/jp/products/intel/college/seminar_multicor...


>チップレベルでということなので

CPU、チップセットレベルの不具合

と言う事では?

コンパイラもありますが。

id:silver_ocapi

セミナー情報ありがとうございました。早速申し込んでみました。インテル製品を買ってねということなのでしょうが、使ってみるつもりだったのでデモを見ることができて助かります。他には近日ソフトウェア開発環境展があるので、何かないか見てみます。

ツールに頼りきるつもりはなくて、アプリケーションとしてのテストは当然行って、マルチプロセッサのケースに特化した手法があるかなぁということです。

プロセッサ数を増やして負荷テストを中心にテストを行ってみるということでしょうか?

この場合も、どこまでやればOKとするのかは難しい所ですねぇ。

自分のアプリ以外のバグはとりあえず範囲外かと。OSやライブラリのバグとか言い出したらきりがないので。当然切り分けは必要なのですが。

世間で、ハイパースレッド対応とうたってるソフトウェアは何でOKとしてるんでしょうねぇ。

2007/04/11 08:07:33
  • id:kurukuru-neko


    並列処理関係で検索すると

    http://www-06.ibm.com/jp/developerworks/java/060426/j_j-contest.shtml

    特に2.~
    http://www.synopsys.co.jp/products/technology/mask_synthesis/mask_syn.html

    などとともにモデル検査と言うものがでてくる。

    モデル検査ツール(NuSMV,Spin)等で
    論理検証及び、実際のテストパタン
    決定を補助する仕組みらしい。

    http://unit.aist.go.jp/cvs/symposium/verification2004/sympo04slide/sympo04slide-mizuguchi.pdf

    http://www.aist.go.jp/aist_j/aistinfo/aist_today/vol03_10/p11.html
  • id:silver_ocapi
    silver_ocapi 2007/04/12 07:52:21
    ConTest,NuSMV どちらも知りませんでした。

    ConTest 使ってみたいけど、Javaのみというのは残念、、。

    NuSMVはモデルを作ることになるけど、そのモデルの正しさを検証することになり、ほとんど設計と同じになるので大変そうですねぇ。当然やったほうがいいのだけど。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません