
[ -e /proc/sched_debug ]    || echo "not a CFS kernel? continuing anyway."
[ "`id | grep root`" = "" ] && { echo "please run this as root!"; exit -1; }

FILE=cfs-debug-info-`date +%Y.%m.%d-%H.%M.%S`

echo "sched info dump (of tasks, modules, hw, dmesg, config, fs):"

echo "-- /proc/sched_debug: --"      >  $FILE
cat /proc/sched_debug                >> $FILE 2>/dev/null
echo "-- /proc/*/task/*/sched: --"   >> $FILE
cat /proc/*/task/*/sched             >> $FILE 2>/dev/null
echo "-- /proc/sys/kernel/sched: --" >> $FILE
for N in /proc/sys/kernel/sched*; do
  echo $N:                           >> $FILE 2>/dev/null
  cat $N                             >> $FILE 2>/dev/null
done
echo "-- modules: --"                >> $FILE
/sbin/lsmod                          >> $FILE 2>/dev/null
echo "-- hw: --"                     >> $FILE
/sbin/lspci -vvv                     >> $FILE 2>/dev/null
echo "-- interrupts: --"             >> $FILE
cat /proc/interrupts                 >> $FILE 2>/dev/null
echo "-- cpuinfo: --"                >> $FILE
cat /proc/cpuinfo                    >> $FILE 2>/dev/null
echo "-- cpufreq: --"                >> $FILE
cat /sys/devices/system/cpu/cpu*/cpufreq/* \
                                     >> $FILE 2>/dev/null
echo "-- meminfo: --"                >> $FILE
cat /proc/meminfo                    >> $FILE 2>/dev/null
echo "-- buddyinfo: --"              >> $FILE
cat /proc/buddyinfo                  >> $FILE 2>/dev/null
echo "-- vmstat: --"                 >> $FILE
cat /proc/vmstat                     >> $FILE 2>/dev/null
echo "-- zoneinfo: --"               >> $FILE
cat /proc/zoneinfo                   >> $FILE 2>/dev/null
echo "-- pagetypeinfo: --"           >> $FILE
cat /proc/pagetypeinfo               >> $FILE 2>/dev/null
echo "-- slabinfo: --"               >> $FILE
cat /proc/slabinfo                   >> $FILE 2>/dev/null
echo "-- dmesg: --"                  >> $FILE
dmesg -s 10000000                    >> $FILE 2>/dev/null
echo "-- /proc/timer_list: --"       >> $FILE
cat /proc/timer_list                 >> $FILE 2>/dev/null
echo "-- /proc/timer_info: --"       >> $FILE
cat /proc/timer_info                 >> $FILE 2>/dev/null
echo "-- /proc/config.gz: --"        >> $FILE
zcat /proc/config.gz                 >> $FILE 2>/dev/null
echo "-- current kernel config: --"  >> $FILE
KREL=`uname -r | sed 's/smp$//g'`
( cat "`rpm -ql kernel-$KREL 2>/dev/null | grep /boot/config`"
  cat "`rpm -ql kernel-smp-$KREL 2>/dev/null | grep /boot/config`"
  cat "`dpkg -L linux-image-$KREL 2>/dev/null | grep /boot/config`"
  cat /boot/config-$KREL 2>/dev/null
) >> $FILE 2>/dev/null
echo "-- filesystems: --"            >> $FILE
mount                                >> $FILE 2>/dev/null
echo "-- uptime: --"                 >> $FILE
uptime                               >> $FILE 2>/dev/null
echo "-- uname: --"                  >> $FILE
uname -a                             >> $FILE 2>/dev/null
echo "-- /sys/devices/system: --"    >> $FILE
for N in `find /sys/devices/system/ -type f`; do
  echo $N:			     >> $FILE
  cat $N			     >> $FILE 2>/dev/null
done
echo "gathering statistics for 15 seconds ..."
echo "-- top: --"                    >> $FILE
top -c -b -d 1 -n 5                  >> $FILE 2>/dev/null
echo "-- vmstat: --"                 >> $FILE
vmstat -n 1 5                        >> $FILE 2>/dev/null
for ((i=0; i<5; i++)); do
 echo "-- sched_debug #$i: --"       >> $FILE
 date                                >> $FILE
 cat /proc/sched_debug               >> $FILE 2>/dev/null
 sleep 1
done

ls -l $FILE

