From 219e4646f80a701578a312b96504cd30edaaf352 Mon Sep 17 00:00:00 2001 From: Ondrej Kosta Date: Thu, 7 Sep 2023 09:36:01 +0200 Subject: [PATCH] docs(esp_eth): added Ethernet to Improving Network Speed section --- docs/en/api-guides/performance/speed.rst | 1 + examples/ethernet/iperf/sdkconfig.defaults | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/en/api-guides/performance/speed.rst b/docs/en/api-guides/performance/speed.rst index 24bac12cf7..d48e18b74c 100644 --- a/docs/en/api-guides/performance/speed.rst +++ b/docs/en/api-guides/performance/speed.rst @@ -245,6 +245,7 @@ Improving Network Speed :SOC_WIFI_SUPPORTED: * For Wi-Fi, see :ref:`How-to-improve-Wi-Fi-performance` and :ref:`wifi-buffer-usage` * For lwIP TCP/IP (Wi-Fi and Ethernet), see :ref:`lwip-performance` :SOC_WIFI_SUPPORTED: * The :example:`wifi/iperf` example contains a configuration that is heavily optimized for Wi-Fi TCP/IP throughput. Append the contents of the files :example_file:`wifi/iperf/sdkconfig.defaults`, :example_file:`wifi/iperf/sdkconfig.defaults.{IDF_TARGET_PATH_NAME}` and :example_file:`wifi/iperf/sdkconfig.ci.99` to the ``sdkconfig`` file in your project in order to add all of these options. Note that some of these options may have trade-offs in terms of reduced debuggability, increased firmware size, increased memory usage, or reduced performance of other features. To get the best result, read the documentation pages linked above and use related information to determine exactly which options are best suited for your app. + :SOC_EMAC_SUPPORTED: * The :example:`ethernet/iperf` example contains a configuration that is heavily optimized for Ethernet TCP/IP throughput. Examine :example_file:`ethernet/iperf/sdkconfig.defaults` for more details. Note that some of these options may have trade-offs in terms of reduced debuggability, increased firmware size, increased memory usage, or reduced performance of other features. To get the best result, read the documentation pages linked above and use related information to determine exactly which options are best suited for your app. Improving I/O Performance ------------------------- diff --git a/examples/ethernet/iperf/sdkconfig.defaults b/examples/ethernet/iperf/sdkconfig.defaults index efd490ca6d..c6ad4c051e 100644 --- a/examples/ethernet/iperf/sdkconfig.defaults +++ b/examples/ethernet/iperf/sdkconfig.defaults @@ -1,7 +1,8 @@ # Increase main task stack size CONFIG_ESP_MAIN_TASK_STACK_SIZE=7168 -# Enable filesystem +# Enable filesystem for console commands history storage +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_example.csv" CONFIG_PARTITION_TABLE_FILENAME="partitions_example.csv" @@ -10,11 +11,16 @@ CONFIG_PARTITION_TABLE_FILENAME="partitions_example.csv" CONFIG_FREERTOS_USE_TRACE_FACILITY=y CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y +# -------------------------------- +# Performance optimization options +# -------------------------------- +# `lwIP` and `iperf` tasks have serial dependency to each other (i.e. `iperf` must wait for `lwIP` +# to process the packets). Therefore, you don't gain much performance improvement when running +# multi core mode. On the other hand, IRAM optimizations have greater effect for single core mode. + # Run FreeRTOS only on the first core CONFIG_FREERTOS_UNICORE=y -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y - # Disable watch dog CONFIG_ESP_INT_WDT=n CONFIG_ESP_TASK_WDT_EN=n