Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions source/devices/AM62DX/linux/Linux_Performance_Guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,129 @@

|

Ethernet
-----------------
Ethernet performance benchmarks were measured using Netperf 2.7.1 https://hewlettpackard.github.io/netperf/doc/netperf.html

Check warning on line 357 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Spelling] Verify the word 'Netperf'. It is not in the American English spelling dictionary used by Vale. Raw Output: {"message": "[RedHat.Spelling] Verify the word 'Netperf'. It is not in the American English spelling dictionary used by Vale.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 357, "column": 53}}}, "severity": "WARNING"}

Check warning on line 357 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.PassiveVoice] 'were measured' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice. Raw Output: {"message": "[RedHat.PassiveVoice] 'were measured' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 357, "column": 33}}}, "severity": "INFO"}

Check warning on line 357 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.SentenceLength] Try to keep sentences to an average of 32 words or fewer. Raw Output: {"message": "[RedHat.SentenceLength] Try to keep sentences to an average of 32 words or fewer.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 357, "column": 1}}}, "severity": "INFO"}
Test procedures were modeled after those defined in RFC-2544:

Check warning on line 358 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.PassiveVoice] 'were modeled' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice. Raw Output: {"message": "[RedHat.PassiveVoice] 'were modeled' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 358, "column": 17}}}, "severity": "INFO"}
https://tools.ietf.org/html/rfc2544, where the DUT is the TI device

Check warning on line 359 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'DUT') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'DUT') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 359, "column": 48}}}, "severity": "INFO"}
and the "tester" used was a Linux PC. To produce consistent results,
it is recommended to carry out performance tests in a private network and to avoid

Check warning on line 361 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.TermsWarnings] Consider using 'test' or 'run' rather than 'carry out' unless updating existing content that uses the term. Raw Output: {"message": "[RedHat.TermsWarnings] Consider using 'test' or 'run' rather than 'carry out' unless updating existing content that uses the term.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 361, "column": 22}}}, "severity": "WARNING"}

Check warning on line 361 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.PassiveVoice] 'is recommended' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice. Raw Output: {"message": "[RedHat.PassiveVoice] 'is recommended' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 361, "column": 4}}}, "severity": "INFO"}
running NFS on the same interface used in the test. In these results,
CPU utilization was captured as the total percentage used across all cores on the device,

Check warning on line 363 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.PassiveVoice] 'was captured' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice. Raw Output: {"message": "[RedHat.PassiveVoice] 'was captured' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 363, "column": 17}}}, "severity": "INFO"}

Check warning on line 363 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.SimpleWords] Use simple language. Consider using 'use' rather than 'utilization'. Raw Output: {"message": "[RedHat.SimpleWords] Use simple language. Consider using 'use' rather than 'utilization'.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 363, "column": 5}}}, "severity": "INFO"}
while running the performance test over one external interface.

UDP Throughput (0% loss) was measured by the procedure defined in RFC-2544 section 26.1: Throughput.

Check warning on line 366 in source/devices/AM62DX/linux/Linux_Performance_Guide.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.PassiveVoice] 'was measured' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice. Raw Output: {"message": "[RedHat.PassiveVoice] 'was measured' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.", "location": {"path": "source/devices/AM62DX/linux/Linux_Performance_Guide.rst", "range": {"start": {"line": 366, "column": 26}}}, "severity": "INFO"}
In this scenario, netperf options burst_size (-b) and wait_time (-w) are used to limit bandwidth
during different trials of the test, with the goal of finding the highest rate at which
no loss is seen. For example, to limit bandwidth to 500Mbits/sec with 1472B datagram:

::

burst_size = <bandwidth (bits/sec)> / 8 (bits -> bytes) / <UDP datagram size> / 100 (seconds -> 10 ms)
burst_size = 500000000 / 8 / 1472 / 100 = 425

wait_time = 10 milliseconds (minimum supported by Linux PC used for testing)

UDP Throughput (possible loss) was measured by capturing throughput and packet loss statistics when
running the netperf test with no bandwidth limit (remove -b/-w options).

In order to start a netperf client on one device, the other device must have netserver running.
To start netserver:

::

netserver [-p <port_number>] [-4 (IPv4 addressing)] [-6 (IPv6 addressing)]

Running the following shell script from the DUT will trigger netperf clients to measure
bidirectional TCP performance for 60 seconds and report CPU utilization. Parameter -k is used in
client commands to summarize selected statistics on their own line and -j is used to gain
additional timing measurements during the test.

::

#!/bin/bash
for i in 1
do
netperf -H <tester ip> -j -c -l 60 -t TCP_STREAM --
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &

netperf -H <tester ip> -j -c -l 60 -t TCP_MAERTS --
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &
done

Running the following commands will trigger netperf clients to measure UDP burst performance for
60 seconds at various burst/datagram sizes and report CPU utilization.

- For UDP egress tests, run netperf client from DUT and start netserver on tester.

::

netperf -H <tester ip> -j -c -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE

- For UDP ingress tests, run netperf client from tester and start netserver on DUT.

::

netperf -H <DUT ip> -j -C -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE


CPSW/CPSW2g/CPSW3g Ethernet Driver
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- CPSW2g: AM65x, J7200, J721e, J721S2, J784S4, J742S2
- CPSW3g: AM64x, AM62x, AM62ax, AM62px, AM62dx


.. rubric:: TCP Bidirectional Throughput
:name: CPSW2g-tcp-bidirectional-throughput

.. csv-table:: CPSW2g TCP Bidirectional Throughput
:header: "Command Used","am62dxx_evm-fs: THROUGHPUT (Mbits/sec)","am62dxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_STREAM; netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_MAERTS","304.93 (min 301.56, max 307.77)","11.34 (min 11.00, max 11.84)"

.. rubric:: TCP Bidirectional Throughput Interrupt Pacing
:name: CPSW2g-tcp-bidirectional-throughput-interrupt-pacing

.. csv-table:: CPSW2g TCP Bidirectional Throughput Interrupt Pacing
:header: "Command Used","am62dxx_evm-fs: THROUGHPUT (Mbits/sec)","am62dxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_STREAM; netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_MAERTS","305.08 (min 301.65, max 308.15)","11.48 (min 11.33, max 11.63)"

.. rubric:: UDP Throughput
:name: CPSW2g-udp-throughput-0-loss

.. csv-table:: CPSW2g UDP Egress Throughput 0 loss
:header: "Frame Size(bytes)","am62dxx_evm-fs: UDP Datagram Size(bytes) (LOCAL_SEND_SIZE)","am62dxx_evm-fs: THROUGHPUT (Mbits/sec)","am62dxx_evm-fs: Packets Per Second (kPPS)","am62dxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"64","18.00","57.87 (min 55.77, max 59.88)","113.00 (min 109.00, max 117.00)","25.67 (min 25.08, max 26.03)"
"128","82.00","113.83 (min 109.02, max 116.77)","111.13 (min 106.00, max 114.00)","25.77 (min 25.07, max 26.02)"
"256","210.00","148.42 (min 63.90, max 160.50)","72.13 (min 31.00, max 78.00)","19.34 (min 6.07, max 21.69)"
"1024","978.00","181.49 (min 181.48, max 181.50)","22.00","7.98 (min 7.88, max 8.14)"
"1518","1472.00","179.37 (min 179.36, max 179.37)","15.00","7.84 (min 7.65, max 7.99)"

.. csv-table:: CPSW2g UDP Ingress Throughput 0 loss
:header: "Frame Size(bytes)","am62dxx_evm-fs: UDP Datagram Size(bytes) (LOCAL_SEND_SIZE)","am62dxx_evm-fs: THROUGHPUT (Mbits/sec)","am62dxx_evm-fs: Packets Per Second (kPPS)","am62dxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"64","18.00","1.86 (min 1.48, max 2.36)","3.63 (min 3.00, max 5.00)","1.53 (min 0.53, max 3.81)"
"128","82.00","4.47 (min 4.40, max 4.71)","4.13 (min 4.00, max 5.00)","1.02 (min 0.76, max 1.65)"
"256","210.00","10.41 (min 10.03, max 10.85)","5.00","2.42 (min 0.94, max 5.27)"
"1024","978.00","43.19 (min 42.60, max 44.24)","5.00","2.08 (min 1.31, max 4.18)"
"1518","1472.00","62.15 (min 61.23, max 64.77)","5.11 (min 5.00, max 6.00)","2.90 (min 1.80, max 4.28)"

.. csv-table:: CPSW2g UDP Ingress Throughput possible loss
:header: "Frame Size(bytes)","am62dxx_evm-fs: UDP Datagram Size(bytes) (LOCAL_SEND_SIZE)","am62dxx_evm-fs: THROUGHPUT (Mbits/sec)","am62dxx_evm-fs: Packets Per Second (kPPS)","am62dxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)","am62dxx_evm-fs: Packet Loss %"

"64","18.00","82.68 (min 69.85, max 95.35)","161.50 (min 136.00, max 186.00)","40.23 (min 38.26, max 42.06)","31.04 (min 0.18, max 62.30)"
"128","82.00","174.59 (min 130.93, max 188.67)","170.50 (min 128.00, max 184.00)","41.26 (min 39.46, max 42.34)","44.65 (min 0.39, max 61.31)"
"256","210.00","320.34 (min 259.61, max 369.04)","156.50 (min 127.00, max 180.00)","40.94 (min 38.60, max 42.78)","24.24 (min 0.37, max 49.24)"
"1024","978.00","876.98 (min 837.06, max 913.30)","106.86 (min 102.00, max 111.00)","40.28 (min 39.04, max 41.61)","0.61 (min 0.18, max 1.17)"
"1518","1472.00","892.63 (min 786.50, max 934.06)","75.78 (min 67.00, max 79.00)","38.92 (min 34.39, max 40.76)","1.04 (min 0.25, max 2.13)"

|

USB Driver
----------

Expand Down
120 changes: 120 additions & 0 deletions source/devices/AM62LX/linux/Linux_Performance_Guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,126 @@ ALSA SoC Audio Driver

|

Ethernet
-----------------
Ethernet performance benchmarks were measured using Netperf 2.7.1 https://hewlettpackard.github.io/netperf/doc/netperf.html
Test procedures were modeled after those defined in RFC-2544:
https://tools.ietf.org/html/rfc2544, where the DUT is the TI device
and the "tester" used was a Linux PC. To produce consistent results,
it is recommended to carry out performance tests in a private network and to avoid
running NFS on the same interface used in the test. In these results,
CPU utilization was captured as the total percentage used across all cores on the device,
while running the performance test over one external interface.

UDP Throughput (0% loss) was measured by the procedure defined in RFC-2544 section 26.1: Throughput.
In this scenario, netperf options burst_size (-b) and wait_time (-w) are used to limit bandwidth
during different trials of the test, with the goal of finding the highest rate at which
no loss is seen. For example, to limit bandwidth to 500Mbits/sec with 1472B datagram:

::

burst_size = <bandwidth (bits/sec)> / 8 (bits -> bytes) / <UDP datagram size> / 100 (seconds -> 10 ms)
burst_size = 500000000 / 8 / 1472 / 100 = 425

wait_time = 10 milliseconds (minimum supported by Linux PC used for testing)

UDP Throughput (possible loss) was measured by capturing throughput and packet loss statistics when
running the netperf test with no bandwidth limit (remove -b/-w options).

In order to start a netperf client on one device, the other device must have netserver running.
To start netserver:

::

netserver [-p <port_number>] [-4 (IPv4 addressing)] [-6 (IPv6 addressing)]

Running the following shell script from the DUT will trigger netperf clients to measure
bidirectional TCP performance for 60 seconds and report CPU utilization. Parameter -k is used in
client commands to summarize selected statistics on their own line and -j is used to gain
additional timing measurements during the test.

::

#!/bin/bash
for i in 1
do
netperf -H <tester ip> -j -c -l 60 -t TCP_STREAM --
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &

netperf -H <tester ip> -j -c -l 60 -t TCP_MAERTS --
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &
done

Running the following commands will trigger netperf clients to measure UDP burst performance for
60 seconds at various burst/datagram sizes and report CPU utilization.

- For UDP egress tests, run netperf client from DUT and start netserver on tester.

::

netperf -H <tester ip> -j -c -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE

- For UDP ingress tests, run netperf client from tester and start netserver on DUT.

::

netperf -H <DUT ip> -j -C -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE


CPSW/CPSW2g/CPSW3g Ethernet Driver
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- CPSW2g: AM65x, J7200, J721e, J721S2, J784S4, J742S2
- CPSW3g: AM64x, AM62x, AM62ax, AM62px

.. rubric:: TCP Bidirectional Throughput
:name: CPSW2g-tcp-bidirectional-throughput

.. csv-table:: CPSW2g TCP Bidirectional Throughput
:header: "Command Used","am62lxx_evm-fs: THROUGHPUT (Mbits/sec)","am62lxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_STREAM; netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_MAERTS","1250.65 (min 1162.63, max 1320.05)","99.45 (min 98.50, max 99.91)"

.. rubric:: TCP Bidirectional Throughput Interrupt Pacing
:name: CPSW2g-tcp-bidirectional-throughput-interrupt-pacing

.. csv-table:: CPSW2g TCP Bidirectional Throughput Interrupt Pacing
:header: "Command Used","am62lxx_evm-fs: THROUGHPUT (Mbits/sec)","am62lxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_STREAM; netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_MAERTS","1276.53 (min 1096.32, max 1414.15)","98.53 (min 97.46, max 99.97)"

.. rubric:: UDP Throughput
:name: CPSW2g-udp-throughput-0-loss

.. csv-table:: CPSW2g UDP Egress Throughput 0 loss
:header: "Frame Size(bytes)","am62lxx_evm-fs: UDP Datagram Size(bytes) (LOCAL_SEND_SIZE)","am62lxx_evm-fs: THROUGHPUT (Mbits/sec)","am62lxx_evm-fs: Packets Per Second (kPPS)","am62lxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"64","18.00","48.02 (min 45.73, max 49.33)","93.57 (min 89.00, max 96.00)","81.68 (min 79.75, max 83.43)"
"128","82.00","91.45 (min 88.25, max 95.00)","89.29 (min 86.00, max 93.00)","76.38 (min 50.57, max 81.56)"
"256","210.00","173.95 (min 160.08, max 184.15)","85.00 (min 78.00, max 90.00)","76.66 (min 59.01, max 80.28)"
"1024","978.00","470.51 (min 73.73, max 704.77)","57.50 (min 9.00, max 86.00)","56.11 (min 7.01, max 79.70)"
"1518","1472.00","666.11 (min 646.32, max 702.83)","54.71 (min 53.00, max 58.00)","72.76 (min 71.76, max 74.10)"

.. csv-table:: CPSW2g UDP Ingress Throughput 0 loss
:header: "Frame Size(bytes)","am62lxx_evm-fs: UDP Datagram Size(bytes) (LOCAL_SEND_SIZE)","am62lxx_evm-fs: THROUGHPUT (Mbits/sec)","am62lxx_evm-fs: Packets Per Second (kPPS)","am62lxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)"

"64","18.00","2.28 (min 2.25, max 2.36)","4.14 (min 4.00, max 5.00)","2.97 (min 1.94, max 6.96)"
"128","82.00","4.96 (min 4.40, max 5.43)","4.86 (min 4.00, max 5.00)","3.14 (min 2.03, max 4.94)"
"256","210.00","9.04 (min 1.02, max 10.85)","4.17 (min 0.00, max 5.00)","3.31 (min 0.98, max 6.33)"
"1024","978.00","38.40 (min 6.55, max 43.42)","4.50 (min 1.00, max 5.00)","4.55 (min 1.23, max 8.23)"
"1518","1472.00","52.60 (min 4.71, max 62.41)","4.17 (min 0.00, max 5.00)","5.17 (min 0.70, max 9.26)"

.. csv-table:: CPSW2g UDP Ingress Throughput possible loss
:header: "Frame Size(bytes)","am62lxx_evm-fs: UDP Datagram Size(bytes) (LOCAL_SEND_SIZE)","am62lxx_evm-fs: THROUGHPUT (Mbits/sec)","am62lxx_evm-fs: Packets Per Second (kPPS)","am62lxx_evm-fs: CPU Load % (LOCAL_CPU_UTIL)","am62lxx_evm-fs: Packet Loss %"

"64","18.00","72.96 (min 69.39, max 76.56)","142.57 (min 136.00, max 150.00)","82.64 (min 81.65, max 85.19)","72.14 (min 61.99, max 82.53)"
"128","82.00","144.83 (min 137.49, max 154.44)","141.43 (min 134.00, max 151.00)","85.13 (min 83.80, max 86.33)","68.86 (min 55.17, max 78.22)"
"256","210.00","280.59 (min 262.68, max 303.33)","137.00 (min 128.00, max 148.00)","85.01 (min 82.70, max 87.15)","49.21 (min 31.44, max 66.24)"
"1024","978.00","809.96 (min 576.67, max 890.96)","99.00 (min 70.00, max 109.00)","88.52 (min 84.69, max 92.80)","7.02 (min 4.65, max 10.64)"
"1518","1472.00","787.28 (min 704.86, max 853.41)","66.83 (min 60.00, max 72.00)","82.25 (min 73.30, max 87.11)","6.83 (min 2.70, max 10.83)"

Linux OSPI Flash Driver
-----------------------

Expand Down
104 changes: 104 additions & 0 deletions source/devices/AM62PX/linux/Linux_Performance_Guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,110 @@ Run Glmark2 and capture performance reported (Score). All display outputs (HDMI,

|

Ethernet
-----------------
Ethernet performance benchmarks were measured using Netperf 2.7.1 https://hewlettpackard.github.io/netperf/doc/netperf.html
Test procedures were modeled after those defined in RFC-2544:
https://tools.ietf.org/html/rfc2544, where the DUT is the TI device
and the "tester" used was a Linux PC. To produce consistent results,
it is recommended to carry out performance tests in a private network and to avoid
running NFS on the same interface used in the test. In these results,
CPU utilization was captured as the total percentage used across all cores on the device,
while running the performance test over one external interface.

UDP Throughput (0% loss) was measured by the procedure defined in RFC-2544 section 26.1: Throughput.
In this scenario, netperf options burst_size (-b) and wait_time (-w) are used to limit bandwidth
during different trials of the test, with the goal of finding the highest rate at which
no loss is seen. For example, to limit bandwidth to 500Mbits/sec with 1472B datagram:

::

burst_size = <bandwidth (bits/sec)> / 8 (bits -> bytes) / <UDP datagram size> / 100 (seconds -> 10 ms)
burst_size = 500000000 / 8 / 1472 / 100 = 425

wait_time = 10 milliseconds (minimum supported by Linux PC used for testing)

UDP Throughput (possible loss) was measured by capturing throughput and packet loss statistics when
running the netperf test with no bandwidth limit (remove -b/-w options).

In order to start a netperf client on one device, the other device must have netserver running.
To start netserver:

::

netserver [-p <port_number>] [-4 (IPv4 addressing)] [-6 (IPv6 addressing)]

Running the following shell script from the DUT will trigger netperf clients to measure
bidirectional TCP performance for 60 seconds and report CPU utilization. Parameter -k is used in
client commands to summarize selected statistics on their own line and -j is used to gain
additional timing measurements during the test.

::

#!/bin/bash
for i in 1
do
netperf -H <tester ip> -j -c -l 60 -t TCP_STREAM --
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &

netperf -H <tester ip> -j -c -l 60 -t TCP_MAERTS --
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &
done

Running the following commands will trigger netperf clients to measure UDP burst performance for
60 seconds at various burst/datagram sizes and report CPU utilization.

- For UDP egress tests, run netperf client from DUT and start netserver on tester.

::

netperf -H <tester ip> -j -c -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE

- For UDP ingress tests, run netperf client from tester and start netserver on DUT.

::

netperf -H <DUT ip> -j -C -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
-k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE


CPSW/CPSW2g/CPSW3g Ethernet Driver
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- CPSW2g: AM65x, J7200, J721e, J721S2, J784S4, J742S2
- CPSW3g: AM64x, AM62x, AM62ax, AM62px

.. rubric:: TCP Bidirectional Throughput
:name: CPSW2g-tcp-bidirectional-throughput

.. csv-table:: CPSW2g TCP Bidirectional Throughput
:header: "Command Used","am62pxx_sk-fs: THROUGHPUT (Mbits/sec)","am62pxx_sk-fs: CPU Load % (LOCAL_CPU_UTIL)"

"netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_STREAM; netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_MAERTS","1778.39 (min 1503.06, max 1857.97)","63.69 (min 60.80, max 65.40)"

.. rubric:: TCP Bidirectional Throughput Interrupt Pacing
:name: CPSW2g-tcp-bidirectional-throughput-interrupt-pacing

.. csv-table:: CPSW2g TCP Bidirectional Throughput Interrupt Pacing
:header: "Command Used","am62pxx_sk-fs: THROUGHPUT (Mbits/sec)","am62pxx_sk-fs: CPU Load % (LOCAL_CPU_UTIL)"

"netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_STREAM; netperf -H 192.168.0.1 -j -c -C -l 60 -t TCP_MAERTS","1789.08 (min 1612.03, max 1873.08)","35.80 (min 27.35, max 38.76)"

.. rubric:: UDP Throughput
:name: CPSW2g-udp-throughput-0-loss

.. csv-table:: CPSW2g UDP Egress Throughput 0 loss
:header: "Frame Size(bytes)","am62pxx_sk-fs: UDP Datagram Size(bytes) (LOCAL_SEND_SIZE)","am62pxx_sk-fs: THROUGHPUT (Mbits/sec)","am62pxx_sk-fs: Packets Per Second (kPPS)","am62pxx_sk-fs: CPU Load % (LOCAL_CPU_UTIL)"

"64","18.00","54.23 (min 53.64, max 55.42)","105.88 (min 105.00, max 108.00)","39.59 (min 39.25, max 40.20)"
"128","82.00","107.70 (min 106.76, max 110.02)","105.00 (min 104.00, max 107.00)","39.41 (min 39.06, max 39.88)"
"256","210.00","214.09 (min 211.33, max 217.17)","104.50 (min 103.00, max 106.00)","39.31 (min 39.08, max 39.69)"
"1024","978.00","836.06 (min 813.57, max 847.48)","101.88 (min 99.00, max 103.00)","39.65 (min 38.57, max 40.42)"
"1518","1472.00","838.69 (min 826.64, max 852.20)","69.13 (min 68.00, max 70.00)","37.17 (min 36.51, max 38.15)"

|

Linux OSPI Flash Driver
-----------------------

Expand Down
Loading
Loading