Handling the case when the number of TX queues per interface are different

This commit is contained in:
jaber-the-great 2023-08-03 18:46:30 -07:00
parent 1659aef41d
commit b2170c1526

View File

@ -90,34 +90,34 @@ def tearDown(interfaceA, interfaceB):
clear_ip_mappings() # Use the bus clear_ip_mappings() # Use the bus
clearPriorSettings(interfaceA, interfaceB) clearPriorSettings(interfaceA, interfaceB)
def findQueuesAvailable(): def findQueuesAvailable(interfaceName):
# Find queues and CPU cores available. Use min between those two as queuesAvailable # Find queues and CPU cores available. Use min between those two as queuesAvailable
if enableActualShellCommands: if enableActualShellCommands:
if queuesAvailableOverride == 0: if queuesAvailableOverride == 0:
queuesAvailable = 0 queuesAvailable = 0
path = '/sys/class/net/' + interfaceA + '/queues/' path = '/sys/class/net/' + interfaceName + '/queues/'
directory_contents = os.listdir(path) directory_contents = os.listdir(path)
for item in directory_contents: for item in directory_contents:
if "tx-" in str(item): if "tx-" in str(item):
queuesAvailable += 1 queuesAvailable += 1
print("NIC queues:\t\t\t" + str(queuesAvailable)) print(f"Interface {interfaceName} NIC queues:\t\t\t" + str(queuesAvailable))
else: else:
queuesAvailable = queuesAvailableOverride queuesAvailable = queuesAvailableOverride
print("NIC queues (Override):\t\t\t" + str(queuesAvailable)) print(f"Interface {interfaceName} NIC queues (Override):\t\t\t" + str(queuesAvailable))
cpuCount = multiprocessing.cpu_count() cpuCount = multiprocessing.cpu_count()
print("CPU cores:\t\t\t" + str(cpuCount)) print("CPU cores:\t\t\t" + str(cpuCount))
if queuesAvailable < 2: if queuesAvailable < 2:
raise SystemError('Only 1 NIC rx/tx queue available. You will need to use a NIC with 2 or more rx/tx queues available.') raise SystemError(f'Only 1 NIC rx/tx queue available for interface {interfaceName}. You will need to use a NIC with 2 or more rx/tx queues available.')
if queuesAvailable < 2: if queuesAvailable < 2:
raise SystemError('Only 1 CPU core available. You will need to use a CPU with 2 or more CPU cores.') raise SystemError('Only 1 CPU core available. You will need to use a CPU with 2 or more CPU cores.')
queuesAvailable = min(queuesAvailable,cpuCount) queuesAvailable = min(queuesAvailable,cpuCount)
print("queuesAvailable set to:\t" + str(queuesAvailable)) print(f"queuesAvailable for interface {interfaceName} set to:\t" + str(queuesAvailable))
else: else:
print("As enableActualShellCommands is False, CPU core / queue count has been set to 16") print("As enableActualShellCommands is False, CPU core / queue count has been set to 16")
logging.info("NIC queues:\t\t\t" + str(16)) logging.info(f"Interface {interfaceName} NIC queues:\t\t\t" + str(16))
cpuCount = multiprocessing.cpu_count() cpuCount = multiprocessing.cpu_count()
logging.info("CPU cores:\t\t\t" + str(16)) logging.info("CPU cores:\t\t\t" + str(16))
logging.info("queuesAvailable set to:\t" + str(16)) logging.info(f"queuesAvailable for interface {interfaceName} set to:\t" + str(16))
queuesAvailable = 16 queuesAvailable = 16
return queuesAvailable return queuesAvailable
@ -454,7 +454,10 @@ def refreshShapers():
# Pull rx/tx queues / CPU cores available # Pull rx/tx queues / CPU cores available
queuesAvailable = findQueuesAvailable() # Handling the case when the number of queues for interfaces are different
InterfaceAQueuesAvailable = findQueuesAvailable(interfaceA)
InterfaceBQueuesAvailable = findQueuesAvailable(interfaceB)
queuesAvailable = min(InterfaceAQueuesAvailable, InterfaceBQueuesAvailable)
stickOffset = 0 stickOffset = 0
if OnAStick: if OnAStick:
print("On-a-stick override dividing queues") print("On-a-stick override dividing queues")