Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- monitor_reflector_responses_fping()
- {
- declare -A rtt_baselines_us
- # Read in baselines if they exist, else just set them to 1s (rapidly converges downwards on new RTTs)
- for (( reflector=0; reflector<$no_reflectors; reflector++ ))
- do
- if [[ -f /var/run/cake-autorate/reflector_${reflectors[$reflector]//./-}_baseline_us ]]; then
- read rtt_baselines_us[${reflectors[$reflector]}] < /var/run/cake-autorate/reflector_${reflectors[$reflector]//./-}_baseline_us
- else
- rtt_baselines_us[${reflectors[$reflector]}]=50000
- fi
- done
- # For each reflector initialize reflectory history for SMA
- for ((reflector=0; reflector<$no_reflectors; reflector++))
- do
- declare -n reflector_rtts_us="reflector_${reflectors[$reflector]//./_}_rtts_us"
- declare -n reflector_rtts_idx="reflector_${reflectors[$reflector]//./_}_rtts_idx"
- reflector_rtts_idx=0
- for ((i=0; i<$rtts_sma_period; i++)) do reflector_rtts_us[i]=50000; done
- done
- while read timestamp reflector _ seq_rtt
- do
- t_start_us=${EPOCHREALTIME/./}
- [[ $seq_rtt =~ \[([0-9]+)\].*[[:space:]]([0-9]+)\.?([0-9]+)?[[:space:]]ms ]] || continue
- seq=${BASH_REMATCH[1]}
- rtt_us=${BASH_REMATCH[3]}000
- rtt_us=$((${BASH_REMATCH[2]}000+10#${rtt_us:0:3}))
- rtt_delta_us=$(( $rtt_us-${rtt_baselines_us[$reflector]} ))
- declare -n reflector_rtts_us="reflector_${reflector//./_}_rtts_us"
- declare -n reflector_rtts_idx="reflector_${reflector//./_}_rtts_idx"
- reflector_rtts_us[$reflector_rtts_idx]=$rtt_us
- echo "rtt_baselines_us[$reflector]=${rtt_baselines_us[$reflector]}+($rtt_us-${reflector_rtts_us[((($reflector_rtts_idx+1)%$rtts_sma_period))]})/$rtts_sma_period"
- rtt_baselines_us[$reflector]=$((${rtt_baselines_us[$reflector]}+($rtt_us-${reflector_rtts_us[((($reflector_rtts_idx+1)%$rtts_sma_period))]})/$rtts_sma_period))
- ((reflector_rtts_idx=(reflector_rtts_idx+1)%$rtts_sma_period))
- dl_owd_baseline_us=$((${rtt_baselines_us[$reflector]}/2))
- ul_owd_baseline_us=$dl_owd_baseline_us
- dl_owd_us=$(($rtt_us/2))
- ul_owd_us=$dl_owd_us
- dl_owd_delta_us=$(($rtt_delta_us/2))
- ul_owd_delta_us=$dl_owd_delta_us
- timestamp=${timestamp//[\[\]]}0
- printf '%s %s %s %s %s %s %s %s %s %s\n' "$timestamp" "$reflector" "$seq" "$dl_owd_baseline_us" "$dl_owd_us" "$dl_owd_delta_us" "$ul_owd_baseline_us" "$ul_owd_us" "$ul_owd_delta_us" > /var/run/cake-autorate/ping_fifo
- timestamp_us=${timestamp//[.]}
- printf '%s' "$timestamp_us" > /var/run/cake-autorate/reflector_${reflector//./-}_last_timestamp_us
- printf '%s' "$dl_owd_baseline_us" > /var/run/cake-autorate/reflector_${reflector//./-}_dl_owd_baseline_us
- printf '%s' "$ul_owd_baseline_us" > /var/run/cake-autorate/reflector_${reflector//./-}_ul_owd_baseline_us
- printf '%s' "$timestamp_us" > /var/run/cake-autorate/reflectors_last_timestamp_us
- done</var/run/cake-autorate/fping_fifo
- # Store baselines to files ready for next instance (e.g. after sleep)
- for (( reflector=0; reflector<$no_reflectors; reflector++))
- do
- printf '%s' ${rtt_baselines_us[${reflectors[$reflector]}]} > /var/run/cake-autorate/reflector_${reflectors[$reflector]//./-}_baseline_us
- done
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement