#!/usr/bin/env bash # KNELPerf iotop snapshot — periodic batch samples of active per-process I/O. # Complements sar (system-wide device stats) with the WHO behind the I/O. # Env (or /etc/knelperf/perfsnap.conf): # KNELPERF_IOTOP_LOGDIR default /var/log/knelperf-iotop # Output: daily file iotop-YYYYMMDD.log; per tick one header line then # 3 batch iterations x 2s of processes with outstanding I/O (-botqq -k). # Docs: https://community.turnsys.com/t/328 set -u CONF=/etc/knelperf/perfsnap.conf [ -r "$CONF" ] && . "$CONF" LOGDIR=${KNELPERF_IOTOP_LOGDIR:-/var/log/knelperf-iotop} mkdir -p "$LOGDIR" F="$LOGDIR/iotop-$(date +%Y%m%d).log" { echo "### $(date -Iseconds)" iotop -botqq -k -n 3 -d 2 2>/dev/null } >> "$F" # retention: 14 days; rotate the live file at 25MB find "$LOGDIR" -name 'iotop-*.log*' -mtime +14 -delete 2>/dev/null [ "$(wc -c <"$F" 2>/dev/null || echo 0)" -gt 26214400 ] && mv "$F" "$F.1" exit 0