@@ -468,6 +468,123 @@ Run Glmark2 and capture performance reported (Score). All display outputs (HDMI,
468468
469469
470470
471+ Ethernet
472+ --------
473+
474+ Ethernet performance benchmarks were measured using :command: `netperf ` 2.7.1 https://hewlettpackard.github.io/netperf/doc/netperf.html
475+ Test procedures were modeled after those defined in RFC-2544:
476+ https://tools.ietf.org/html/rfc2544, where the DUT is the TI device
477+ and the "tester" used was a Linux PC. To produce consistent results,
478+ it is recommended to carry out performance tests in a private network and to avoid
479+ running NFS on the same interface used in the test. In these results,
480+ CPU utilization was captured as the total percentage used across all cores on the device,
481+ while running the performance test over one external interface.
482+
483+ UDP Throughput (0% loss) was measured by the procedure defined in RFC-2544 section 26.1: Throughput.
484+ In this scenario, :command: `netperf ` options burst_size (-b) and wait_time (-w) are used to limit bandwidth
485+ during different trials of the test, with the goal of finding the highest rate at which
486+ no loss is seen. For example, to limit bandwidth to 500Mbits/sec with 1472B datagram:
487+
488+ .. code-block :: console
489+
490+ burst_size = <bandwidth (bits/sec)> / 8 (bits -> bytes) / <UDP datagram size> / 100 (seconds -> 10 ms)
491+ burst_size = 500000000 / 8 / 1472 / 100 = 425
492+
493+ wait_time = 10 milliseconds (minimum supported by Linux PC used for testing)
494+
495+ UDP Throughput (possible loss) was measured by capturing throughput and packet loss statistics when
496+ running the :command: `netperf ` test with no bandwidth limit (remove -b/-w options).
497+
498+ The following commands were used to tune the socket buffer sizes on the DUT before running the performance tests:
499+
500+ .. code-block :: console
501+
502+ sysctl -w net.core.rmem_default=33554432
503+ sysctl -w net.core.rmem_max=67108864
504+
505+ In order to start a :command: `netperf ` client on one device, the other device must have :command: `netserver ` running.
506+ To start :command: `netserver `:
507+
508+ .. code-block :: console
509+
510+ netserver [-p <port_number>] [-4 (IPv4 addressing)] [-6 (IPv6 addressing)]
511+
512+ Running the following shell script from the DUT will trigger :command: `netperf ` clients to measure
513+ bidirectional TCP performance for 60 seconds and report CPU utilization. Parameter -k is used in
514+ client commands to summarize selected statistics on their own line and -j is used to gain
515+ additional timing measurements during the test.
516+
517+ .. code-block :: console
518+
519+ #!/bin/bash
520+ for i in 1
521+ do
522+ netperf -H <tester ip> -j -c -l 60 -t TCP_STREAM --
523+ -k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &
524+
525+ netperf -H <tester ip> -j -c -l 60 -t TCP_MAERTS --
526+ -k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE &
527+ done
528+
529+ Running the following commands will trigger :command: `netperf ` clients to measure UDP burst performance for
530+ 60 seconds at various burst/datagram sizes and report CPU utilization.
531+
532+ - For UDP egress tests, run :command: `netperf ` client from DUT and start :command: `netserver ` on tester.
533+
534+ .. code-block :: console
535+
536+ netperf -H <tester ip> -j -c -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
537+ -k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE
538+
539+ - For UDP ingress tests, run :command: `netperf ` client from tester and start :command: `netserver ` on DUT.
540+
541+ .. code-block :: console
542+
543+ netperf -H <DUT ip> -j -C -l 60 -t UDP_STREAM -b <burst_size> -w <wait_time> -- -m <UDP datagram size>
544+ -k DIRECTION,THROUGHPUT,MEAN_LATENCY,LOCAL_CPU_UTIL,REMOTE_CPU_UTIL,LOCAL_BYTES_SENT,REMOTE_BYTES_RECVD,LOCAL_SEND_SIZE
545+
546+ CPSW/CPSW2g/CPSW3g Ethernet
547+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
548+
549+ - CPSW3g: AM62x
550+
551+ TCP Bidirectional Throughput
552+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
553+
554+ .. csv-table :: CPSW2g TCP Bidirectional Throughput
555+ :header: "Command Used","am62xx_lp_sk-fs: THROUGHPUT (Mbits/sec)","am62xx_lp_sk-fs: CPU Load % (LOCAL_CPU_UTIL)","am62xx_sk-fs: THROUGHPUT (Mbits/sec)","am62xx_sk-fs: CPU Load % (LOCAL_CPU_UTIL)","am62xxsip_sk-fs: THROUGHPUT (Mbits/sec)","am62xxsip_sk-fs: CPU Load % (LOCAL_CPU_UTIL)"
556+
557+ "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","1657.01","67.11","1822.62","66.72","1763.18","67.48"
558+
559+ TCP Bidirectional Throughput Interrupt Pacing
560+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
561+
562+ .. csv-table :: CPSW2g TCP Bidirectional Throughput Interrupt Pacing
563+ :header: "Command Used","am62xx_lp_sk-fs: THROUGHPUT (Mbits/sec)","am62xx_lp_sk-fs: CPU Load % (LOCAL_CPU_UTIL)","am62xx_sk-fs: THROUGHPUT (Mbits/sec)","am62xx_sk-fs: CPU Load % (LOCAL_CPU_UTIL)","am62xxsip_sk-fs: THROUGHPUT (Mbits/sec)","am62xxsip_sk-fs: CPU Load % (LOCAL_CPU_UTIL)"
564+
565+ "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","1794.07","63.53","1828.80","57.91","1543.11","49.30"
566+
567+ UDP Throughput
568+ ~~~~~~~~~~~~~~
569+
570+ .. csv-table :: CPSW2g UDP Egress Throughput 0 loss
571+ :header: "Frame Size(bytes)", "am62xx_lp_sk-fs: THROUGHPUT (Mbits/sec)", "am62xx_lp_sk-fs: Packets Per Second (kPPS)", "am62xx_lp_sk-fs: CPU Load % (LOCAL_CPU_UTIL)", "am62xx_sk-fs: THROUGHPUT (Mbits/sec)", "am62xx_sk-fs: Packets Per Second (kPPS)", "am62xx_sk-fs: CPU Load % (LOCAL_CPU_UTIL)", "am62xxsip_sk-fs: THROUGHPUT (Mbits/sec)", "am62xxsip_sk-fs: Packets Per Second (kPPS)", "am62xxsip_sk-fs: CPU Load % (LOCAL_CPU_UTIL)"
572+
573+ "64","38.61","75","36.53","44.13","86","37.14","45.71","89","37.74"
574+ "128","76.11","74","36.58","85.34","83","36.72","91.47","89","37.33"
575+ "256","148.89","73","36.41","169.41","83","36.51","170.76","83","36.89"
576+ "1024","592.94","72","36.75","659.08","80","36.45","704.41","86","37.13"
577+ "1518","846.54","72","36.56","208.42","18","11.87","916.55","78","39.59"
578+
579+ .. csv-table :: CPSW2g UDP Ingress Throughput 0 loss
580+ :header: "Frame Size(bytes)", "am62xx_lp_sk-fs: THROUGHPUT (Mbits/sec)", "am62xx_lp_sk-fs: Packets Per Second (kPPS)", "am62xx_lp_sk-fs: CPU Load % (LOCAL_CPU_UTIL)", "am62xx_sk-fs: THROUGHPUT (Mbits/sec)", "am62xx_sk-fs: Packets Per Second (kPPS)", "am62xx_sk-fs: CPU Load % (LOCAL_CPU_UTIL)", "am62xxsip_sk-fs: THROUGHPUT (Mbits/sec)", "am62xxsip_sk-fs: Packets Per Second (kPPS)", "am62xxsip_sk-fs: CPU Load % (LOCAL_CPU_UTIL)"
581+
582+ "64","33.53","65","15.91","41.16","80","19.91","30.41","59","12.23"
583+ "128","63.90","62","15.10","66.05","65","15.68","61.95","60","14.96"
584+ "256","170.41","83","26.12","148.27","72","18.20","142.13","69","13.55"
585+ "1024","611.97","75","26.40","754.92","92","31.48","681.07","83","41.67"
586+ "1518","954.54","81","39.92","956.88","81","38.55","710.47","60","31.15"
587+
471588|
472589
473590Linux OSPI Flash Driver
0 commit comments