mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-11 13:40:07 +00:00
Calc collect loop run time based on start ts - curr ts so arbitrary --sleep-collect work. Do not sync on clock ticks.
This commit is contained in:
17
bin/pt-stalk
17
bin/pt-stalk
@@ -883,7 +883,11 @@ collect() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
log "Loop start: $(date +'TS %s.%N %F %T')"
|
log "Loop start: $(date +'TS %s.%N %F %T')"
|
||||||
for loopno in $(_seq $OPT_RUN_TIME); do
|
local start_time=$(date +'%s')
|
||||||
|
local curr_time=$start_time
|
||||||
|
while [ $((curr_time - start_time)) -lt $OPT_RUN_TIME ]; do
|
||||||
|
local ts="$(date +"TS %s.%N %F %T")"
|
||||||
|
|
||||||
disk_space $d > $d/$p-disk-space
|
disk_space $d > $d/$p-disk-space
|
||||||
check_disk_space \
|
check_disk_space \
|
||||||
$d/$p-disk-space \
|
$d/$p-disk-space \
|
||||||
@@ -891,10 +895,6 @@ collect() {
|
|||||||
"$OPT_DISK_PCT_FREE" \
|
"$OPT_DISK_PCT_FREE" \
|
||||||
|| break
|
|| break
|
||||||
|
|
||||||
sleep $(date +'%s.%N' | awk "{print $OPT_SLEEP_COLLECT - (\$1 % $OPT_SLEEP_COLLECT)}")
|
|
||||||
local ts="$(date +"TS %s.%N %F %T")"
|
|
||||||
|
|
||||||
|
|
||||||
if [ -d "/proc" ]; then
|
if [ -d "/proc" ]; then
|
||||||
if [ -f "/proc/diskstats" ]; then
|
if [ -f "/proc/diskstats" ]; then
|
||||||
(echo $ts; cat /proc/diskstats) >> "$d/$p-diskstats" &
|
(echo $ts; cat /proc/diskstats) >> "$d/$p-diskstats" &
|
||||||
@@ -915,19 +915,18 @@ collect() {
|
|||||||
(echo $ts; cat /proc/interrupts) >> "$d/$p-interrupts" &
|
(echo $ts; cat /proc/interrupts) >> "$d/$p-interrupts" &
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(echo $ts; df -k) >> "$d/$p-df" &
|
(echo $ts; df -k) >> "$d/$p-df" &
|
||||||
|
|
||||||
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
|
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
|
||||||
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
|
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
|
||||||
|
|
||||||
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
|
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
|
||||||
>> "$d/$p-processlist" &
|
>> "$d/$p-processlist" &
|
||||||
|
|
||||||
if [ "$have_lock_waits_table" ]; then
|
if [ "$have_lock_waits_table" ]; then
|
||||||
(echo $ts; lock_waits) >>"$d/$p-lock-waits" &
|
(echo $ts; lock_waits) >>"$d/$p-lock-waits" &
|
||||||
(echo $ts; transactions) >>"$d/$p-transactions" &
|
(echo $ts; transactions) >>"$d/$p-transactions" &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sleep $OPT_SLEEP_COLLECT
|
||||||
|
curr_time=$(date +'%s')
|
||||||
done
|
done
|
||||||
log "Loop end: $(date +'TS %s.%N %F %T')"
|
log "Loop end: $(date +'TS %s.%N %F %T')"
|
||||||
|
|
||||||
|
@@ -178,7 +178,11 @@ collect() {
|
|||||||
# This loop gathers data for the rest of the duration, and defines the time
|
# This loop gathers data for the rest of the duration, and defines the time
|
||||||
# of the whole job.
|
# of the whole job.
|
||||||
log "Loop start: $(date +'TS %s.%N %F %T')"
|
log "Loop start: $(date +'TS %s.%N %F %T')"
|
||||||
for loopno in $(_seq $OPT_RUN_TIME); do
|
local start_time=$(date +'%s')
|
||||||
|
local curr_time=$start_time
|
||||||
|
while [ $((curr_time - start_time)) -lt $OPT_RUN_TIME ]; do
|
||||||
|
local ts="$(date +"TS %s.%N %F %T")"
|
||||||
|
|
||||||
# We check the disk, but don't exit, because we need to stop jobs if we
|
# We check the disk, but don't exit, because we need to stop jobs if we
|
||||||
# need to exit.
|
# need to exit.
|
||||||
disk_space $d > $d/$p-disk-space
|
disk_space $d > $d/$p-disk-space
|
||||||
@@ -188,14 +192,9 @@ collect() {
|
|||||||
"$OPT_DISK_PCT_FREE" \
|
"$OPT_DISK_PCT_FREE" \
|
||||||
|| break
|
|| break
|
||||||
|
|
||||||
# Synchronize ourselves onto the clock tick, so the sleeps are 1-second
|
|
||||||
sleep $(date +'%s.%N' | awk "{print $OPT_SLEEP_COLLECT - (\$1 % $OPT_SLEEP_COLLECT)}")
|
|
||||||
local ts="$(date +"TS %s.%N %F %T")"
|
|
||||||
|
|
||||||
# #####################################################################
|
# #####################################################################
|
||||||
# Collect data for this cycle.
|
# Collect data for this cycle.
|
||||||
# #####################################################################
|
# #####################################################################
|
||||||
|
|
||||||
if [ -d "/proc" ]; then
|
if [ -d "/proc" ]; then
|
||||||
if [ -f "/proc/diskstats" ]; then
|
if [ -f "/proc/diskstats" ]; then
|
||||||
(echo $ts; cat /proc/diskstats) >> "$d/$p-diskstats" &
|
(echo $ts; cat /proc/diskstats) >> "$d/$p-diskstats" &
|
||||||
@@ -216,19 +215,19 @@ collect() {
|
|||||||
(echo $ts; cat /proc/interrupts) >> "$d/$p-interrupts" &
|
(echo $ts; cat /proc/interrupts) >> "$d/$p-interrupts" &
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(echo $ts; df -k) >> "$d/$p-df" &
|
(echo $ts; df -k) >> "$d/$p-df" &
|
||||||
|
|
||||||
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
|
(echo $ts; netstat -antp) >> "$d/$p-netstat" &
|
||||||
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
|
(echo $ts; netstat -s) >> "$d/$p-netstat_s" &
|
||||||
|
|
||||||
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
|
(echo $ts; $CMD_MYSQL $EXT_ARGV -e "SHOW FULL PROCESSLIST\G") \
|
||||||
>> "$d/$p-processlist" &
|
>> "$d/$p-processlist" &
|
||||||
|
|
||||||
if [ "$have_lock_waits_table" ]; then
|
if [ "$have_lock_waits_table" ]; then
|
||||||
(echo $ts; lock_waits) >>"$d/$p-lock-waits" &
|
(echo $ts; lock_waits) >>"$d/$p-lock-waits" &
|
||||||
(echo $ts; transactions) >>"$d/$p-transactions" &
|
(echo $ts; transactions) >>"$d/$p-transactions" &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Sleep between collect cycles.
|
||||||
|
sleep $OPT_SLEEP_COLLECT
|
||||||
|
curr_time=$(date +'%s')
|
||||||
done
|
done
|
||||||
log "Loop end: $(date +'TS %s.%N %F %T')"
|
log "Loop end: $(date +'TS %s.%N %F %T')"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user