From: Steven Rostedt > Sent: 19 December 2023 18:54 > From: "Tzvetomir Stoyanov (VMware)" <tz.stoya...@gmail.com> > > Currently the size of one sub buffer page is global for all buffers and > it is hard coded to one system page. In order to introduce configurable > ring buffer sub page size, the internal logic should be refactored to > work with sub page size per ring buffer. > ... > - nr_pages = DIV_ROUND_UP(size, BUF_PAGE_SIZE); > + /* Default buffer page size - one system page */ > + buffer->subbuf_size = PAGE_SIZE - BUF_PAGE_HDR_SIZE; > + > + /* Max payload is buffer page size - header (8bytes) */ > + buffer->max_data_size = buffer->subbuf_size - (sizeof(u32) * 2); > + > + nr_pages = DIV_ROUND_UP(size, buffer->subbuf_size);
While not new, does this really make any sense for systems with 64k pages? Wouldn't it be better to have units of 4k? ... > @@ -5102,14 +5110,14 @@ unsigned long ring_buffer_size(struct trace_buffer > *buffer, int cpu) > { > /* > * Earlier, this method returned > - * BUF_PAGE_SIZE * buffer->nr_pages > + * buffer->subbuf_size * buffer->nr_pages > * Since the nr_pages field is now removed, we have converted this to > * return the per cpu buffer value. Overenthusiastic global replace... David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)