Few recipes had incorrect devices selected for IRQ pinning.
Recipe vxlan_multicast included some of the tap devices. As these do not have any IRQ assigned it does not make sense to do the pinning on them.
Recipe novirt_ovs_vxlan selected ovs internal devices instead of physical devices. This impacts the performance testing.
Signed-off-by: Jan Tluka jtluka@redhat.com --- recipes/regression_tests/phase3/novirt_ovs_vxlan.py | 5 ++++- recipes/regression_tests/phase3/vxlan_multicast.py | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/recipes/regression_tests/phase3/novirt_ovs_vxlan.py b/recipes/regression_tests/phase3/novirt_ovs_vxlan.py index 7b4d1ec..470ef06 100644 --- a/recipes/regression_tests/phase3/novirt_ovs_vxlan.py +++ b/recipes/regression_tests/phase3/novirt_ovs_vxlan.py @@ -53,8 +53,11 @@ if nperf_cpupin: h1.run("service irqbalance stop") h2.run("service irqbalance stop")
+ h1_phy = h1.get_device("if1") + h2_phy = h2.get_device("if1") + # this will pin devices irqs to cpu #0 - for m, d in [(h1, h1_nic), (h2, h2_nic)]: + for m, d in [(h1, h1_phy), (h2, h2_phy)]: pin_dev_irqs(m, d, 0)
nperf_opts = "" diff --git a/recipes/regression_tests/phase3/vxlan_multicast.py b/recipes/regression_tests/phase3/vxlan_multicast.py index d4c18ee..e31bd6b 100644 --- a/recipes/regression_tests/phase3/vxlan_multicast.py +++ b/recipes/regression_tests/phase3/vxlan_multicast.py @@ -57,10 +57,8 @@ if nperf_cpupin: g1.run("service irqbalance stop")
m1_phy1 = m1.get_interface("eth1") - m1_phy2 = m1.get_interface("tap1") m2_phy1 = m2.get_interface("eth1") - g1_phy1 = g1.get_interface("eth1") - dev_list = [(m1, m1_phy1), (m1, m1_phy2), (m2, m2_phy1), (g1, g1_phy1)] + dev_list = [(m1, m1_phy1), (m2, m2_phy1)]
# this will pin devices irqs to cpu #0 for m, d in dev_list:
On Tue, Apr 18, 2017 at 04:21:15PM +0200, Jan Tluka wrote:
Few recipes had incorrect devices selected for IRQ pinning.
Recipe vxlan_multicast included some of the tap devices. As these do not have any IRQ assigned it does not make sense to do the pinning on them.
Recipe novirt_ovs_vxlan selected ovs internal devices instead of physical devices. This impacts the performance testing.
Signed-off-by: Jan Tluka jtluka@redhat.com
recipes/regression_tests/phase3/novirt_ovs_vxlan.py | 5 ++++- recipes/regression_tests/phase3/vxlan_multicast.py | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/recipes/regression_tests/phase3/novirt_ovs_vxlan.py b/recipes/regression_tests/phase3/novirt_ovs_vxlan.py index 7b4d1ec..470ef06 100644 --- a/recipes/regression_tests/phase3/novirt_ovs_vxlan.py +++ b/recipes/regression_tests/phase3/novirt_ovs_vxlan.py @@ -53,8 +53,11 @@ if nperf_cpupin: h1.run("service irqbalance stop") h2.run("service irqbalance stop")
- h1_phy = h1.get_device("if1")
- h2_phy = h2.get_device("if1")
- # this will pin devices irqs to cpu #0
- for m, d in [(h1, h1_nic), (h2, h2_nic)]:
- for m, d in [(h1, h1_phy), (h2, h2_phy)]: pin_dev_irqs(m, d, 0)
nperf_opts = "" diff --git a/recipes/regression_tests/phase3/vxlan_multicast.py b/recipes/regression_tests/phase3/vxlan_multicast.py index d4c18ee..e31bd6b 100644 --- a/recipes/regression_tests/phase3/vxlan_multicast.py +++ b/recipes/regression_tests/phase3/vxlan_multicast.py @@ -57,10 +57,8 @@ if nperf_cpupin: g1.run("service irqbalance stop")
m1_phy1 = m1.get_interface("eth1")
- m1_phy2 = m1.get_interface("tap1") m2_phy1 = m2.get_interface("eth1")
- g1_phy1 = g1.get_interface("eth1")
- dev_list = [(m1, m1_phy1), (m1, m1_phy2), (m2, m2_phy1), (g1, g1_phy1)]
dev_list = [(m1, m1_phy1), (m2, m2_phy1)]
# this will pin devices irqs to cpu #0 for m, d in dev_list:
-- 2.7.4 _______________________________________________ LNST-developers mailing list -- lnst-developers@lists.fedorahosted.org To unsubscribe send an email to lnst-developers-leave@lists.fedorahosted.org
Acked-by: Ondrej Lichtner olichtne@redhat.com
Tue, Apr 18, 2017 at 04:21:15PM CEST, jtluka@redhat.com wrote:
Few recipes had incorrect devices selected for IRQ pinning.
Recipe vxlan_multicast included some of the tap devices. As these do not have any IRQ assigned it does not make sense to do the pinning on them.
Recipe novirt_ovs_vxlan selected ovs internal devices instead of physical devices. This impacts the performance testing.
Signed-off-by: Jan Tluka jtluka@redhat.com
I'm holding push of this patch. There's some issue with the OVS recipe. Could be a bug in LNST.
I get this error,
Traceback (most recent call last): File "/usr/bin/lnst-ctl", line 182, in get_recipe_result res = exec_action(action, nettestctl) File "/usr/bin/lnst-ctl", line 137, in exec_action return nettestctl.run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 667, in run_recipe res = self._run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 685, in _run_recipe res = self._run_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 733, in _run_task return self._run_python_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 722, in _run_python_task module = imp.load_source(name, task_path.resolve()) File "/usr/share/lnst/recipes/regression_tests/phase3/novirt_ovs_vxlan.py", line 56, in <module> h1_phy = h1.get_device("if1") File "/usr/lib/python2.7/site-packages/lnst/Controller/Task.py", line 319, in get_device raise TaskError("No device with name '%s' found." % str(name)) TaskError: No device with name 'if1' found.
But in summary I have,
INFO: ====================================== SUMMARY ====================================== INFO: /usr/share/lnst/recipes/regression_tests/phase3/novirt_ovs_vxlan.xml match: 1 FAIL INFO: Pool match description: INFO: host "test_host1" uses "wsfd-netdev40" INFO: interface "if1" matched to "eth3" (driver: "ixgbe") INFO: host "test_host2" uses "wsfd-netdev41" INFO: interface "if1" matched to "eth3" (driver: "ixgbe") INFO: error message: No device with name 'if1' found. INFO: task: 1 INFO: host test_host1: exec cmd: "service irqbalance stop" PASS INFO: host test_host2: exec cmd: "service irqbalance stop" PASS INFO: =====================================================================================
So the device must exist! I'll debug this tomorrow.
-Jan
You need to use get_interface() on physical interfaces, not get_device().
2017-04-18 18:04 GMT+02:00 Jan Tluka jtluka@redhat.com:
Tue, Apr 18, 2017 at 04:21:15PM CEST, jtluka@redhat.com wrote:
Few recipes had incorrect devices selected for IRQ pinning.
Recipe vxlan_multicast included some of the tap devices. As these do not have any IRQ assigned it does not make sense to do the pinning on them.
Recipe novirt_ovs_vxlan selected ovs internal devices instead of physical devices. This impacts the performance testing.
Signed-off-by: Jan Tluka jtluka@redhat.com
I'm holding push of this patch. There's some issue with the OVS recipe. Could be a bug in LNST.
I get this error,
Traceback (most recent call last): File "/usr/bin/lnst-ctl", line 182, in get_recipe_result res = exec_action(action, nettestctl) File "/usr/bin/lnst-ctl", line 137, in exec_action return nettestctl.run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 667, in run_recipe res = self._run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 685, in _run_recipe res = self._run_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 733, in _run_task return self._run_python_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 722, in _run_python_task module = imp.load_source(name, task_path.resolve()) File "/usr/share/lnst/recipes/regression_tests/phase3/novirt_ovs_vxlan.py", line 56, in <module> h1_phy = h1.get_device("if1") File "/usr/lib/python2.7/site-packages/lnst/Controller/Task.py", line 319, in get_device raise TaskError("No device with name '%s' found." % str(name)) TaskError: No device with name 'if1' found.
But in summary I have,
INFO: ====================================== SUMMARY ====================================== INFO: /usr/share/lnst/recipes/regression_tests/phase3/novirt_ovs_vxlan.xml match: 1 FAIL INFO: Pool match description: INFO: host "test_host1" uses "wsfd-netdev40" INFO: interface "if1" matched to "eth3" (driver: "ixgbe") INFO: host "test_host2" uses "wsfd-netdev41" INFO: interface "if1" matched to "eth3" (driver: "ixgbe") INFO: error message: No device with name 'if1' found. INFO: task: 1 INFO: host test_host1: exec cmd: "service irqbalance stop" PASS INFO: host test_host2: exec cmd: "service irqbalance stop" PASS INFO: =====================================================================================
So the device must exist! I'll debug this tomorrow.
-Jan _______________________________________________ LNST-developers mailing list -- lnst-developers@lists.fedorahosted.org To unsubscribe send an email to lnst-developers-leave@lists.fedorahosted.org
Wed, Apr 19, 2017 at 10:54:44AM CEST, jprochaz@redhat.com wrote:
You need to use get_interface() on physical interfaces, not get_device().
Thanks Jiri and Ondrej! I will send v2.
-Jan
2017-04-18 18:04 GMT+02:00 Jan Tluka jtluka@redhat.com:
Tue, Apr 18, 2017 at 04:21:15PM CEST, jtluka@redhat.com wrote:
Few recipes had incorrect devices selected for IRQ pinning.
Recipe vxlan_multicast included some of the tap devices. As these do not have any IRQ assigned it does not make sense to do the pinning on them.
Recipe novirt_ovs_vxlan selected ovs internal devices instead of physical devices. This impacts the performance testing.
Signed-off-by: Jan Tluka jtluka@redhat.com
I'm holding push of this patch. There's some issue with the OVS recipe. Could be a bug in LNST.
I get this error,
Traceback (most recent call last): File "/usr/bin/lnst-ctl", line 182, in get_recipe_result res = exec_action(action, nettestctl) File "/usr/bin/lnst-ctl", line 137, in exec_action return nettestctl.run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 667, in run_recipe res = self._run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 685, in _run_recipe res = self._run_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 733, in _run_task return self._run_python_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 722, in _run_python_task module = imp.load_source(name, task_path.resolve()) File "/usr/share/lnst/recipes/regression_tests/phase3/novirt_ovs_vxlan.py", line 56, in <module> h1_phy = h1.get_device("if1") File "/usr/lib/python2.7/site-packages/lnst/Controller/Task.py", line 319, in get_device raise TaskError("No device with name '%s' found." % str(name)) TaskError: No device with name 'if1' found.
But in summary I have,
INFO: ====================================== SUMMARY ====================================== INFO: /usr/share/lnst/recipes/regression_tests/phase3/novirt_ovs_vxlan.xml match: 1 FAIL INFO: Pool match description: INFO: host "test_host1" uses "wsfd-netdev40" INFO: interface "if1" matched to "eth3" (driver: "ixgbe") INFO: host "test_host2" uses "wsfd-netdev41" INFO: interface "if1" matched to "eth3" (driver: "ixgbe") INFO: error message: No device with name 'if1' found. INFO: task: 1 INFO: host test_host1: exec cmd: "service irqbalance stop" PASS INFO: host test_host2: exec cmd: "service irqbalance stop" PASS INFO: =====================================================================================
So the device must exist! I'll debug this tomorrow.
-Jan _______________________________________________ LNST-developers mailing list -- lnst-developers@lists.fedorahosted.org To unsubscribe send an email to lnst-developers-leave@lists.fedorahosted.org
On Tue, Apr 18, 2017 at 06:04:05PM +0200, Jan Tluka wrote:
Tue, Apr 18, 2017 at 04:21:15PM CEST, jtluka@redhat.com wrote:
Few recipes had incorrect devices selected for IRQ pinning.
Recipe vxlan_multicast included some of the tap devices. As these do not have any IRQ assigned it does not make sense to do the pinning on them.
Recipe novirt_ovs_vxlan selected ovs internal devices instead of physical devices. This impacts the performance testing.
Signed-off-by: Jan Tluka jtluka@redhat.com
I'm holding push of this patch. There's some issue with the OVS recipe. Could be a bug in LNST.
I get this error,
Traceback (most recent call last): File "/usr/bin/lnst-ctl", line 182, in get_recipe_result res = exec_action(action, nettestctl) File "/usr/bin/lnst-ctl", line 137, in exec_action return nettestctl.run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 667, in run_recipe res = self._run_recipe() File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 685, in _run_recipe res = self._run_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 733, in _run_task return self._run_python_task(task) File "/usr/lib/python2.7/site-packages/lnst/Controller/NetTestController.py", line 722, in _run_python_task module = imp.load_source(name, task_path.resolve()) File "/usr/share/lnst/recipes/regression_tests/phase3/novirt_ovs_vxlan.py", line 56, in <module> h1_phy = h1.get_device("if1") File "/usr/lib/python2.7/site-packages/lnst/Controller/Task.py", line 319, in get_device raise TaskError("No device with name '%s' found." % str(name)) TaskError: No device with name 'if1' found.
Ah... I know what this is... it's the problem with the duality of nic related classes on Controller that I created to temporarily solve a problem.
By default we work with the InterfaceAPI objects... these reference interfaces created directly from the recipe XML - first level under <interfaces> element. These objects are referenced by the 'id' used in their respective element.
However, this approach was not usable for internal interfaces of ovs. To work with them I created a diferent class - DeviceAPI, that isn't referenced by an 'id' used in the XML file, and instead you either search by name or interface index used by the remote kernel...
So the Traceback up there is you using the get_device method that expects a device name and you providint the xml_id instead... So to fix that issue, just call: h1_phy = h1.get_interface('if1') h2_phy = h2.get_interface('if1')
FYI. The InterfaceAPI approach didn't work because of how ovs internal ports are created and manipulated I was unable to cleanly create InterfaceAPI objects for them... it would result in several very hard and ugly hacks, and at that point we were already working on Python recipes that wouldn't have the same problem. So instead I created the DeviceAPI objects that are also a dirty hack because they introduce this broken duality of how to work with NICs, but they were a quick and easy hack compared to the alternative...
-Ondrej
lnst-developers@lists.fedorahosted.org