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
 


Reply via email to