tcwg-tk1-cpucore: Make sure that docker has access to all CPU cores

It may happen that docker cpuset cgroup can get mounted before all
cores are online, so explicitly update cpuset.cpus cgroup files.

Also add variant of rc.local used on llvm-tk1-02 (LLVM performance
bot) for safe-keeping.

Change-Id: Ib287e15a39f8f8e1eaca8fba68748f65ec1d7c93
diff --git a/playbooks/roles/tcwg-tk1-cpucore/files/rc.local b/playbooks/roles/tcwg-tk1-cpucore/files/rc.local
index a55d5e8..b4749d7 100644
--- a/playbooks/roles/tcwg-tk1-cpucore/files/rc.local
+++ b/playbooks/roles/tcwg-tk1-cpucore/files/rc.local
@@ -11,18 +11,21 @@
 #
 # By default this script does nothing.
 
-trap "touch /tmp/rc_local_failed" EXIT
+rm -f /tmp/rc_local.log
+exec 1>/tmp/rc_local.log 2>&1
+set -x
 
-rm -f /tmp/rc_local_failed
-
+# Bring all CPUs online
 echo 0 > /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable
-for cpu in /sys/devices/system/cpu/cpu*; do
+for cpu in /sys/devices/system/cpu/cpu[0-3]; do
   if [ x"$(cat $cpu/online)" = x"0" ]; then
     echo 1 > $cpu/online
   fi
 done
 
-trap "" EXIT
+# Make sure docker containers are configured to use all CPUs.
+for cpuset in $(find /sys/fs/cgroup/cpuset/ -name cpuset.cpus); do
+    echo 0-3 > $cpuset
+done
 
 exit 0
-
diff --git a/playbooks/roles/tcwg-tk1-cpucore/files/rc.local_llvm-tk1-02 b/playbooks/roles/tcwg-tk1-cpucore/files/rc.local_llvm-tk1-02
new file mode 100644
index 0000000..5819171
--- /dev/null
+++ b/playbooks/roles/tcwg-tk1-cpucore/files/rc.local_llvm-tk1-02
@@ -0,0 +1,39 @@
+#!/bin/sh -e
+#
+# rc.local
+#
+# This script is executed at the end of each multiuser runlevel.
+# Make sure that the script will "exit 0" on success or any other
+# value on error.
+#
+# In order to enable or disable this script just change the execution
+# bits.
+#
+# By default this script does nothing.
+
+rm -f /tmp/rc_local.log
+exec 1>/tmp/rc_local.log 2>&1
+set -x
+
+# Bring all CPUs online
+echo 0 > /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable
+for cpu in /sys/devices/system/cpu/cpu[0-3]; do
+  if [ x"$(cat $cpu/online)" = x"0" ]; then
+    echo 1 > $cpu/online
+  fi
+done
+
+# Make sure docker containers are configured to use all CPUs.
+for cpuset in $(find /sys/fs/cgroup/cpuset/ -name cpuset.cpus); do
+    echo 0-3 > $cpuset
+done
+
+# We fix CPU frequency to 90% of the max.
+cpupower -c 0,1,2,3 frequency-set --governor performance --min 2116500 --max 2116500
+
+# Allow perf profiling
+sysctl kernel.kptr_restrict=0
+sysctl kernel.perf_event_mlock_kb=1024
+sysctl kernel.perf_event_paranoid=0
+
+exit 0