[Devel] [PATCH VZ9 17/20] fuse: pcs: split trace_printk

Vasily Averin vvs at openvz.org
Sat Oct 7 18:03:08 MSK 2023


On 10/6/23 13:44, Alexey Kuznetsov wrote:
> trace_printk() is a function which is not desired in release kernels,
> if is referenced from a module, even if it is not actually used, it allocates
> lots of memory and scares people with some messages.
> 
> What can we do?

Why not switch to ftrace events?
Do you mean it is not better than trace_printk?

> 1. Surround it with ifdef turned off in release kernels
>    No. We need this at customer's environments to investigate actual problems,
>    modules cannot be replaced with debugging when they are in use.
> 2. Just delete it.
>    Instead we could use systemtap to attach to running module to get desired traces.
>    This facility is used frequently in any case. Contra: systemtap puts
>    heavy overhead, it is not easy to install, frequently customers are heavily
>    firewalled and do not allow debugging software to pollute their systems.
>    One day, when bpftrace becomes mature it could be an option. Right now
>    it is still useless.
> 3. Convert them to userspace logging FUSE_KTRACE at higher loglevel.
>    Too expensive. We do not need this garbage in user space logs and it is not easy,
>    userpace logging requires context pointer which is diffficult or impossible to fetch.
> 
> So, the third variant is suggested. It is some compromise, we preserve
> debugging in code, but split actual uses of trace_printk to separate module,
> which can be loaded when we need tracing. It is more expensive, includes
> an indirect call and does not allow inline calls, but yet it still looks better
> than any other way. Also, a few TRACE which have analogs in userspace were
> missed, convert them to FUSE_KTRACE now.



More information about the Devel mailing list