cpuset and affinity implementation

Abdullah Ibn Hamad Al-Marri wearabnet at yahoo.ca
Mon Feb 25 15:56:26 UTC 2008


Jeff this is great!

Would it hit RELENG_7 in the future?
 
Regards, 
-Abdullah Ibn Hamad Al-Marri
Arab Portal


----- Original Message ----
From: Jeff Roberson <jroberson at chesapeake.net>
To: current at freebsd.org
Sent: Monday, February 25, 2008 6:38:37 AM
Subject: cpuset and affinity implementation


Hello,

I 
have 
implemented 
a 
new 
api 
similar 
to 
processors 
sets 
on 
solaris.  
This 
allows 
you 
to 
assign 
processes 
to 
sets 
of 
cpus 
and 
dynamically 
change 
those 
sets.  
This 
is 
useful 
for 
provisioning 
purposes 
to 
add 
and 
remove 
cpu 
resources 
for 
a 
particular 
process 
or 
group 
of 
processes.  
This 
new 
facility 
also 
supports 
binding 
secific 
threads 
to 
specific 
cpus 
which 
some 
applications 
may 
want 
to 
do.  
At 
some 
point 
in 
the 
future 
this 
will 
be 
integrated 
with 
jail 
so 
you 
can 
restrict 
the 
cpus 
any 
jail 
is 
allowed 
to 
use.

This 
api 
should 
not 
be 
considered 
final 
and 
the 
'cpuset' 
tool 
is 
quite 
rough.  
This 
also 
only 
works 
with 
ULE 
and 
is 
unfortunately 
intertwined 
with 
a 
big 
ULE 
patch 
I've 
been 
working 
on.  
The 
set 
management 
code 
is 
generic 
but 
4BSD 
doesn't 
contain 
the 
hooks 
to 
actually 
constrain 
threads.

Please 
see:
http://people.freebsd.org/~jeff/cpuset.diff

here's 
a 
couple 
of 
neat 
things 
to 
do 
with 
cpuset:

cpuset 
-l 
0-4 
/bin/sh

This 
creates 
a 
new 
group 
with 
a 
list 
(-l) 
of 
cpus 
0-4 
inclusive 
and 
runs 
sh 
in 
it.

cpuset 
-g 
-p 
<sh 
pid>

This 
will 
get 
(-g) 
the 
mask 
of 
cpus 
pid 
(-p) 
is 
allowed 
to 
run 
on.

cpuset 
-l 
0,2 
-p 
<sh 
pid>

This 
will 
restrict 
sh 
to 
running 
on 
cpus 
0, 
2 
while 
its 
group 
is 
still 
allowed 
0-4.

cpuset 
-l 
0,2 
-c 
-p 
<sh 
pid>

This 
will 
modify 
the 
cpuset 
(-c) 
that 
the 
sh 
belongs 
to.

cpuset 
-l 
0-3 
-s 
1

This 
will 
modify 
the 
set 
(-s) 
that 
all 
threads 
are 
in 
by 
default 
to 
contain 
the 
first 
4 
cpus 
leaving 
the 
rest 
idled.

cpuset 
-g 
-i 
-p 
<sh 
pid>

This 
will 
print 
the 
id 
of 
the 
set 
sh 
is 
in.

cpuset 
-s 
<set 
id> 
-p 
<pid>

This 
will 
move 
pid 
into 
the 
specified 
set 
so 
it 
may 
be 
managed 
with 
other 
pids 
in 
that 
set.

Feedback 
is 
appreciated.

Thanks,
Jeff
_______________________________________________
freebsd-current at freebsd.org 
mailing 
list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To 
unsubscribe, 
send 
any 
mail 
to 
"freebsd-current-unsubscribe at freebsd.org"







      ____________________________________________________________________________________
Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.  http://tools.search.yahoo.com/newsearch/category.php?category=shopping


More information about the freebsd-current mailing list