On Mon Jul 27, 2020 at 10:01 PM PDT, Andrii Nakryiko wrote: > On Mon, Jul 27, 2020 at 4:35 PM <bimmy.pujari@xxxxxxxxx> wrote: > > > > From: Ashkan Nikravesh <ashkan.nikravesh@xxxxxxxxx> > > > > The existing bpf helper functions to get timestamp return the time > > elapsed since system boot. This timestamp is not particularly useful > > where epoch timestamp is required or more than one server is involved > > and time sync is required. Instead, you want to use CLOCK_REALTIME, > > which provides epoch timestamp. > > Hence add bfp_ktime_get_real_ns() based around CLOCK_REALTIME. > > > > This doesn't seem like a good idea. With time-since-boot it's very > easy to translate timestamp into a real time on the host. For bpftrace, we have a need to get millisecond-level precision on timestamps. bpf has nanosecond level precision via bpf_ktime_get[_boot]_ns(), but to the best of my knowledge userspace doesn't have a high precision boot timestamp. There's /proc/stat's btime, but that's second-level precision. There's also /proc/uptime which has millisecond-level precision but you need to make a second call to get current time. Between those two calls there could be some unknown delta. For millisecond we could probably get away with calculating a delta and warning on large delta but maybe one day we'll want microsecond-level precision. I'll probably put up a patch to add nanoseconds to btime (new field in /proc/stat) to see how it's received. But either this patch or my patch would work for bpftrace. [...] Thanks, Daniel