From 95ece1f65d38a807ace68c18441693ac4137f126 Mon Sep 17 00:00:00 2001 From: wukong Date: Tue, 13 Jan 2026 21:30:27 -0800 Subject: enabled alternate t0 based prediction of t_up; added prediction of t0 baed on new t_meas value; merge t0 prediction with updated (measured) t0 rather than t0_prev; --- ckt0.awk | 58 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 25 deletions(-) (limited to 'ckt0.awk') diff --git a/ckt0.awk b/ckt0.awk index 68dd358..35ff5ca 100644 --- a/ckt0.awk +++ b/ckt0.awk @@ -167,7 +167,7 @@ BEGIN { "uname" | getline uname close("uname") - # check ARGV for previous estimates + ## check ARGV for previous estimates if (ARGC) { ARGV[1] ? t_prev[1] = ARGV[1] : t_prev[1] = 0.0 ARGV[2] ? t_prev[2] = ARGV[2] : t_prev[2] = ck_time(uname) @@ -177,12 +177,12 @@ BEGIN { ARGV[6] ? t0_prev[2] = ARGV[6] : split(ck_boottime(uname), t0_prev) } - # check systime, check uptime, check systime again + ## check systime, check uptime, check systime again t_meas[1] = ck_time(uname) split(ck_uptime(), t_up_meas) t_meas[2] = ck_time(uname) - # convert to [val, unc] vector + ## convert to [val, unc] vector t_meas[2] -= t_meas[1] t_meas[1] += 0.5*t_meas[2] if ( t_meas[2] == 0.0 ) { @@ -191,44 +191,52 @@ BEGIN { } t_meas_str = sigfig(t_meas[1], t_meas[2]) - # estimate dt + ## estimate dt dt[1] = t_meas[1] - t_prev[1] dt[2] = t_meas[2] + t_prev[2] - # predict uptime based on dt, t_up(new) = t_up(old) + dt + ## predict uptime based on dt, t_up(new) = t_up(old) + dt t_up_est[1] = t_up_prev[1] + dt[1] t_up_est[2] = t_up_prev[2] + dt[2] + + ## check for difference between dt and dt_up t_up_est[2] += sqrt((t_up_est[1] - t_up_prev[1] - dt[1])^2.0) t_up_prev[2] += sqrt((t_up_est[1] - t_up_prev[1] - dt[1])^2.0) - # alt. prediction based on t0 - # t_up_alt[1] = t_meas[1] - t0_prev[1] - # t_up_alt[2] = t_meas[2] + t0_prev[2] + ## alt. t_up prediction based on t0_prev + t_up_alt[1] = t_meas[1] - t0_prev[1] + t_up_alt[2] = t_meas[2] + t0_prev[2] + + ## dt_up_alt + dt_up_alt[1] = t_up_alt[1] - t_up_prev[1] + dt_up_alt[2] = t_up_alt[2] + t_up_prev[2] - # dt_up_alt - # dt_up_alt[1] = t_up_alt[1] - (t_prev[1] - t0_prev[1]) - # dt_up_alt[2] = t_up_alt[2] + (t_prev[2] + t0_prev[2]) + ## additional error terms + t_up_alt[2] += sqrt((dt_up_alt[1] - dt[1])^2.0) + t_up_alt[2] += sqrt((t_up_alt[1] - t_up_est[1])^2.0) + t_up_est[2] += sqrt((t_up_est[1] - t_up_alt[1])^2.0) - # merge alt. prediction - # t_up_alt[2] += sqrt((dt_up_alt[1] - dt[1])^2.0) - # t_up_alt[2] += sqrt((t_up_alt[1] - t_up_est[1])^2.0) - # t_up_est[2] += sqrt((t_up_est[1] - t_up_alt[1])^2.0) + ## merge alt. prediction + split(merge_meas(t_up_est[1], t_up_est[2], t_up_alt[1], t_up_alt[2]), t_up_est) - # split(merge_meas(t_up_est[1], t_up_est[2], t_up_alt[1], t_up_alt[2]), t_up_est) - # t_up_est[2] += (1.0E-3*rand())^2.0 + ## predict boot time, t0 + t0_est[1] = t_meas[1] - t_up_est[1] + t0_est[2] = t_meas[2] + t_up_est[2] - # merge predicted and measured uptimes + ## merge predicted and measured uptimes split(merge_meas(t_up_est[1], t_up_est[2], t_up_meas[1], t_up_meas[2]), t_up_est) t_up_est_str = sigfig(t_up_est[1], t_up_est[2]) - # evaluate measured boot time, t0 - t0_est[1] = t_meas[1] - t_up_est[1] - t0_est[2] = t_meas[2] + t_up_est[2] - t0_est[2] += sqrt((t0_est[1] - t0_prev[1])^2.0) - t0_prev[2] += sqrt((t0_est[1] - t0_prev[1])^2.0) + ## evaluate measured boot time, t0 + t0_meas[1] = t_meas[1] - t_up_est[1] + t0_meas[2] = t_meas[2] + t_up_est[2] + + ## additional error terms + t0_meas[2] += sqrt((t0_meas[1] - t0_est[1])^2.0) + t0_est[2] += sqrt((t0_meas[1] - t0_est[1])^2.0) - # merge previous and updated boot time, t0 - split(merge_meas(t0_est[1], t0_est[2], t0_prev[1], t0_prev[2]), t0_est) + ## merge previous and updated boot time, t0 + split(merge_meas(t0_meas[1], t0_meas[2], t0_est[1], t0_est[2]), t0_est) t0_est_str = sigfig(t0_est[1], t0_est[2]) -- cgit v1.2.3