From: Steven Rostedt > Sent: 20 December 2023 13:01 > > On Wed, 20 Dec 2023 08:48:02 +0000 > David Laight <david.lai...@aculab.com> wrote: > > > 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? > > Unfortunately, it has to be PAGE_SIZE (and for now it's a power of 2 to > make masking easy). It's used for splice and will also be used for memory > mapping with user space.
Perhaps then the sysctl to set the size should be powers of 4k with a minimum size of PAGE_SIZE. Then you don't have to know the page size when setting things up. I'm also guessing that no Linux kernels have a PAGE_SIZE of 2k? IIRC some old mmu (maybe 68020 era) used 2k pages. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)