-
Notifications
You must be signed in to change notification settings - Fork 231
DPDK: Add symmetric_mp hotplug test #4348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 5 commits
28d6046
8f184f0
f0b8acf
1e9cead
bc71a56
5374ff5
8e8b01f
c3845e1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -134,6 +134,58 @@ def verify_dpdk_symmetric_mp( | |||||
| ) -> None: | ||||||
| run_dpdk_symmetric_mp(node, log, variables) | ||||||
|
|
||||||
| @TestCaseMetadata( | ||||||
| description=""" | ||||||
| netvsc pmd version. | ||||||
| This test case checks dpdk symmetic mp app, plus an sriov hotplug. | ||||||
| More details refer https://docs.microsoft.com/en-us/azure/virtual-network/setup-dpdk#prerequisites # noqa: E501 | ||||||
| """, | ||||||
| priority=2, | ||||||
| requirement=simple_requirement( | ||||||
| min_core_count=8, | ||||||
| min_nic_count=3, | ||||||
| network_interface=Sriov(), | ||||||
| unsupported_features=[Gpu, Infiniband], | ||||||
| ), | ||||||
| timeout=600, | ||||||
| ) | ||||||
| def verify_dpdk_symmetric_mp_hotplug( | ||||||
| self, | ||||||
| node: Node, | ||||||
| log: Logger, | ||||||
| variables: Dict[str, Any], | ||||||
| result: TestResult, | ||||||
| ) -> None: | ||||||
|
|
||||||
| run_dpdk_symmetric_mp( | ||||||
| node, log, variables, trigger_hotplug=True, hotplug_times=1 | ||||||
| ) | ||||||
|
Comment on lines
+159
to
+161
|
||||||
|
|
||||||
| @TestCaseMetadata( | ||||||
| description=""" | ||||||
| netvsc pmd version. | ||||||
| This test case checks dpdk symmetic mp app, plus an sriov hotplug. | ||||||
|
||||||
| This test case checks dpdk symmetic mp app, plus an sriov hotplug. | |
| This test case checks dpdk symmetric mp app, plus an sriov hotplug. |
Copilot
AI
Mar 25, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With hotplug_times=40, run_dpdk_symmetric_mp will loop many times and (per current implementation) starts a new ping_async each iteration without any visible join/wait. This can create many concurrent ping processes during the stress run, increasing flakiness and resource pressure. Consider changing the runner to wait for each async ping to finish before starting the next iteration (or make the stress case use synchronous ping), and/or cap concurrent ping jobs.
| node, log, variables, trigger_hotplug=True, hotplug_times=40 | |
| node, log, variables, trigger_hotplug=True, hotplug_times=4 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -74,6 +74,7 @@ | |
| ) | ||
| from lisa.tools.hugepages import HugePageSize | ||
| from lisa.tools.lscpu import CpuArchitecture | ||
| from lisa.util import sleep | ||
| from lisa.util.constants import DEVICE_TYPE_SRIOV, SIGINT | ||
| from lisa.util.parallel import TaskManager, run_in_parallel, run_in_parallel_async | ||
|
|
||
|
|
@@ -477,7 +478,7 @@ def initialize_node_resources( | |
| hugepages = node.tools[Hugepages] | ||
| numa_nodes = node.tools[Lscpu].get_numa_node_count() | ||
| try: | ||
| hugepages.init_hugepages(hugepage_size, minimum_gb=4 * numa_nodes) | ||
| hugepages.init_hugepages(hugepage_size, minimum_gb=8 * numa_nodes) | ||
|
mcgov marked this conversation as resolved.
Outdated
|
||
| except NotEnoughMemoryException as err: | ||
|
||
| raise SkippedException(err) | ||
|
|
||
|
|
@@ -1718,6 +1719,8 @@ def run_dpdk_symmetric_mp( | |
| - count packets received on tx/rx side of each process and port | ||
|
|
||
| """ | ||
|
|
||
| test_timeout = 120 + (60 * hotplug_times if trigger_hotplug else 35) | ||
| # setup and unwrap the resources for this test | ||
| # get a list of the upper non-primary nics and select two of them | ||
| test_nics = [ | ||
|
|
@@ -1790,9 +1793,9 @@ def run_dpdk_symmetric_mp( | |
| f"{str(symmetric_mp_path)} -l 1 --proc-type auto " | ||
| f"{symmetric_mp_args} --proc-id 0" | ||
| ), | ||
| timeout=660, | ||
| timeout=test_timeout, | ||
| signal=SIGINT, | ||
| kill_timeout=30, | ||
| kill_timeout=test_timeout + 5, | ||
| ) | ||
|
Comment on lines
+1796
to
1799
Comment on lines
+1796
to
1799
|
||
|
|
||
| # wait for it to start | ||
|
|
@@ -1804,9 +1807,9 @@ def run_dpdk_symmetric_mp( | |
| f"{str(symmetric_mp_path)} -l 2 --proc-type secondary " | ||
| f"{symmetric_mp_args} --proc-id 1" | ||
| ), | ||
| timeout=600, | ||
| timeout=test_timeout, | ||
| signal=SIGINT, | ||
| kill_timeout=35, | ||
| kill_timeout=test_timeout + 5, | ||
| ) | ||
|
Comment on lines
+1810
to
1813
|
||
| secondary.wait_output("APP: Finished Process Init", timeout=20) | ||
|
|
||
|
|
@@ -1842,7 +1845,7 @@ def run_dpdk_symmetric_mp( | |
| "Device notification type=1", # RTE_DEV_EVENT_REMOVE | ||
| delta_only=True, | ||
| ) # relying on compiler defaults here, not great. | ||
|
|
||
| sleep(1) | ||
| # turn SRIOV on | ||
| node.features[NetworkInterface].switch_sriov( | ||
| enable=True, wait=False, reset_connections=False | ||
|
mcgov marked this conversation as resolved.
|
||
|
|
@@ -1867,6 +1870,8 @@ def run_dpdk_symmetric_mp( | |
| ) | ||
| # expect additional pings for each post-hotplug instance | ||
| expected_pings += 100 | ||
| # sleep for a moment to avoid api throttling | ||
| sleep(1) | ||
|
mcgov marked this conversation as resolved.
|
||
|
|
||
| ping.ping_async( | ||
| target=test_nics[0].ip_addr, | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.