Power shellを用いたシステムレイテンシ計測

Power shellを用いたシステムレイテンシ計測#

システムの可用性を評価する方法にはさまざまな方法があります。TwinCATでは、特にEtherCAT のI/O制御に至るまでのリアルタイム性能が維持できているかを測る指標としてレイテンシ値を計測することができます。この値を長期的に計測することでシステムが安定稼働できているか評価することが重要となります。

本章では、その簡易的な手法としてPower shellのスクリプトを用いてログを記録する手順を示します。

ここで計測できるレイテンシ値は、 “Max latency” と呼ばれるもので、TwinCATがConfiguration modeからRun modeへ移行して以来、最大値を更新した値を保持するものとなっています。

一定の周期でIPC上の各リアルタイムコアの最大レイテンシの変化トレンドをCSVファイルに記録することができるため、どのタイミング(時刻)でレイテンシのピークを迎えたのかを判別することで問題の要因を特定することができます。

構成#

  • Windows Powershell5.1 以上

  • Ver 3.1.4024.10 以上のバージョンのTwinCATTE1000XAE

注釈

PowerShellツールを動作させるレイテンシログ収集用のPCでは各種PowerShellモジュールをインターネット経由でインストールするため、インターネット接続が必要です。

警告

制御しているIPC上にTcXaeMgmtをインストールしてログ収集することも可能です。この場合もセットアップ時にIPCのインターネット接続が必要になります。ただし、IPCではTwinCAT XAR 動作のためにWindows Defenderを有効にする事ができませんので、セキュリティ上のリスクがある事をご承知おきください。

準備#

TcXaeMgmtの最新バージョンへの更新#

TcXaeMgmtの最新版のインストールを参照してください。

ツールの実行#

  1. レポートツールの展開
    LatencyReport.ps1を適当な場所へ配置

  2. 配置した場所でPowerShellを起動してコマンド実行

    PS> LatencyReport.ps1 -NetId 5.28.170.190.1.1 -wait_time 100 -stop_time "2022-09-20 12:00:00"
    
    NetId

    観測したいXARが動作するPLCのAMS NetIDを指定する。省略した場合は同一ホスト上のXAR(“127.0.0.1.1.1”と同じ)に接続。ターゲットIPCのNetIdは次の通りEdit Routesの一覧から参照

    wait_time

    観測後、この指定ミリ秒経ってから次の計測を行う。省略した場合は待機なし(0ミリ秒)として、即次の計測を行う。(例:10秒なら10000)

    stop_time

    この指定時刻になったら計測を終了する。省略した場合は10秒後の時刻が指定される。

  3. stop_timeで指定した時間まで、wait_timeの時間間隔で以下のフォーマットでコンソール画面への表示と、CSVファイルへの出力が行われる。

    コンソール画面表示

    以下の通り処理が進む毎に表示される。

    PS > ./LatencyReport.ps1 –NetId 169.254.230.17.1.1 –stop_time "2022-09-21 10:42:21"
    Time Core ID Latency Max Latency
    ---- ------- ------- -----------
    2022/09/26 11:58:45.667 1 0 8
    2022/09/26 11:58:46.064 1 0 8
    2022/09/26 11:58:46.178 1 0 8
    2022/09/26 11:58:46.295 1 0 8
    2022/09/26 11:58:46.420 1 4 8
    2022/09/26 11:58:46.545 1 0 8
    2022/09/26 11:58:46.665 1 0 8
    2022/09/26 11:58:46.782 1 0 8
    2022/09/26 11:58:46.905 1 0 8
    2022/09/26 11:58:47.024 1 0 8
    Recording finished
    
    保存されるCSVフォーマット

    latency_<<AMSNetID>>_YYMMDDhhmmss.csv

    例)

    latency_169.254.230.17.1.1_220921104221.csv

    Core ID

    割り当てたリアルタイムコア番号

    Latency

    取得した瞬間のレイテンシー

    Max Latency

    Run modeになってからの最大レイテンシー

    注釈

    Max Latencyの単位はμsです。

    警告

    Max Latencyの値についての記憶をリセットし、前回プロットしたときからの最大値に更新されます。Real Timeウィンドウ閉じると最大値リセットが止まります。

    TwinCAT XAEにてReal TimeのOnlineタブを開くと、Latencyグラフにプロットするたびに最大値