@@ -354,4 +354,8 @@ time not processing packets will be determined by the sleep and processor
wake-up times and should be tested with each system configuration.
+The current configuration of the PMD load based sleeping can be shown with::
+
+ $ ovs-appctl dpif-netdev/pmd-sleep-show
+
Sleep time statistics for 10 secs can be seen with::
@@ -51,4 +51,6 @@ Post-v3.1.0
* 'pmd-maxsleep' other_config was renamed to 'pmd-sleep-max'.
'pmd-maxsleep' is deprecated and will be removed in a future release.
+ * 'ovs-appctl dpif-netdev/pmd-sleep-show' command was added to get the
+ max sleep configuration of PMD thread cores.
- Linux TC offload:
* Add support for offloading VXLAN tunnels with the GBP extensions.
@@ -702,4 +702,5 @@ enum pmd_info_type {
PMD_INFO_SHOW_RXQ, /* Show poll lists of pmd threads. */
PMD_INFO_PERF_SHOW, /* Show pmd performance details. */
+ PMD_INFO_MAX_SLEEP_SHOW, /* Show max sleep configuration details. */
};
@@ -1442,5 +1443,7 @@ dpif_netdev_pmd_info(struct unixctl_conn *conn, int argc, const char *argv[],
unsigned long long max_secs = (PMD_INTERVAL_LEN * PMD_INTERVAL_MAX)
/ INTERVAL_USEC_TO_SEC;
- bool first_show_rxq = true;
+ uint64_t default_max_sleep = 0;
+ bool show_header = true;
+
ovs_mutex_lock(&dp_netdev_mutex);
@@ -1490,5 +1493,5 @@ dpif_netdev_pmd_info(struct unixctl_conn *conn, int argc, const char *argv[],
}
if (type == PMD_INFO_SHOW_RXQ) {
- if (first_show_rxq) {
+ if (show_header) {
if (!secs || secs > max_secs) {
secs = max_secs;
@@ -1499,5 +1502,5 @@ dpif_netdev_pmd_info(struct unixctl_conn *conn, int argc, const char *argv[],
ds_put_format(&reply, "Displaying last %u seconds "
"pmd usage %%\n", secs);
- first_show_rxq = false;
+ show_header = false;
}
pmd_info_show_rxq(&reply, pmd, secs);
@@ -1508,4 +1511,12 @@ dpif_netdev_pmd_info(struct unixctl_conn *conn, int argc, const char *argv[],
} else if (type == PMD_INFO_PERF_SHOW) {
pmd_info_show_perf(&reply, pmd, (struct pmd_perf_params *)aux);
+ } else if (type == PMD_INFO_MAX_SLEEP_SHOW) {
+ if (show_header) {
+ atomic_read_relaxed(&dp->pmd_max_sleep, &default_max_sleep);
+ ds_put_format(&reply, "Default max sleep: %4"PRIu64" us",
+ default_max_sleep);
+ ds_put_cstr(&reply, "\n");
+ show_header = false;
+ }
}
}
@@ -1608,5 +1619,6 @@ dpif_netdev_init(void)
static enum pmd_info_type show_aux = PMD_INFO_SHOW_STATS,
clear_aux = PMD_INFO_CLEAR_STATS,
- poll_aux = PMD_INFO_SHOW_RXQ;
+ poll_aux = PMD_INFO_SHOW_RXQ,
+ sleep_aux = PMD_INFO_MAX_SLEEP_SHOW;
unixctl_command_register("dpif-netdev/pmd-stats-show", "[-pmd core] [dp]",
@@ -1620,4 +1632,7 @@ dpif_netdev_init(void)
0, 5, dpif_netdev_pmd_info,
(void *)&poll_aux);
+ unixctl_command_register("dpif-netdev/pmd-sleep-show", "[dp]",
+ 0, 1, dpif_netdev_pmd_info,
+ (void *)&sleep_aux);
unixctl_command_register("dpif-netdev/pmd-perf-show",
"[-nh] [-it iter-history-len]"
@@ -1278,8 +1278,15 @@ dnl Check default
CHECK_DP_SLEEP_MAX([0], [disabled], [])
+AT_CHECK([ovs-appctl dpif-netdev/pmd-sleep-show], [0], [dnl
+Default max sleep: 0 us
+])
+
dnl Check low value max sleep
get_log_next_line_num
AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-sleep-max="1"])
CHECK_DP_SLEEP_MAX([1], [enabled], [+$LINENUM])
+AT_CHECK([ovs-appctl dpif-netdev/pmd-sleep-show], [0], [dnl
+Default max sleep: 1 us
+])
dnl Check high value max sleep
@@ -1287,4 +1294,7 @@ get_log_next_line_num
AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-sleep-max="10000"])
CHECK_DP_SLEEP_MAX([10000], [enabled], [+$LINENUM])
+AT_CHECK([ovs-appctl dpif-netdev/pmd-sleep-show], [0], [dnl
+Default max sleep: 10000 us
+])
dnl Check setting max sleep to zero
@@ -1292,4 +1302,7 @@ get_log_next_line_num
AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-sleep-max="0"])
CHECK_DP_SLEEP_MAX([0], [disabled], [+$LINENUM])
+AT_CHECK([ovs-appctl dpif-netdev/pmd-sleep-show], [0], [dnl
+Default max sleep: 0 us
+])
dnl Check above high value max sleep
@@ -1297,4 +1310,7 @@ get_log_next_line_num
AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-sleep-max="10001"])
CHECK_DP_SLEEP_MAX([10000], [enabled], [+$LINENUM])
+AT_CHECK([ovs-appctl dpif-netdev/pmd-sleep-show], [0], [dnl
+Default max sleep: 10000 us
+])
dnl Check rounding
@@ -1302,4 +1318,7 @@ get_log_next_line_num
AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-sleep-max="490"])
CHECK_DP_SLEEP_MAX([490], [enabled], [+$LINENUM])
+AT_CHECK([ovs-appctl dpif-netdev/pmd-sleep-show], [0], [dnl
+Default max sleep: 490 us
+])
dnl Check rounding
@@ -1307,4 +1326,7 @@ get_log_next_line_num
AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-sleep-max="499"])
CHECK_DP_SLEEP_MAX([499], [enabled], [+$LINENUM])
+AT_CHECK([ovs-appctl dpif-netdev/pmd-sleep-show], [0], [dnl
+Default max sleep: 499 us
+])
OVS_VSWITCHD_STOP