Author: jbellis Date: Sat Aug 20 02:17:30 2011 New Revision: 1159834 URL: http://svn.apache.org/viewvc?rev=1159834&view=rev Log: add numactl to java invocation, if available patch by Peter Schuller; reviewed by Paul Cannon for CASSANDRA-2594
Modified: cassandra/trunk/bin/cassandra Modified: cassandra/trunk/bin/cassandra URL: http://svn.apache.org/viewvc/cassandra/trunk/bin/cassandra?rev=1159834&r1=1159833&r2=1159834&view=diff ============================================================================== --- cassandra/trunk/bin/cassandra (original) +++ cassandra/trunk/bin/cassandra Sat Aug 20 02:17:30 2011 @@ -89,6 +89,16 @@ else JAVA=java fi +# If numactl is available, use it. For Cassandra, the priority is to +# avoid disk I/O. Even for the purpose of CPU efficiency, we don't +# really have CPU<->data affinity anyway. +if which numactl >/dev/null 2>/dev/null +then + NUMACTL="numactl --interleave=all" +else + NUMACTL="" +fi + if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2 exit 1 @@ -122,10 +132,10 @@ launch_service() # to close stdout/stderr, but it's up to us not to background. if [ "x$foreground" != "x" ]; then cassandra_parms="$cassandra_parms -Dcassandra-foreground=yes" - exec "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class" + exec $NUMACTL "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class" # Startup CassandraDaemon, background it, and write the pid. else - exec "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class" <&- & + exec $NUMACTL "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class" <&- & [ ! -z "$pidpath" ] && printf "%d" $! > "$pidpath" fi