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