メインコンテンツまでスキップ

システムパネル

システムパネルには、Linux CPU カウンタ、負荷平均、メモリ使用量、SiMa MLA と EV74 のメモリテレメトリ、連続メモリ(CMA)使用量、および定期的なプロセススナップショットが統合されています。

CPU の項目​

フィールド情報源と計算方法
CPU使用率システムサンプルの間における、集計された/proc/stat CPU時間の差分。ビジー状態の割合は1 - idle_delta / total_deltaです。アイドル状態には、アイドル状態とI/O待ち状態が含まれます。
CPUコアの利用状況/proc/stat内の各cpuN行に対して、同じデルタ値を計算します。
CPU負荷(過去1分間)/proc/loadavg の最初の値。これは、実行可能なタスクと、中断不能な待機状態にあるタスクの、指数関数的に平均化された数を表します。Linux で使用されます。
CPU負荷(過去1分間の平均)load1 / logical_core_count × 100。これは表示用の正規化であり、100%を超える場合があります。

CPU使用率は、最新のサンプリングウィンドウにおける即時の処理時間を示します。負荷は、およそ1分間のキューに格納されたり、処理待ちの状態になったりします。CPU使用率が低いにもかかわらず負荷が高い場合、計算処理の飽和状態ではなく、I/O待ちや処理のブロック状態を示している可能性があります。

最初のCPUサンプリングには、以前のカウンターの基準値がなく、利用できません。

コアごとのパネルとプロセスパネル​

各コアのバーは、最新のcpuNの使用率を示します。上/下でコアを選択します。

プロセス テーブルのフィールドは次のとおりです。

フィールド意味
プロセスIDLinux プロセスの識別子。
CPU/proc/<pid>/stat に記録された最後のプロセッサ番号。これは、プロセスが最後に実行された場所であり、特定のプロセッサへの固定を保証するものではありません。
CPU使用率ユーザーとシステムで消費された CPU サイクル数の差を、経過時間で割った値を計算します。おおよそ 100% は、完全に利用されている論理 CPU 1 つを表します。マルチスレッド処理では、100% を超える場合があります。
RSS MB/proc/<pid>/stat から得られる常駐ページ数を、システムのページサイズで乗算し、MiB 単位に変換します。
名前/proc/<pid>/stat からプロセスコマンド名を取得します。

データは5秒ごとに更新されます。Sentinelは、CPU使用率とRSSの順にソートされた、上位64のプロセスのみをグローバルに保持します。選択されたコアに保持されているプロセスがない場合、UIはグローバルに保持されているプロセスのリストを表示するように切り替わります。したがって、このパネルは、すべてのプロセスを網羅したレポートではなく、診断ツールとしての役割を果たします。

Linux メモリ​

used_bytes = MemTotal - MemAvailable
used_pct = used_bytes / MemTotal × 100

MemAvailable は、/proc/meminfo から取得され、スワップを行わずに新しい処理で使用できるメモリ量を推定します。これは、Linux が回収できるキャッシュが、自動的に使用不可のメモリとして扱われないことを意味します。

MB で表示される値は、1024 × 1024 バイトを使用して計算されるため、技術的には MiB ですが、UI のラベルには MB と表示されます。

MLAメモリ​

Platform 3.0 では、/dev/dma_heap/simaai,dms が存在すると DMA-BUF テレメトリが選択されます。Sentinel は /sys/kernel/debug/dma_buf/bufinfo を読み取り、MLA ヒープ(mla または simaai,dms)がエクスポートしたオブジェクトに、MLA だけが使用する共有プールのバッファ(EV74 段を使わずに CPU が準備する入力や、MLA ヒープから CMA にあふれた MLA の割り当てなど)を加えて合計し、各 DMA-BUF inode を 1 回だけ数えます。EV74(cvu)も使用する共有プールのバッファは MLA メモリではありません。EV74 が MLA のために書き込む前処理済み入力は EV74 メモリとして数えられます。したがって 1 つのバッファが両方の合計に入ることはなく、EV74 メモリと MLA メモリは足し合わせることができます。

このヒープが存在しない以前のリリースでは、Sentinel は /dev/simaai-mem を読み取り、Total allocated size: に続く 16 進数のバイト数を解析して MiB に変換します。

これは、現在 MLA に割り当てられているメモリです。以下のいずれでもありません。

  • MLAによる計算リソースの使用状況の集計。
  • モデルの FPS(1 秒あたりのフレーム数)または遅延。
  • システムで使用されている物理 DRAM の合計量。
  • MLA 0.68V の電力の測定値。

選択されたインターフェースを読み取れない場合、またはテキスト形式を認識できない場合、値はゼロではなく「利用不可」となります。DMA-BUF テレメトリを選択した後に、Sentinel がレガシーアロケーターへフォールバックすることはありません。

EV74 メモリ​

Platform 3.0 では、EV74(CVU)は DMA-BUF メモリを使って処理します。EV74 がバッファを使用している間、カーネルは cvu デバイスをそのバッファの接続デバイスとして /sys/kernel/debug/dma_buf/bufinfo に記載します。Sentinel は cvu、または <address>.cvu という名前のデバイスに接続されたオブジェクトを合計し、各 DMA-BUF inode を 1 回だけ数えます。バッファはそれを生成したハードウェアに属するため、次の 2 種類のオブジェクトは除外されます。MLA ヒープ(mla または simaai,dms)がエクスポートしたオブジェクト(MLA メモリ)と、ビデオデコーダーまたはカメラ ISP が EV74 に読ませるために生成したフレームです。Sentinel はこれらの生成元を /sys/bus/platform/devices 以下のデバイスツリーノードから判別します。ビデオデコーダーは al,ip-type が dec で始まり、カメラ ISP は compatible に arm,isp を含みます。

ev74_mem_allocated_mb = sum of sizes of unique inodes attached to cvu,
excluding those exported by an MLA heap
and those also attached to a video decoder or camera ISP

EV74 の各クライアントはバッファに個別に接続するため、1 つのバッファに cvu が複数回記載されることがよくありますが、数えるのは 1 回だけです。Sentinel は MLA と EV74 のメモリのために、サンプルごとに bufinfo を 1 回だけ読み取ります。System タブはこの値をグラフ表示し、Compare Runs タブでは選択した実行に EV74 memory を重ねて表示できます。

この値は次の制限を踏まえて読んでください。

  • EV74 と MLA が共有する共有プールのバッファは、どちらが書き込んだかにかかわらず EV74 メモリにのみ数えられます。テストしたパイプラインでは、これらは EV74 がモデルに渡す前処理済みテンソルです。EV74 メモリと MLA メモリが同じバッファを含むことはないため、2 つを足すと両方が保持するメモリになります。
  • ビデオデコーダーまたはカメラ ISP が生成したフレームは、EV74 が読み取っていても、どちらの指標にも数えられません。RTSP ストリーム 1 本では、デコード済み画像 12 枚(640x512 で 6.75 MiB)です。デコーダー自身の作業メモリも数えられません。
  • バッファは EV74 が使用した時点で数えられます。EV74 用に割り当てられても EV74 がまだ処理していないテンソルは、EV74 メモリではなく linux,cma メモリです。
  • DMA-BUF の名前は無視されます。システムデーモンは、EV74 が使用していない EV74 という名前の小さなバッファを保持しています。
  • EV74 の固定ファームウェア予約領域とカーネル内部の割り当ては DMA-BUF ではないため、含まれません。
  • CVU ドライバーがキャッシュするバッファはクライアントごとに最大 64 個です。パイプライン自身の EV74 バッファがこれを超えると、使用中のバッファが追い出され、値が低く表示されることがあります。フレームごとに新しい入力バッファを作成するアプリケーションでは、ドライバーがクライアントごとに最大 64 個の古いバッファをマップしたまま保持し、それらは割り当てられたままになるため、値が高く表示されることがあります。追い出しの回数は /sys/kernel/debug/simaai-cvu/stats で確認できます。

/dev/cvu が存在しない場合、または bufinfo を読み取れない、もしくは解析できない場合、値はゼロではなく利用不可になります。

CMA プール​

Sentinel は通常のデーモンサンプルごとに /proc/meminfo から CmaTotal と CmaFree も読み取り、次の値を報告します。

CMA used = CmaTotal - CmaFree

CmaTotal は起動時に予約されたすべての CMA 領域を含みます。CmaFree には、Linux が CMA に配置し必要に応じて移動するページキャッシュなどの移動可能ページが含まれません。そのため CMA used は割り当て済みメモリを過大に示し、EV74 メモリでもありません。アイドル状態の Modalix Platform 3.0 DevKit では約 90 MiB を示しましたが、EV74 のメモリは 0 でした。EV74 メモリには ev74_mem_allocated_mb を使用してください。

キー ev74_cma_total_mb、ev74_cma_free_mb、ev74_cma_used_mb は、既存のクライアントと記録済みの実行が引き続き読めるよう名前を変えていません。ラベルは CMA reserved、CMA free、CMA used です。チェックポイント記録には 3 つすべてが保持されます。Linux CMA はカーネルの共有機能であり、Sentinel は /proc/meminfo だけではこれらのページを個々のプロセスに帰属させることができません。どちらかのフィールドが存在しない場合、算出される使用量はゼロではなく利用不可として報告されます。存在するフィールドはそれぞれ単独で利用できます。

起動時の予約は次のコマンドで個別に確認できます。

dmesg | grep -i cma