ホームページ >テクノロジー周辺機器 >IT業界 >Ampere Altraベースのインスタンスで実行する際の10の重要な質問

Ampere Altraベースのインスタンスで実行する際の10の重要な質問

Christopher Nolan
Christopher Nolanオリジナル
2025-02-09 12:57:17730ブラウズ

Ampereシステムパフォーマンス分析:10の重要な質問と回答

10 Key Questions When Running on Ampere Altra-Based Instances

(この記事はもともとAmpere Computingによって公開されました)

アプリケーションは、新しいクラウドインスタンスまたはサーバー(またはSUT、テスト中のシステム)で実行され、パフォーマンスの問題が見つかります。または、利用可能なシステムリソースで最適なパフォーマンスを確保する必要があります。この記事では、あなたが尋ねるべきいくつかの基本的な質問とそれらに答える方法について説明します。

前提条件:仮想マシンまたはサーバーを理解する

トラブルシューティングを開始したり、パフォーマンス分析の演習を実行したりする前に、利用可能なシステムリソースを知る必要があります。システムレベルのパフォーマンスは、通常、4つのコンポーネントとその相互作用(CPU、メモリ、ネットワーク、およびディスク)に要約されます。 Brendan Greggの優れた記事「Linux Performance Analysis:60000 Millisecond Quick Result Guide」も参照してください。これは、パフォーマンスの問題を迅速に評価するための素晴らしい出発点です。

この記事では、パフォーマンスの問題をより深く理解する方法について説明します。

CPUタイプ

を確認します

$lscpuコマンドを実行します。コマンドは、CPUタイプ、CPU頻度、コア数、およびその他のCPU関連情報を表示します。

<code>ampere@colo1:~$ lscpu 

Architecture:                    aarch64 

CPU op-mode(s):                  32-bit, 64-bit 

Byte Order:                      Little Endian 

CPU(s):                          160 

On-line CPU(s) list:             0-159 

Thread(s) per core:              1 

Core(s) per socket:              80 

Socket(s):                       2 

NUMA node(s):                    2 

Vendor ID:                       ARM 

Model:                           1 

Model name:                      Neoverse-N1 

Stepping:                        r3p1 

CPU max MHz:                     3000.0000 

CPU min MHz:                     1000.0000 

BogoMIPS:                        50.00 

L1d cache:                       10 MiB 

L1i cache:                       10 MiB 

L2 cache:                        160 MiB 

NUMA node0 CPU(s):               0-79 

NUMA node1 CPU(s):               80-159 

Vulnerability Itlb multibit:     Not affected 

Vulnerability L1tf:              Not affected 

Vulnerability Mds:               Not affected 

Vulnerability Meltdown:          Not affected 

Vulnerability Mmio stale data:   Not affected 

Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl 

Vulnerability Spectre v1:        Mitigation; __user pointer sanitization 

Vulnerability Spectre v2:        Mitigation; CSV2, BHB 

Vulnerability Srbds:             Not affected 

Vulnerability Tsx async abort:   Not affected 

Flags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid 

                                  asimdrdm lrcpc dcpop asimddp ssbs </code>

メモリ構成を確認しますコマンドを実行します。コマンドは、物理的なメモリとスワップメモリ​​の総量(メモリ利用の故障を含む)に関する情報を提供します。マルチチャージベンチマークを実行して、レイテンシ、メモリ帯域幅、ロードレイテンシを決定します。

$freeネットワーク機能を評価

<code>ampere@colo1:~$ free 

              total        used        free      shared  buff/cache   available 

Mem:      130256992     3422844   120742736        4208     6091412   125852984 

Swap:       8388604           0     8388604 
</code>

コマンドを実行します。コマンドは、NICカードのハードウェア設定に関する情報を提供します。また、ネットワークデバイスドライバーとハードウェア設定を制御するためにも使用されます。クライアントサーバーモデルでワークロードを実行している場合は、クライアントとサーバーの間の帯域幅と遅延を理解することをお勧めします。帯域幅を決定するために、単純なIPERF3テストで十分であり、レイテンシのために、単純なPingテストはこの値を提供できます。クライアントサーバーの設定では、ネットワークホップを最小限に抑えることもお勧めします。 Tracerouteは、ルーティングを表示し、ネットワーク全体のパケットの送信遅延を測定するネットワーク診断コマンドです。

ストレージインフラストラクチャを理解$ethtool

<code>ampere@colo1:~$ ethtool -i enp1s0np0  

driver: mlx5_core 

version: 5.7-1.0.2 

firmware-version: 16.32.1010 (RCP0000000001) 

expansion-rom-version:  

bus-info: 0000:01:00.0 

supports-statistics: yes 

supports-test: yes 

supports-eeprom-access: no 

supports-register-dump: no 

supports-priv-flags: yes> 
</code>
ワークロードの実行を開始する前に、ディスク機能を理解することが重要です。ディスクとファイルシステムのスループットとレイテンシを理解することで、ワークロードを効率的に計画および設計することができます。柔軟なI/O(または「FIO」)は、これらの値を決定するための理想的なツールです。

次の10の質問を入力します

1。

総所有コストの主な要素の1つはCPUです。したがって、CPU使用の効率を理解する価値があります。アイドルCPUは通常、ディスクやネットワークアクセスを待つなど、外部依存関係があることを意味します。 CPUの使用率を監視し、コアの使用が均一であることを確認することを常にお勧めします。

次の画像は、

コマンドの出力の例を示しています。

10 Key Questions When Running on Ampere Altra-Based Instances

2。

最新のCPUは、P状態を使用して動作の周波数と電圧を調整して、より高い周波数が不要な場合にCPUの消費電力を削減します。これは、動的電圧と周波数スケーリング(DVFS)と呼ばれ、オペレーティングシステムによって管理されます。 Linuxでは、P状態はCPUFREQサブシステムによって管理されます。CPUFREQサブシステムは、異なるアルゴリズム(レギュレーターと呼ばれる)を使用してCPUの頻度を決定します。一般に、パフォーマンスに敏感なアプリケーションの場合、パフォーマンスレギュレーターを使用することを確認することが最善であり、次のコマンドはCPUPOWERユーティリティを使用してこれを達成します。 CPUの周波数使用率はワークロードに依存することを忘れないでください:

<code>ampere@colo1:~$ lscpu 

Architecture:                    aarch64 

CPU op-mode(s):                  32-bit, 64-bit 

Byte Order:                      Little Endian 

CPU(s):                          160 

On-line CPU(s) list:             0-159 

Thread(s) per core:              1 

Core(s) per socket:              80 

Socket(s):                       2 

NUMA node(s):                    2 

Vendor ID:                       ARM 

Model:                           1 

Model name:                      Neoverse-N1 

Stepping:                        r3p1 

CPU max MHz:                     3000.0000 

CPU min MHz:                     1000.0000 

BogoMIPS:                        50.00 

L1d cache:                       10 MiB 

L1i cache:                       10 MiB 

L2 cache:                        160 MiB 

NUMA node0 CPU(s):               0-79 

NUMA node1 CPU(s):               80-159 

Vulnerability Itlb multibit:     Not affected 

Vulnerability L1tf:              Not affected 

Vulnerability Mds:               Not affected 

Vulnerability Meltdown:          Not affected 

Vulnerability Mmio stale data:   Not affected 

Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl 

Vulnerability Spectre v1:        Mitigation; __user pointer sanitization 

Vulnerability Spectre v2:        Mitigation; CSV2, BHB 

Vulnerability Srbds:             Not affected 

Vulnerability Tsx async abort:   Not affected 

Flags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid 

                                  asimdrdm lrcpc dcpop asimddp ssbs </code>

アプリケーションを実行するときにCPUの頻度を確認するには、次のコマンドを実行します。

<code>ampere@colo1:~$ free 

              total        used        free      shared  buff/cache   available 

Mem:      130256992     3422844   120742736        4208     6091412   125852984 

Swap:       8388604           0     8388604 
</code>
3。

CPU時間の割合がユーザースペースで消費されるのか、特権時間(つまりカーネル空間)で消費されるのかを調べる必要がある場合があります。ワークロードの特定のカテゴリ(ネットワークバインディングワークロードなど)では、カーネル時間が高い場合がありますが、問題を示している場合があります。

Linuxアプリケーショントップを使用して、以下に示すように、ユーザーとカーネルの時間が消費される期間を調べることができます。

  • - 各CPUの統計を確認し、個々のホットスポット/ビジーCPUを確認します。これは、各CPU(-pオプション)の統計を報告するマルチプロセッサ統計ツールです mpstat10 Key Questions When Running on Ampere Altra-Based Instances
  • CPU:論理CPU ID、またはすべてのCPUの要約情報
  • %usr:ユーザー時間、%niceを除く
  • %いい:優先度が低いプロセスのユーザー時間
  • %sys:システム時間
  • %iowait:io wait
  • %IRQ:ハードウェア割り込みCPU使用
  • %ソフト:ソフトウェア割り込みCPU使用
  • %スチール:他のテナントにサービスを提供するために使用される時間
  • %ゲスト:クライアント仮想マシンで費やされたCPU時間
  • %gnice:優先度が低いクライアントを実行するためのCPU時間
  • %アイドル:自由時間
  • 各CPUのCPU使用量を識別し、ユーザー時間/コアタイム比、%USR、%SYS、および%アイドルを表示することが重要な値です。これらの重要な値は、単一スレッドアプリケーションまたは割り込みマッピングによって引き起こされる可能性のある「ホットスポット」CPUを識別するのにも役立ちます。

4。

サーバーを管理する場合、新しいアプリケーションをインストールする必要がある場合があります。または、アプリケーションが速度が低下し始めたことに気付く場合があります。システムリソースを管理し、システムがインストールしているシステムメモリとシステムメモリの使用率を理解するために、

コマンドは貴重なツールです。また、特に仮想メモリとメモリを積極的に交換している場合、メモリの利用を監視するための貴重なツールでもあります。

  • free。 Linux freeコマンドは、メモリと交換統計を表示します。

    10 Key Questions When Running on Ampere Altra-Based Instances

    出力は、システムのメモリ、使用されているメモリ、使用可能なメモリを表示します。重要な列は利用可能な値です。これは、アプリケーションで利用可能なメモリを示しており、交換する必要があります。また、すぐにリサイクルできないメモリを考慮します。

  • vmstat。このコマンドは、現在利用可能なメモリとページングの統計を含む、システムメモリ、健康に関する高レベルのビューを提供します。

    $vmstatコマンドは、スワップされているアクティブメモリ(ページング)を表示します。

    10 Key Questions When Running on Ampere Altra-Based Instances

これらのコマンドは、現在のステータスの要約を印刷します。列のデフォルトはキロバイトです

    SWPD:交換されたメモリの量
  • 無料:利用可能なメモリ
  • バフ:バッファキャッシュのメモリ
  • キャッシュ:ページキャッシュのメモリ
  • si:メモリに交換(ページング)
  • so:メモリを交換(ページング)
Si、ゼロ以外の場合、システムはメモリ圧力にさらされており、メモリをスワップデバイスに交換しています。

5。

十分なメモリ帯域幅を理解するには、最初にシステムの「最大メモリ帯域幅」値を取得します。 「最大メモリ帯域幅」値は、次の方法で見つけることができます。

基本的なDRAMクロック周波数
  • クロックあたりのデータ転送の数:「二重データレート」(ddr*)メモリが使用されている場合、2回
  • メモリバス(インターフェイス)幅:たとえば、DDR 3の幅は64ビット(行とも呼ばれます)
  • です
  • インターフェイスの数:最新のパーソナルコンピューターは通常、2つのメモリインターフェイス(デュアルチャネルモード)を使用して、効果的な128ビットのバス幅を実現します
  • 最大メモリ帯域幅=基本DRAMクロック周波数 *クロックあたりのデータ送信数 *メモリ参照幅 *インターフェイスの数
  • この値は、「バーストレート」とも呼ばれるシステムの理論的最大帯域幅を表します。これで、システム上でマルチチャゼまたは帯域幅ベンチマークを実行して、これらの値を検証できるようになりました。

注:バースト率は持続不可能であることがわかっており、実装された値は計算値よりもわずかに小さくなる可能性があります。

6私のワークロードはバランスの取れた方法で使用しますか?

パフォーマンスのチューニングまたはトラブルシューティングの一環として、サーバーでワークロードを実行する場合、特定のプロセスが現在スケジュールされているCPUコアと、そのCPUコアで実行されるプロセスのリソース利用方法を知ることができます。最初のステップは、CPUコアで実行されているプロセスを見つけることです。これは、HTOPを使用して実行できます。 CPU値は、HTOPのデフォルト表示に反映されません。 CPUコア値を取得するには、コマンドラインから

を開始し、

f2$htopキーを押し、列に移動し、利用可能な列の下にプロセッサを追加します。現在、各プロセスで使用されている「CPU ID」は、「CPU」列の下に表示されます。

  • CPU/CORE:$htopを表示するように構成する方法:

    10 Key Questions When Running on Ampere Altra-Based Instances

  • コア4-6を表示する$htopコマンドは最大値に達する(htopコアカウントは「0」ではなく「1」で始まる):

    10 Key Questions When Running on Ampere Altra-Based Instances

  • $mpstat選択された統計コアをチェックするためのコマンド:

    10 Key Questions When Running on Ampere Altra-Based Instances

CPUコアを識別したら、各CPUの統計をチェックして個々のホットスポット/ビジーCPUを確認するために$mpstatコマンドを実行できます。これは、各CPU(またはコア)の統計を報告するマルチプロセッサ統計ツールです。 $mpstatの詳細については、上記のセクションと比較して、アプリケーションで時間を過ごすにはどうすればよいですか?」を参照してください。

7私のネットワークは私のアプリケーションのボトルネックですか?

ネットワークボトルネックは、サーバー上の他のリソースを飽和させる前であっても発生する可能性があります。この問題は、クライアントサーバーモデルでワークロードを実行するときに発見されます。最初にする必要があるのは、ネットワークの外観を決定することです。クライアントとサーバーの間の遅延と帯域幅は特に重要です。 IPERF3、Ping、Tracerouteなどのツールは、ネットワークの制限を判断するのに役立つ簡単なツールです。ネットワークの制限が特定されると、$dstat$nicstatなどのツールは、ネットワークの使用率を監視し、ネットワークのためにシステムのボトルネックを識別するのに役立ちます。

  • dstat。このコマンドは、CPU統計、ディスク統計、ネットワーク統計、ページング統計、システム統計などのシステムリソースを監視するために使用されます。ネットワークの使用率を監視するには、-nオプションを使用します。

    10 Key Questions When Running on Ampere Altra-Based Instances

    このコマンドは、システムによって受信および送信されたパケットのスループットを提供します。

  • nicstat。このコマンドは、スループットや利用を含むネットワークインターフェイス統計を印刷します。

    10 Key Questions When Running on Ampere Altra-Based Instances

列には以下が含まれます

  • int:インターフェイス名
  • %util:最大利用
  • sat:インターフェイス飽和統計を反映する値
  • 値プレフィックス "r" = read/receive
  • 値プレフィックス "w" =書き込み/転送
  • 1- kb/s:秒あたりのキロバイト
  • 2- pk/s:パケットあたりのパケット
  • 3- AVS/s:平均パケットサイズ(バイト)

8私のディスクはボトルネックですか?

ネットワークと同様に、ディスクがアプリケーションのパフォーマンスの低下の理由でもあります。ディスクのパフォーマンスを測定するとき、次のメトリックを見ていきます。

    利用率
  • 飽和
  • IOPS(1秒あたりの入力/出力)
  • スループット
  • 応答時間
適切なルールは、アプリケーションのサーバー/インスタンスを選択したときに、ディスクのパフォーマンスのピークまたは「上限」を取得し、を決定できるように、ディスクのI/Oパフォーマンスを最初にベンチマークする必要があることです。パフォーマンスがアプリケーションのニーズを満たすかどうかをディスク。柔軟なI/Oは、これらの値を決定するための理想的なツールです。

アプリケーションが実行された後、

の後、

および$iostatを使用して、リアルタイムでディスクリソースの使用率を監視できます。 $dstat

コマンドは、各ディスクのI/O統計を表示し、ワークロードの特性評価、利用、および飽和のメトリックを提供します。 iostat

10 Key Questions When Running on Ampere Altra-Based Instances

最初の行出力には、カーネルバージョン、ホスト名、データアーキテクチャ、CPUカウントなど、システムの概要が表示されます。 2行目は、起動以来のシステムのCPUの概要を示しています。

後続の行に表示される各ディスクデバイスについて、列に基本的な詳細が表示されます。

TPS:トランザクション数あたりのトランザクション
  • kb_read/s:1秒あたりに読まれるキロバイトの数
  • kb_wrtn/s:1秒あたりのkilobytes
  • kb_read:
  • kilobytesの総数
  • KB_WRITE:
  • と書かれたキロバイトの総数
コマンドは、CPU統計、ディスク統計、ネットワーク統計、ページング統計、システム統計などのシステムリソースを監視するために使用されます。ディスク使用率を監視するには、-dオプションを使用します。このオプションには、ディスク上の読み取り(読み取り)および書き込み操作の総数が表示されます。

dstat次の画像は、書き込み集約型のワークロードを示しています。

10 Key Questions When Running on Ampere Altra-Based Instances 9。

非無意味なメモリアクセス(NUMA)は、マルチプロセッシングのコンピューターメモリ設計であり、メモリアクセス時間はプロセッサに比べてメモリの位置に依存します。 NUMAの下では、プロセッサは、非ローカルメモリよりも速く独自のローカルメモリにアクセスできます(プロセッサ間で共有される別のプロセッサまたはメモリのローカルメモリ)。 NUMAの利点は、特にサーバー上のワークロードに限定されています。特に、データは特定のタスクまたはユーザーに密接に関連していることがよくあります。

numaシステムでは、プロセッサとそのメモリバンクの間の距離が大きいほど、プロセッサがそのメモリバンクにアクセスするのが遅くなります。パフォーマンスに敏感なアプリケーションの場合、システムオペレーティングシステムは、最も近いメモリバンクからメモリを割り当てる必要があります。システムまたはプロセスのメモリの割り当てをリアルタイムで監視するために、$numastatは素晴らしいツールです。

numastatコマンドは、非無特定のメモリアクセス(numa)システムの統計を提供します。これらのシステムは通常、複数のCPUスロットを備えたシステムです。

10 Key Questions When Running on Ampere Altra-Based Instances

Linuxオペレーティングシステムは、最寄りのnumaノードでメモリの割り当てを試み、$numastatメモリ割り当ての現在の統計を表示します。

  • numa_hit:予想されるnumaノードにメモリを割り当てます
  • numa_miss:他の場所にあるはずのローカル割り当てを表示
  • numa_foreign:ローカルに割り当てる必要があるリモート割り当てを表示
  • other_node:このノードにメモリを割り当てますが、プロセスは他の場所で実行されます

numa_missとnuma_foreignは両方とも、優先numaノードではないメモリの割り当てを表示します。理想的には、numa_missとnuma_foreignの値は最小限に抑える必要があります。これは、より高い値がメモリI/Oパフォーマンスの低下につながる可能性があるためです。

$numastat -p <process></process>コマンドを使用して、プロセスのnuma分布を表示することもできます。

10 Key Questions When Running on Ampere Altra-Based Instances

10。

システム/インスタンスでアプリケーションを実行すると、アプリケーションが何をしているのか、アプリケーションがCPUで使用するリソースを理解することに興味があります。 $pidstatは、システムで実行されている各プロセスを監視するコマンドラインツールです。

pidstatメインのCPUユーザーは、ユーザーの時間とシステムの時間に分類されます。

このLinuxツールは、ユーザーの時間とシステムの時間を含むプロセスまたはスレッドごとにCPU使用量を分解します。このコマンドは、プロセスのIO統計を報告することもできます(-dオプション)。

10 Key Questions When Running on Ampere Altra-Based Instances

    UID:監視対象のタスクの実際のユーザーID番号
  • PID:監視対象のタスクの識別番号
  • %USR:ユーザーレベル(アプリケーション)で実行するときにタスクで使用されるCPUの割合は、優先順位なしに。
  • %システム:システムレベルで実行するときにタスクで使用されるCPUの割合(カーネル)
  • %wait:タスクが実行を待っているときに使用されるCPUの割合
  • %CPU:タスクで使用されるCPU時間の合計割合。
  • CPU:タスクが添付されているプロセッサ/コア番号

特定のプロセスに関するデータを収集するために実行することもできます。 $pidstat -p

10 Key Questions When Running on Ampere Altra-Based Instances

パートナーシップについては、専門家の営業チームに連絡するか、開発者アクセスプログラムを通じてアンペアシステムにアクセスする方法を学びます。

以上がAmpere Altraベースのインスタンスで実行する際の10の重要な質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。