IEC アプリケーションのメモリ消費量が増加しています。
準備:
次のようなランタイムシステムが必要です CmpMemGC
コンポーネントは有効でアクティブです。このコンポーネントがランタイムログに読み込まれているかどうかを確認できます。
トラブルシューティング
IEC アプリケーションを一定時間稼動させた後に異常な影響 (ライセンスステータスが失われたり、新しいメモリを割り当てられないなど) に気付いた場合は、メモリリークが原因である可能性があります。
これらの影響を調査し、問題の原因を突き止める必要があります。
CODESYS メモリデバイストレース
この関数は、ランタイムシステムバージョン SP19 (SL バージョン 4.9.0.0) 以降で使用できます。これはとても簡単に使えます
ランタイム環境で設定を有効にします。
を使用してランタイムを停止します Deploy Tool.
経由でターゲットシステムに接続します
putty
または別の SSH クライアント。ランタイム環境の設定ファイルをテキストエディタ (nano など) で開きます。
sudo nano /etc/codesyscontrol/CODESYSControl.cfg
で
CmpMemGC
セクション、エントリを追加EnableMemTrace=1
。[CmpMemGC] EnableMemTrace=1
ファイルを保存して閉じます。
を使用してランタイムを再起動します。 Deploy Tool.
デバイストレースをあなたのデバイスに追加してください CODESYS プロジェクト (この問題が発生する場所)。
デバイスツリーで、デバイスを右クリックします。
クリック [オブジェクトを追加] → デバイストレース。
ザ・ デバイストレース オブジェクトはコントローラーの下に挿入されます。
ザ・ デバイストレース タブが表示されます。
をクリックします トレース → トレースをアップロード コマンド。
ザ・ デバイス 'Codesys_Control_for_Linux_SL' のオンライントレース ダイアログが開きます。
見つからない場合 MemgcTrace と入力すると、手順 1 の設定が正しく設定されていません。コントローラがメカニズムをサポートしていない場合は、次の 2 つのオプションのいずれかを使用して診断してください。
選択してください MEMGC トレース 入力してクリック アップロードしてダイアログを閉じる。
メモリトレース (
MemGCTrace
) がに追加されましたDeviceTrace
。
詳細については、以下を参照してください。 コマンド:トレースをアップロード
CODESYS ライブラリ:システムメム
プログラムから内部情報にアクセスすることもできます。IEC ライブラリ関数を使用して、割り当てられているすべての RAM/ヒープメモリの現在の概要にアクセスできます
SysMem.SysMemGetCurrentHeapSize()
この値を使用して、現在のヒープサイズを確認できます。この値は確認することも、トレースに書き込むこともできます
これは、割り当てられたメモリの増加が IEC アプリケーションの他の特定のイベントによって時間的に増加したかどうかを判断するのに役立ちます。
Linux コマンドライン
Linux コンソールに (たとえば SSH クライアント経由で) アクセスできる場合は、メモリの動作を確認することもできます。
これを実現するためのさまざまなツールとコマンドがあります。
トップ/トップ
これらは Linux システム上のプロセス (およびスレッド) を分析するためのグラフィカルツールです。
ほとんどすべてのLinuxディストリビューションにこれらのツールが提供されているため、次の方法で簡単にインストールできます apt
または dnf
またはディストリビューションのパッケージ管理
htop # or top
どちらのツールでも、ツリービューでスレッドを確認したり、ツリービューを分析したりできます。 CODESYS ランタイムプロセスとそのスレッド。各 IEC タスクは pthread
ランタイムプロセス内。
htop ツールでは、次の方法でビューをカスタマイズできます F2 (セットアップメニュー): 有効にすることをお勧めします Tree view
と Show custom thread names
オプション。
上部では、キーの組み合わせでツリービューを有効にできます Shift + V したがって、スレッドごとの CPU 使用率/メモリ使用量が表示されます。これは、割り当てられたメモリの増加が IEC アプリケーションの他の特定のイベントによって時間的に増加しているのか、それともメモリリークが発生しているのかを判断するのに役立ちます