mtcp/config/affinity-netmap.py

39 lines
883 B
Python
Executable File

#!/usr/bin/env python
#### -NOTE- This script only works for ixgbe driver ####
import os
import sys
import subprocess
def execute(cmd):
try:
proc = subprocess.Popen(cmd, shell = True, stdout = subprocess.PIPE)
return proc.communicate()[0]
except:
pass
return None
if os.getuid() != 0:
print 'You must be root!'
sys.exit(1)
num_cpus = len(execute('cat /proc/cpuinfo | grep processor').strip().split('\n'))
if len(sys.argv) < 2:
print 'usage: %s <interface name>' % sys.argv[0]
sys.exit(1)
ifname = sys.argv[1]
intrmap = execute('cat /proc/interrupts | grep %s-TxRx-' % ifname).strip().split('\n')
for intr in intrmap:
irq = int(intr.split()[0][:-1])
name = intr.split()[-1]
queue = int(name[name.rfind('-') + 1:])
cpu = queue
print 'echo %x > /proc/irq/%d/smp_affinity' % (1 << cpu, irq)
execute('echo %x > /proc/irq/%d/smp_affinity' % (1 << cpu, irq))