Skip to content

Commit 58c6bc2

Browse files
committed
ft-orchestration more consistent rss setup
1 parent c0ec18d commit 58c6bc2

5 files changed

Lines changed: 227 additions & 22 deletions

File tree

tools/ft-orchestration/src/probe/cento.py

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,46 @@ def _switch_back_zc(self, interface_name: str):
240240
).run()
241241

242242
def _set_rss_queues(self, interface_name):
243+
Tool(
244+
f"ethtool --set-channels {interface_name} combined $(nproc)",
245+
executor=self._executor,
246+
sudo=self._sudo,
247+
).run()
248+
Tool(
249+
f"ethtool -X {interface_name} hfunc toeplitz hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a equal {self._settings.rss_queues}",
250+
executor=self._executor,
251+
sudo=self._sudo,
252+
).run()
243253
Tool(
244254
f"ethtool --set-channels {interface_name} combined {self._settings.rss_queues}",
245255
executor=self._executor,
246256
sudo=self._sudo,
247257
).run()
258+
Tool(
259+
f"ethtool -N {interface_name} rx-flow-hash tcp4 sd",
260+
executor=self._executor,
261+
sudo=self._sudo,
262+
).run()
263+
Tool(
264+
f"ethtool -N {interface_name} rx-flow-hash udp4 sd",
265+
executor=self._executor,
266+
sudo=self._sudo,
267+
).run()
268+
Tool(
269+
f"ethtool -N {interface_name} rx-flow-hash tcp6 sd",
270+
executor=self._executor,
271+
sudo=self._sudo,
272+
).run()
273+
Tool(
274+
f"ethtool -N {interface_name} rx-flow-hash udp6 sd",
275+
executor=self._executor,
276+
sudo=self._sudo,
277+
).run()
278+
Tool(
279+
f"ethtool -K {interface_name} gro off gso off tso off",
280+
executor=self._executor,
281+
sudo=self._sudo,
282+
).run()
248283

249284
def _before_start(self):
250285
interface_names = {name.split("@")[0] for name in self._interfaces}
@@ -258,11 +293,6 @@ def _before_start(self):
258293
executor=self._executor,
259294
sudo=self._sudo,
260295
).run()
261-
Tool(
262-
f"ethtool -K {name} gro off gso off tso off",
263-
executor=self._executor,
264-
sudo=self._sudo,
265-
).run()
266296
if ifc.startswith("zc:"):
267297
self._switch_to_zc(name)
268298
self._set_rss_queues(name)

tools/ft-orchestration/src/probe/ipfixprobe.py

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,9 +840,9 @@ def _prepare_cmd(
840840
if settings.packets:
841841
raw_params.append(f"p={settings.packets}")
842842

843-
for _ in range(settings.queues_count):
843+
for i in range(settings.queues_count):
844844
args += self._get_plugin_arg(
845-
IpfixprobePluginType.INPUT, "raw", raw_params
845+
IpfixprobePluginType.INPUT, f"raw@{i}", raw_params
846846
)
847847

848848
args += self._get_common_args(target, protocols, settings)
@@ -861,11 +861,41 @@ def _before_start(self):
861861
executor=self._executor,
862862
sudo=self._sudo,
863863
).run()
864+
Tool(
865+
f"ethtool --set-channels {ifc} combined $(nproc)",
866+
executor=self._executor,
867+
sudo=self._sudo,
868+
).run()
869+
Tool(
870+
f"ethtool -X {ifc} hfunc toeplitz hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a equal {self._settings.rss_queues}",
871+
executor=self._executor,
872+
sudo=self._sudo,
873+
).run()
864874
Tool(
865875
f"ethtool --set-channels {ifc} combined {self._settings.rss_queues}",
866876
executor=self._executor,
867877
sudo=self._sudo,
868878
).run()
879+
Tool(
880+
f"ethtool -N {ifc} rx-flow-hash tcp4 sd",
881+
executor=self._executor,
882+
sudo=self._sudo,
883+
).run()
884+
Tool(
885+
f"ethtool -N {ifc} rx-flow-hash udp4 sd",
886+
executor=self._executor,
887+
sudo=self._sudo,
888+
).run()
889+
Tool(
890+
f"ethtool -N {ifc} rx-flow-hash tcp6 sd",
891+
executor=self._executor,
892+
sudo=self._sudo,
893+
).run()
894+
Tool(
895+
f"ethtool -N {ifc} rx-flow-hash udp6 sd",
896+
executor=self._executor,
897+
sudo=self._sudo,
898+
).run()
869899

870900

871901
class IpfixprobePcap(Ipfixprobe):
@@ -928,11 +958,41 @@ def _before_start(self):
928958
executor=self._executor,
929959
sudo=self._sudo,
930960
).run()
961+
Tool(
962+
f"ethtool --set-channels {ifc} combined $(nproc)",
963+
executor=self._executor,
964+
sudo=self._sudo,
965+
).run()
966+
Tool(
967+
f"ethtool -X {ifc} hfunc toeplitz hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a equal {self._settings.rss_queues}",
968+
executor=self._executor,
969+
sudo=self._sudo,
970+
).run()
931971
Tool(
932972
f"ethtool --set-channels {ifc} combined {self._settings.rss_queues}",
933973
executor=self._executor,
934974
sudo=self._sudo,
935975
).run()
976+
Tool(
977+
f"ethtool -N {ifc} rx-flow-hash tcp4 sd",
978+
executor=self._executor,
979+
sudo=self._sudo,
980+
).run()
981+
Tool(
982+
f"ethtool -N {ifc} rx-flow-hash udp4 sd",
983+
executor=self._executor,
984+
sudo=self._sudo,
985+
).run()
986+
Tool(
987+
f"ethtool -N {ifc} rx-flow-hash tcp6 sd",
988+
executor=self._executor,
989+
sudo=self._sudo,
990+
).run()
991+
Tool(
992+
f"ethtool -N {ifc} rx-flow-hash udp6 sd",
993+
executor=self._executor,
994+
sudo=self._sudo,
995+
).run()
936996

937997

938998
class IpfixprobeDpdk(Ipfixprobe):

tools/ft-orchestration/src/probe/nprobe.py

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,6 @@ def _switch_to_zc(self, interface_name: str):
224224
sudo=self._sudo,
225225
).run()
226226
time.sleep(5)
227-
Tool(
228-
f"ethtool --set-channels {interface_name} combined {self._settings.rss_queues}",
229-
executor=self._executor,
230-
sudo=self._sudo,
231-
).run()
232227

233228
def _switch_back_zc(self, interface_name: str):
234229
driver, _ = Tool(
@@ -248,11 +243,46 @@ def _switch_back_zc(self, interface_name: str):
248243
).run()
249244

250245
def _set_rss_queues(self, interface_name):
246+
Tool(
247+
f"ethtool --set-channels {interface_name} combined $(nproc)",
248+
executor=self._executor,
249+
sudo=self._sudo,
250+
).run()
251+
Tool(
252+
f"ethtool -X {interface_name} hfunc toeplitz hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a equal {self._settings.rss_queues}",
253+
executor=self._executor,
254+
sudo=self._sudo,
255+
).run()
251256
Tool(
252257
f"ethtool --set-channels {interface_name} combined {self._settings.rss_queues}",
253258
executor=self._executor,
254259
sudo=self._sudo,
255260
).run()
261+
Tool(
262+
f"ethtool -N {interface_name} rx-flow-hash tcp4 sd",
263+
executor=self._executor,
264+
sudo=self._sudo,
265+
).run()
266+
Tool(
267+
f"ethtool -N {interface_name} rx-flow-hash udp4 sd",
268+
executor=self._executor,
269+
sudo=self._sudo,
270+
).run()
271+
Tool(
272+
f"ethtool -N {interface_name} rx-flow-hash tcp6 sd",
273+
executor=self._executor,
274+
sudo=self._sudo,
275+
).run()
276+
Tool(
277+
f"ethtool -N {interface_name} rx-flow-hash udp6 sd",
278+
executor=self._executor,
279+
sudo=self._sudo,
280+
).run()
281+
Tool(
282+
f"ethtool -K {interface_name} gro off gso off tso off",
283+
executor=self._executor,
284+
sudo=self._sudo,
285+
).run()
256286

257287
def _before_start(self):
258288
interface_names = {name.split("@")[0] for name in self._interfaces}
@@ -266,11 +296,6 @@ def _before_start(self):
266296
executor=self._executor,
267297
sudo=self._sudo,
268298
).run()
269-
Tool(
270-
f"ethtool -K {name} gro off gso off tso off",
271-
executor=self._executor,
272-
sudo=self._sudo,
273-
).run()
274299
if ifc.startswith("zc:"):
275300
self._switch_to_zc(name)
276301
self._set_rss_queues(name)

tools/ft-orchestration/src/probe/pmacct.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,41 @@ def _before_start(self):
224224
executor=self._executor,
225225
sudo=self._sudo,
226226
).run()
227+
Tool(
228+
f"ethtool --set-channels {self._settings.pcap_interface} combined $(nproc)",
229+
executor=self._executor,
230+
sudo=self._sudo,
231+
).run()
232+
Tool(
233+
f"ethtool -X {self._settings.pcap_interface} hfunc toeplitz hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a equal {self._rss_queues_pcap}",
234+
executor=self._executor,
235+
sudo=self._sudo,
236+
).run()
227237
Tool(
228238
f"ethtool --set-channels {self._settings.pcap_interface} combined {self._rss_queues_pcap}",
229239
executor=self._executor,
230240
sudo=self._sudo,
231241
).run()
242+
Tool(
243+
f"ethtool -N {self._settings.pcap_interface} rx-flow-hash tcp4 sd",
244+
executor=self._executor,
245+
sudo=self._sudo,
246+
).run()
247+
Tool(
248+
f"ethtool -N {self._settings.pcap_interface} rx-flow-hash udp4 sd",
249+
executor=self._executor,
250+
sudo=self._sudo,
251+
).run()
252+
Tool(
253+
f"ethtool -N {self._settings.pcap_interface} rx-flow-hash tcp6 sd",
254+
executor=self._executor,
255+
sudo=self._sudo,
256+
).run()
257+
Tool(
258+
f"ethtool -N {self._settings.pcap_interface} rx-flow-hash udp6 sd",
259+
executor=self._executor,
260+
sudo=self._sudo,
261+
).run()
232262

233263
def start(self):
234264
"""

tools/ft-orchestration/src/probe/yaf.py

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,41 @@ def _before_start(self):
309309
executor=self._executor,
310310
sudo=self._sudo,
311311
).run()
312+
Tool(
313+
f"ethtool --set-channels {self._settings.input.inf} combined $(nproc)",
314+
executor=self._executor,
315+
sudo=self._sudo,
316+
).run()
317+
Tool(
318+
f"ethtool -X {self._settings.input.inf} hfunc toeplitz hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a equal {self._rss_queues_pcap}",
319+
executor=self._executor,
320+
sudo=self._sudo,
321+
).run()
312322
Tool(
313323
f"ethtool --set-channels {self._settings.input.inf} combined {self._rss_queues_pcap}",
314324
executor=self._executor,
315325
sudo=self._sudo,
316326
).run()
327+
Tool(
328+
f"ethtool -N {self._settings.input.inf} rx-flow-hash tcp4 sd",
329+
executor=self._executor,
330+
sudo=self._sudo,
331+
).run()
332+
Tool(
333+
f"ethtool -N {self._settings.input.inf} rx-flow-hash udp4 sd",
334+
executor=self._executor,
335+
sudo=self._sudo,
336+
).run()
337+
Tool(
338+
f"ethtool -N {self._settings.input.inf} rx-flow-hash tcp6 sd",
339+
executor=self._executor,
340+
sudo=self._sudo,
341+
).run()
342+
Tool(
343+
f"ethtool -N {self._settings.input.inf} rx-flow-hash udp6 sd",
344+
executor=self._executor,
345+
sudo=self._sudo,
346+
).run()
317347

318348
def start(self, start_stats: bool = True, stop_running: bool = True):
319349
"""
@@ -534,11 +564,46 @@ def __init__(
534564
self._yaf_instances.append(instance)
535565

536566
def _set_rss_queues(self, interface_name):
567+
Tool(
568+
f"ethtool --set-channels {interface_name} combined $(nproc)",
569+
executor=self._executor,
570+
sudo=self._sudo,
571+
).run()
572+
Tool(
573+
f"ethtool -X {interface_name} hfunc toeplitz hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a equal {self._rss_queues}",
574+
executor=self._executor,
575+
sudo=self._sudo,
576+
).run()
537577
Tool(
538578
f"ethtool --set-channels {interface_name} combined {self._rss_queues}",
539579
executor=self._executor,
540580
sudo=self._sudo,
541581
).run()
582+
Tool(
583+
f"ethtool -N {interface_name} rx-flow-hash tcp4 sd",
584+
executor=self._executor,
585+
sudo=self._sudo,
586+
).run()
587+
Tool(
588+
f"ethtool -N {interface_name} rx-flow-hash udp4 sd",
589+
executor=self._executor,
590+
sudo=self._sudo,
591+
).run()
592+
Tool(
593+
f"ethtool -N {interface_name} rx-flow-hash tcp6 sd",
594+
executor=self._executor,
595+
sudo=self._sudo,
596+
).run()
597+
Tool(
598+
f"ethtool -N {interface_name} rx-flow-hash udp6 sd",
599+
executor=self._executor,
600+
sudo=self._sudo,
601+
).run()
602+
Tool(
603+
f"ethtool -K {interface_name} gro off gso off tso off",
604+
executor=self._executor,
605+
sudo=self._sudo,
606+
).run()
542607

543608
def _before_start(self):
544609
for ifc in self._interfaces:
@@ -551,11 +616,6 @@ def _before_start(self):
551616
executor=self._executor,
552617
sudo=self._sudo,
553618
).run()
554-
Tool(
555-
f"ethtool -K {name} gro off gso off tso off",
556-
executor=self._executor,
557-
sudo=self._sudo,
558-
).run()
559619
if ifc.startswith("zc:"):
560620
self._switch_to_zc(name)
561621
self._set_rss_queues(name)

0 commit comments

Comments
 (0)