diff options
author | Sverker Eriksson <[email protected]> | 2013-08-23 16:21:17 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2013-08-23 16:21:17 +0200 |
commit | f47f8e3813a6dda5db94c9704c74e8a809dd2313 (patch) | |
tree | 034eb5300b4e3e37fb7d486228ec6d767d56cf4f | |
parent | 8cece79b77952c991e62ae595bcf71cde016a052 (diff) | |
download | otp-f47f8e3813a6dda5db94c9704c74e8a809dd2313.tar.gz otp-f47f8e3813a6dda5db94c9704c74e8a809dd2313.tar.bz2 otp-f47f8e3813a6dda5db94c9704c74e8a809dd2313.zip |
erts: Speed up valgrind with asynch threads
by only letting it run on one core. Valgrind only let one thread
at a time execute anyway.
-rw-r--r-- | erts/etc/unix/cerl.src | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/erts/etc/unix/cerl.src b/erts/etc/unix/cerl.src index 0d45917e4b..41baa323ed 100644 --- a/erts/etc/unix/cerl.src +++ b/erts/etc/unix/cerl.src @@ -283,6 +283,19 @@ if [ "x$GDB" = "x" ]; then else valgrind_misc_flags="$VALGRIND_MISC_FLAGS" fi + if which taskset > /dev/null && test -e /proc/cpuinfo; then + # We only let valgrind utilize one core with "taskset 1" as it can be very slow + # on multiple cores (especially with async threads). Valgrind only run one pthread + # at a time anyway so there is no point letting it utilize more than one core. + # Use $sched_arg to force all schedulers online to emulate multicore. + taskset1="taskset 1" + ncpu=`cat /proc/cpuinfo | grep -w processor | wc -l` + sched_arg="-S$ncpu:$ncpu" + else + taskset1= + sched_arg= + fi + beam_args=`$EXEC -emu_args_exit ${1+"$@"}` # Time for some argument passing voodoo: @@ -293,7 +306,7 @@ if [ "x$GDB" = "x" ]; then ' set -- $beam_args IFS="$SAVE_IFS" - exec valgrind $valgrind_xml $valgrind_log $valgrind_misc_flags $BINDIR/$EMU_NAME $emu_xargs "$@" -pz $PRELOADED + exec $taskset1 valgrind $valgrind_xml $valgrind_log $valgrind_misc_flags $BINDIR/$EMU_NAME $sched_arg $emu_xargs "$@" -pz $PRELOADED else exec $EXEC $eeargs $xargs ${1+"$@"} fi |