問題を分析し、パフォーマンスのボトルネックを見つけ、パフォーマンスのチューニングをマスターするにはどうすればよいでしょうか? パフォーマンステストを理解するための記事

バックグラウンド

クラウドコンピューティングとビッグデータの普及を背景に、大規模な同時実行性と大スループットの要求が企業の課題となっていますが、その中でもネットワークのパフォーマンス要件は特に重要です。ソフトウェア自体、一部のハードウェア 上記の最適化も不可欠です。

テスターであれば、パフォーマンス テストの問題に精通しているわけではありませんが、テストは単にデータを実行して収集するだけではなく、問題を分析し、パフォーマンスのボトルネックを見つけ、最適化作業を行うことも重要です。

結局のところ、顧客が現場でパフォーマンスをテストする場合、システム レベルのチューニングを通じてソフトウェアのパフォーマンスを向上させることが、間違いなくおまけになります。

索引

どのような種類のパフォーマンス テストを行う場合でも、指標を無視することはできません。指標は定量的なパフォーマンス テストの重要な基盤です。特定のパフォーマンスを測定するための指標は数多くあります。たとえば、TPS、QPS、遅延は通常、データベースのパフォーマンスの測定に使用され、iops、スループット、遅延は通常、IO パフォーマンスの測定に使用されます。また、ネットワークのパフォーマンスを測定するためのパフォーマンス指標も数多くあります。業界には RFC2544 標準があります (参照リンク: https://www.rfc-editor.org/rfc/rfc2544)。

ここでいくつかの指標について少し説明します。

バックツーバックテスト: 一定期間内に、パケットロスを発生させることなく法定の最小フレーム間隔で固定長パケットを伝送媒体上に連続送信したときのデータ量。

パケット損失率テスト: ルータの定常負荷状態において、転送されるべき全フレームのうち、リソース不足により転送できないフレームの割合。

レイテンシ テスト: 入力フレームの最後のビットが入力ポートに到着してから、出力フレームの最初のビットが出力端に現れるまでの時間間隔。

スループット テスト: パケット損失なしで転送できる最大速度。

通常、顧客はスループットと遅延の指標に関心を持ちます。スループットはシステムの同時処理能力を反映し、遅延はビジネス全体の応答時間を反映します。

試験の準備

この記事では、ネットワーク カード内の Fighter Intel X710 をテスト対象として、小さなパケットのスループット テストを実施します。

ヒント: 一般に、大きなパケットのテストは回線速度に達しますが、小さなパケットのテストは困難です。同じ MTU の下で、パケットが小さいほど、CPU が単位時間あたりに処理できるパケットの数が多くなり、負荷が大きくなります。 CPU 上で。

テストトポロジ

X710 ネットワーク カードをテスト対象のデバイスに挿入し、ネットワーク カードの 2 つのネットワーク ポートを使用して Linux ブリッジを構築し、テスターを介してデータ パケットを送受信します。

[root@localhost~]#brctl addbr test

[root@localhost~]#brctl addif test enp11s0f2 enp11s0f3

[root@localhost~]#ip リンク設定テスト

[root@localhost~]#brctl show

ブリッジ名 ブリッジ ID STP 対応インターフェイス

テスト 8000.6cb311618c30 いいえ enp11s0f2

enp11s0f3

virbr0 8000.5254004c4831 はい virbr0-nic

3.2 ハードウェア情報

かつて偉人はこう言いました。「パフォーマンス テストでハードウェアについて話さないのであれば、それは恋愛ではあっても結婚ではないのと同じ理由です。彼らは皆、フーリガンです。」

魯迅: 「そんなことは言っていません!」 余談ですが、データ パケットがネットワーク カードに入った後のプロセスについて簡単に話しましょう。データ パケットがネットワーク カードに入った後、データはサーバー メモリにキャッシュされ、カーネルに処理するように通知されてから、プロトコル スタックが処理されます。通常、netfilter もプロトコル スタックで処理され、最後にアプリケーションがソッカー バフからデータを読み取ります。

正直に言うと、この記事のテストでは国産のLight Phytium S2500サーバーを使用しています。

4. テストチューニング

上記のトポロジでは、128 バイトの 10 ギガビット双方向トラフィックを送信し、テストには RFC2544 標準を使用します。

RFC2544の規格はパケットロスゼロテストのスループットで、結果は818Mbp​​s

上記は前菜であり、次のステップがこの記事のハイライトです。「テスト」のパフォーマンスを向上させ、顧客を満足させるために、既存のリソースに基づいて最適化を実行します。

4.1 キューの数を調整する

ネットワーク カードのキューの数を調整し、ネットワーク カードのマルチキュー機能を使用すると、割り込みを通じて異なるキューが異なる CPU にバインドされ、CPU の処理パフォーマンスとネットワーク帯域幅が向上します。

キューの数を調整します。サーバー内の CPU の数には上限があるため、大きいほど良いです。キューが多すぎると、複数の割り込みが同じ CPU にバインドされます。ここでは、単一の uma サーバーには 8 つの CPU があります. キューを変更する 番号は 8 です。

[root@localhost~]#ethtool-l enp11s0f2

enp11s0f2 のチャネル パラメータ:

事前に設定された最大値:

RX:0

送信:0

その他:1

合計:128

現在のハードウェア設定:

RX:0

送信:0

その他:1

合計:8

データ パケットはハッシュに従って複数のパケット受信キューに入力されるため、データ パケットを送信するときに、送信元 IP が変更されたフローを選択して、ネットワーク カードのマルチキューが使用されていることを確認できます。ネットワークカードのキュー数。

……

著者の著作権上の都合により、記事の一部のみが表示されていますが、記事の全文を読みたい場合は、私にプライベートメッセージを送ってください。

やっと:

私の個人アカウント atstudy-js にアクセスすると、10G ソフトウェア テスト エンジニアのインタビュー集ドキュメントのコピーを無料で入手できます。また、対応するビデオ学習チュートリアルは無料で共有できます。これらには、基礎知識、Linux の必需品、Mysql データベース、パケット キャプチャ ツール、インターフェイス テスト ツール、高度なテスト - Python プログラミング、Web 自動テスト、APP 自動テスト、インターフェイス自動テスト、継続的統合テスト、テスト フレームワーク開発テスト フレームワーク、パフォーマンス テスト、等

これらのテスト資料は、[ソフトウェア テスト] を行う友人にとって、最も包括的で完全な準備倉庫である必要があります。この倉庫は、最も困難な旅にも私を同行してくれました。そして、それがあなたにも役立つことを願っています。

おすすめ

転載: blog.csdn.net/deerxiaoluaa/article/details/131192859