Advertisement
aleixrocks

Untitled

Jan 11th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.44 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. LTTNGPATH=/apps/lttng/tools/2.6.0/bin
  4.  
  5.  
  6. # With Montblanc's lttng 2.6, events must be enabled one by one instead of
  7. # using a coma separated list as explained in the lttng manual.
  8. lttng_enable_tp() {
  9.     SESSION=$1
  10.     CHANNEL=$2
  11.     EVENT=$3
  12.  
  13.     for E in $EVENT; do
  14.         lttng enable-event \
  15.             --kernel --tracepoint \
  16.             "$E" \
  17.             --channel $CHANNEL \
  18.             --session=$SESSION
  19.     done
  20. }
  21.  
  22.  
  23. lttng_enable_syscalls() {
  24.     SESSION=$1
  25.     CHANNEL=$2
  26.  
  27.     # Enable all system calls
  28.     lttng enable-event \
  29.         --kernel --syscall \
  30.         --all \
  31.         --channel $CHANNEL \
  32.         --session=$SESSION
  33. }
  34.  
  35. lttng_enable_irqs() {
  36.     SESSION=$1
  37.     CHANNEL=$2
  38.     # Enable all interrupts
  39.     lttng_enable_tp $SESSION $CHANNEL '
  40.         softirq_entry
  41.         softirq_exit
  42.         softirq_raise
  43.         irq_handler_entry
  44.         irq_handler_exit'
  45. }
  46.  
  47. lttng_enable_network() {
  48.     SESSION=$1
  49.     CHANNEL=$2
  50.  
  51.     # Enable some network events
  52.     lttng_enable_tp $SESSION $CHANNEL '
  53.         netif_receive_skb
  54.         netif_rx
  55.         net_dev_xmit
  56.         net_dev_queue'
  57. }
  58.  
  59. lttng_enable_schedule() {
  60.     SESSION=$1
  61.     CHANNEL=$2
  62.  
  63.     # Enable some relevant schedule events
  64.     lttng_enable_tp $SESSION $CHANNEL '
  65.         sched_switch
  66.         sched_wakeup
  67.         sched_process_fork
  68.         sched_process_exit'
  69. }
  70.  
  71.  
  72. lttng_enable_fs() {
  73.     SESSION=$1
  74.     CHANNEL=$2
  75.  
  76.     # Enable diks events
  77.     lttng_enable_tp $SESSION $CHANNEL '
  78.         ext4_ind_map_blocks_enter
  79.         ext4_ind_map_blocks_exit
  80.         ext4_ext_map_blocks_enter
  81.         ext4_ext_map_blocks_exit
  82.         ext4_truncate_enter
  83.         ext4_truncate_exit
  84.         ext4_unlink_enter
  85.         ext4_unlink_exit
  86.         ext4_fallocate_enter
  87.         ext4_fallocate_exit
  88.         ext4_direct_IO_enter
  89.         ext4_direct_IO_exit
  90.         ext4_sync_file_enter
  91.         ext4_sync_file_exit'
  92. }
  93.  
  94. lttng_enable_timers() {
  95.     SESSION=$1
  96.     CHANNEL=$2
  97.     # Enable timer events
  98.     lttng_enable_tp $SESSION $CHANNEL '
  99.         hrtimer_expire_entry
  100.         hrtimer_expire_exit
  101.         timer_expire_entry
  102.         timer_expire_exit'
  103. }
  104.  
  105. do_timing() {
  106.     DIR=$1/ps-out
  107.     while [ 1 ]; do
  108.         ps ax -o pcpu,comm | grep "[l]ttng-[sessiond,consumerd]" >> $DIR
  109.         sleep 0.25
  110.     done
  111.  
  112. }
  113.  
  114. do_lttng() {
  115.     module load lttng
  116.     export LTTNG_HOME=$(mktemp -d)
  117.  
  118.     #GRANK=$OMPI_COMM_WORLD_RANK
  119.     #NODE=$GRANK
  120.     NODE=$( hostid )
  121.     NODE=$((16#${NODE}))
  122.  
  123.     mkdir -p ./lttng/$NODE
  124.  
  125.     do_timing ./lttng/$NODE &
  126.     PID=$!
  127.  
  128.     sudo $LTTNGPATH/lttng-sessiond --daemonize
  129.  
  130.     SESSION="session_$NODE"
  131.     CHANNEL="big-krn-channel"
  132.     lttng create --output ./lttng/$NODE $SESSION
  133.  
  134.     lttng enable-channel \
  135.         --kernel \
  136.         --num-subbuf=2 --subbuf-size=64M $CHANNEL \
  137.         --switch-timer=0 \
  138.         --session=$SESSION
  139.  
  140.     #lttng_enable_syscalls $SESSION $CHANNEL
  141.     lttng_enable_schedule $SESSION $CHANNEL
  142.     lttng_enable_irqs     $SESSION $CHANNEL
  143.     #lttng_enable_timers   $SESSION $CHANNEL
  144.     #lttng_enable_network  $SESSION $CHANNEL
  145.     #lttng_enable_fs       $SESSION $CHANNEL
  146.  
  147.     #kvm events, should I enable them?
  148.     #   kvm_userspace_exit
  149.     #   kvm_exit
  150.  
  151.     #lttng list $SESSION
  152.  
  153.     lttng start
  154.  
  155.     $*
  156.  
  157.     lttng stop
  158.     lttng destroy
  159.  
  160.     kill $PID
  161.  
  162.     rm -rf $LTTNG_HOME
  163. }
  164.  
  165. do_exec() {
  166.     sleep 3
  167.     $*
  168. }
  169.  
  170. # get_local_rank
  171. #
  172. # Get local node job rank. If the job was not launched using mpirun or
  173. # sbatch, it is assumed an OpenMP application on a single node and will
  174. # return 0.
  175. get_local_rank() {
  176.     LRANK=0
  177.     if [ ! -z $OMPI_COMM_WORLD_LOCAL_RANK ]; then
  178.         LRANK=$OMPI_COMM_WORLD_LOCAL_RANK
  179.     elif [ ! -z $SLURM_LOCALID ]; then
  180.         LRANK=$SLURM_LOCALID
  181.     fi
  182.  
  183.     echo $LRANK
  184. }
  185.  
  186.  
  187.  
  188. LRANK=$( get_local_rank )
  189. echo "LRANK: $LRANK"
  190.  
  191. if [ "$LRANK" == "0" ]; then
  192.     do_lttng $*
  193. else
  194.     do_exec $*
  195. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement