Skip to content

Commit 7fa737f

Browse files
Autotune softirq (#132)
* Moved common logic from autorps to auto_softirq_tune and inherit autorps/autoxps from it. * Fixed: hardcoded queue prefix in auto_softirq_tune led to broken autoxps.
1 parent d2149a1 commit 7fa737f

File tree

7 files changed

+30
-25
lines changed

7 files changed

+30
-25
lines changed

netutils_linux_tuning/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
"""
77
from netutils_linux_tuning.rx_buffers import RxBuffersTune
88
from netutils_linux_tuning.rss_ladder import RSSLadder
9-
from netutils_linux_tuning.autorps import AutoRPS
9+
from netutils_linux_tuning.auto_softirq_tune import AutoRPS, AutoXPS
1010

11-
__all__ = ['RxBuffersTune', 'AutoRPS', 'RSSLadder']
11+
__all__ = ['RxBuffersTune', 'AutoRPS', 'AutoXPS', 'RSSLadder']

netutils_linux_tuning/autorps.py netutils_linux_tuning/auto_softirq_tune.py

+24-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# coding=utf-8
2-
""" Receive Packet Steering tuning utility """
2+
""" Transmit Packet Steering tuning utility """
3+
34
import os
45

56
from six import print_
@@ -8,11 +9,11 @@
89
from netutils_linux_tuning.base_tune import CPUBasedTune
910

1011

11-
class AutoRPS(CPUBasedTune):
12+
class AutoSoftirqTune(CPUBasedTune):
1213
""" Allows to use multi-cpu packets processing for budget NICs """
1314
numa = None
14-
target = 'rps_cpus'
15-
queue_prefix = 'rx'
15+
target = None
16+
queue_prefix = None
1617

1718
def __init__(self):
1819
CPUBasedTune.__init__(self)
@@ -87,7 +88,7 @@ def detect_queues_real(self):
8788
:return: queue list to write cpu mask found by really reading /sys/
8889
"""
8990
queue_dir = "/sys/class/net/{0}/queues/".format(self.options.dev)
90-
return [queue for queue in os.listdir(queue_dir) if queue.startswith('rx')]
91+
return [queue for queue in os.listdir(queue_dir) if queue.startswith(self.queue_prefix)]
9192

9293
def lscpu(self):
9394
"""
@@ -98,3 +99,21 @@ def lscpu(self):
9899
lscpu_output_filename = os.path.join(self.options.test_dir, "lscpu_output")
99100
lscpu_output = open(lscpu_output_filename).read()
100101
return str(lscpu_output) if isinstance(lscpu_output, bytes) else lscpu_output
102+
103+
104+
class AutoXPS(AutoSoftirqTune):
105+
""" Allows to use multi-cpu packets processing for budget NICs """
106+
target = 'xps_cpus'
107+
queue_prefix = 'tx'
108+
109+
def __init__(self):
110+
AutoSoftirqTune.__init__(self)
111+
112+
113+
class AutoRPS(AutoSoftirqTune):
114+
""" Allows to use multi-cpu packets processing for budget NICs """
115+
target = 'rps_cpus'
116+
queue_prefix = 'rx'
117+
118+
def __init__(self):
119+
AutoSoftirqTune.__init__(self)

netutils_linux_tuning/autorps_test.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from unittest import TestCase
44

5-
from netutils_linux_tuning.autorps import AutoRPS
5+
from netutils_linux_tuning.auto_softirq_tune import AutoRPS
66

77

88
class AutoRPSTests(TestCase):

netutils_linux_tuning/autoxps.py

-14
This file was deleted.

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def read(*paths):
1414

1515
setuptools.setup(
1616
name='netutils-linux',
17-
version='2.2.4',
17+
version='2.2.5',
1818
author='Oleg Strizhechenko',
1919
author_email='[email protected]',
2020
license='MIT',

utils/autorps

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# coding=utf-8
44

5-
from netutils_linux_tuning.autorps import AutoRPS
5+
from netutils_linux_tuning.auto_softirq_tune import AutoRPS
66

77
if __name__ == '__main__':
88
AutoRPS()

utils/autoxps

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# coding=utf-8
44

5-
from netutils_linux_tuning.autoxps import AutoXPS
5+
from netutils_linux_tuning.auto_softirq_tune import AutoXPS
66

77
if __name__ == '__main__':
88
AutoXPS()

0 commit comments

Comments
 (0)