0

VxWorks 5.5.1で実行されているかなり大きなアプリケーションがあり、これは約10年間開発および変更されています。あまりにも多くのメモリやプロセッサを使用していないことを示すために、いくつかの簡単な自家製ツールがありますが、実際にどれだけのヘッドルームがあるかについてはよくわかりません。将来の機能強化の見積もりを行うのが難しくなり始めています。

誰かがそのようなシステムをプロファイリングする方法について何か提案がありますか?ウインドリバーのツールを機能させることができたのは、これまであまり幸運ではありませんでした。

ボーナスポイントの場合:もう1つの問題は、システムの動作が時間によって大きく異なることです。起動中は多くのことを行い、その後、短時間のアクティビティを除いて比較的アイドル状態になります。状態情報を記録するためのプログラム的な方法を備えたプロファイラーがあれば、それも非常に役立つと思います。

FWIW、これはGCCでコンパイルされ、完全にCで記述されています。

4

3 に答える 3

4

組み込みアプリケーションを含む、さまざまな種類のソフトウェアのパフォーマンス チューニングを数多く行ってきました。メモリ プロファイリングについては説明しませんが、それは別の問題だと思います。

パフォーマンスの問題を見つけるには、さまざまな部品のパフォーマンスを測定する必要があるという「よく知られた」アイデアがどこから生まれたのか、私は推測することしかできません。これはトップダウンのアプローチであり、政府が細分化することで予算の無駄を抑えようとするのと似ています。IMHO、うまく機能しません。測定は、あなたが行ったことが違いを生んだかどうかを確認するのには問題ありませんが、何を修正すべきかを伝えるのは苦手です.

何を修正すべきかを伝えるのに優れているのは、ボトムアップのアプローチです。このアプローチでは、費やされているものの微視的な単位の代表的なサンプルを調べ、それぞれが費やされている理由の完全な説明を見つけます。これは、単純な統計上の理由で機能します。サンプルの数パーセント (たとえば 40%) を節約できる理由がある場合、平均してサンプルの 40% でそれが示され、膨大な数のサンプルは必要ありません。各サンプルを注意深く調べる必要があり、それらをより大きな束に集約するだけではありません.

歴史的な例として、これは、第二次世界大戦への米国の関与が勃発したときにハリー・トルーマンが行ったことです。防衛産業にはひどい無駄がありました。彼は車に乗り込み、工場に向かい、周りに立っている人々にインタビューしました。それから彼は米国上院に戻り、問題が何であるかを正確に説明し、それらを修正しました.

たぶん、これはあなたが望んでいた以上の答えです。具体的には、これは私が使用する方法であり、これはそのブローバイブローの例です

追加: 測定による発見という考えは、単純に自然なことだと思います。'82 年頃、私は組み込みシステムに取り組んでおり、パフォーマンスの調整を行う必要がありました。ハードウェアエンジニアは、私が読むことができるボードにタイマーを配置することを提案しました (彼の豊富な情報から提供されました)。IOW 彼は、パフォーマンスの問題を見つけるにはタイミングが必要だと考えていました。私は彼に感謝し、辞退しました。その時までに、私はランダム停止技術 (インサーキット エミュレーターを使用して行われました) を知っていて、信頼していたからです。

于 2009-07-19T16:11:14.207 に答える
1

補助クロックを使用できる場合は、SPY ユーティリティ (config.h ファイルで構成可能) を使用できます。これにより、どのタスクが CPU を使用しているかについて非常に大まかな概算が得られます。

これの良いところは、Tornado 環境に接続する必要がなく、カーネル シェルから使用できることです。

それ以外の場合、taskHookAdd を使用するという btpierre の提案は、過去に成功裏に使用されています。

于 2009-07-20T01:37:33.160 に答える
0

私は、taskSwitchHookAddおよび関連する関数(フックの削除など)に基づいてローカルで構築された監視ユーティリティを使用して運が良かったシステムに取り組んできました。

「単に」これを使用して、特定のタスクが実行するティック数を追跡します。これはプロファイリングのためのかなり大まかな情報であると思いますが、ニーズによっては役立つ場合があります。

各タスクが使用しているCPU%を確認するには、各タスクに割り当てられたティックのパーセンテージを計算します。

ヘッドルームの量を確認するには、「while(1){}」を実行する最も優先度の低い「アイドル」タスクを追加し、それに割り当てられているCPU%を確認します。大まかに言えば、それはあなたのヘッドルームです。

于 2009-07-19T04:09:18.120 に答える