On Thu, Apr 21, 2022 at 12:17 AM Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > > On Wed, Apr 20, 2022 at 5:53 AM Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: > > > > xiangxia.m.yue@xxxxxxxxx writes: > > > > > From: Tonghao Zhang <xiangxia.m.yue@xxxxxxxxx> > > > > > > This patch introduce a new bpf_ktime_get_real_ns helper, which may > > > help us to measure the skb latency in the ingress/forwarding path: > > > > > > HW/SW[1] -> ip_rcv/tcp_rcv_established -> tcp_recvmsg_locked/tcp_update_recv_tstamps > > > > > > * Insert BPF kprobe into ip_rcv/tcp_rcv_established invoking this helper. > > > Then we can inspect how long time elapsed since HW/SW. > > > * If inserting BPF kprobe tcp_update_recv_tstamps invoked by tcp_recvmsg, > > > we can measure how much latency skb in tcp receive queue. The reason for > > > this can be application fetch the TCP messages too late. > > > > Why not just use one of the existing ktime helpers and also add a BPF > > probe to set the initial timestamp instead of relying on skb->tstamp? > > > > You don't even need a BPF probe for this. See [0] for how retsnoop is > converting bpf_ktime_get_ns() into real time. > > [0] https://github.com/anakryiko/retsnoop/blob/master/src/retsnoop.c#L649-L668 I try to calculate this offset too. But one case: If administrator manually or NTP changes the clock, we should calculate the offset. How do we know the changes, one solution is that inserting kprobe in tk_set_wall_to_mono() kernel function, and using perf_event to notify userspace. > > -Toke -- Best regards, Tonghao