mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2025-02-25 18:55:32 -06:00
Handling the case when the number of TX queues per interface are different
This commit is contained in:
parent
1659aef41d
commit
b2170c1526
@ -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")
|
||||||
|
Loading…
Reference in New Issue
Block a user