summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2008-09-15 11:26:44 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2008-09-15 11:26:44 -0300
commitb39fb25b5bf407513c3dadf0ce0a2401a1312d3e (patch)
treeff305812650454a6dc7d1e975aa94569c1811b13
parent8e09a4fed166da73fc00dc3e751292dd747fedf7 (diff)
downloadtuna-b39fb25b5bf407513c3dadf0ce0a2401a1312d3e.tar.gz
tuna: turn include_cpu into include_cpus
Taking a list of cpus, as isolate_cpus. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rwxr-xr-xtuna-cmd.py3
-rwxr-xr-xtuna/tuna.py14
-rw-r--r--tuna/tuna_gui.py2
3 files changed, 9 insertions, 10 deletions
diff --git a/tuna-cmd.py b/tuna-cmd.py
index d5dea91..fd805c4 100755
--- a/tuna-cmd.py
+++ b/tuna-cmd.py
@@ -121,8 +121,7 @@ def main():
if not cpus:
print "tuna: --include requires a cpu list!"
sys.exit(2)
- for cpu in cpus:
- tuna.include_cpu(cpu, get_nr_cpus())
+ tuna.include_cpus(cpus, get_nr_cpus())
elif o in ("-p", "--priority"):
tuna.threads_set_priority(threads, a, affect_children)
elif o in ("-m", "--move"):
diff --git a/tuna/tuna.py b/tuna/tuna.py
index c021873..6de6ec8 100755
--- a/tuna/tuna.py
+++ b/tuna/tuna.py
@@ -232,7 +232,7 @@ def isolate_cpus(cpus, nr_cpus):
return (previous_pid_affinities, previous_irq_affinities)
-def include_cpu(cpu, nr_cpus):
+def include_cpus(cpus, nr_cpus):
ps = procfs.pidstats()
ps.reload_threads()
previous_pid_affinities = {}
@@ -240,9 +240,9 @@ def include_cpu(cpu, nr_cpus):
if iskthread(pid):
continue
affinity = schedutils.get_affinity(pid)
- if cpu not in affinity:
+ if set(affinity).intersection(set(cpus)) != set(cpus):
previous_pid_affinities[pid] = copy.copy(affinity)
- affinity.append(cpu)
+ affinity = list(set(affinity + cpus))
schedutils.set_affinity(pid, affinity)
if not ps[pid].has_key("threads"):
@@ -252,9 +252,9 @@ def include_cpu(cpu, nr_cpus):
if iskthread(tid):
continue
affinity = schedutils.get_affinity(tid)
- if cpu not in affinity:
+ if set(affinity).intersection(set(cpus)) != set(cpus):
previous_pid_affinities[tid] = copy.copy(affinity)
- affinity.append(cpu)
+ affinity = list(set(affinity + cpus))
schedutils.set_affinity(tid, affinity)
del ps
@@ -267,9 +267,9 @@ def include_cpu(cpu, nr_cpus):
if not irqs[irq].has_key("affinity"):
continue
affinity = irqs[irq]["affinity"]
- if cpu not in affinity:
+ if set(affinity).intersection(set(cpus)) != set(cpus):
previous_irq_affinities[irq] = copy.copy(affinity)
- affinity.append(cpu)
+ affinity = list(set(affinity + cpus))
set_irq_affinity(int(irq),
procfs.hexbitmask(affinity, nr_cpus))
diff --git a/tuna/tuna_gui.py b/tuna/tuna_gui.py
index 7aba699..c309f6a 100644
--- a/tuna/tuna_gui.py
+++ b/tuna/tuna_gui.py
@@ -326,7 +326,7 @@ class cpuview:
def include_cpu(self, cpu):
self.previous_pid_affinities, \
- self.previous_irq_affinities = tuna.include_cpu(cpu, self.cpus.nr_cpus)
+ self.previous_irq_affinities = tuna.include_cpus([cpu,], self.cpus.nr_cpus)
if self.previous_pid_affinities:
self.procview.refresh()