On Mon, Sep 23, 2019 at 8:46 AM David Hildenbrand <david@xxxxxxxxxx> wrote: > > On 23.09.19 17:37, Michael S. Tsirkin wrote: > > On Mon, Sep 23, 2019 at 08:28:00AM -0700, Alexander Duyck wrote: > >> On Mon, Sep 23, 2019 at 8:00 AM Michael S. Tsirkin <mst@xxxxxxxxxx> wrote: > >>> > >>> On Mon, Sep 23, 2019 at 07:50:15AM -0700, Alexander Duyck wrote: > >>>>>> +static inline void > >>>>>> +page_reporting_reset_boundary(struct zone *zone, unsigned int order, int mt) > >>>>>> +{ > >>>>>> + int index; > >>>>>> + > >>>>>> + if (order < PAGE_REPORTING_MIN_ORDER) > >>>>>> + return; > >>>>>> + if (!test_bit(ZONE_PAGE_REPORTING_ACTIVE, &zone->flags)) > >>>>>> + return; > >>>>>> + > >>>>>> + index = get_reporting_index(order, mt); > >>>>>> + reported_boundary[index] = &zone->free_area[order].free_list[mt]; > >>>>>> +} > >>>>> > >>>>> So this seems to be costly. > >>>>> I'm guessing it's the access to flags: > >>>>> > >>>>> > >>>>> /* zone flags, see below */ > >>>>> unsigned long flags; > >>>>> > >>>>> /* Primarily protects free_area */ > >>>>> spinlock_t lock; > >>>>> > >>>>> > >>>>> > >>>>> which is in the same cache line as the lock. > >>>> > >>>> I'm not sure what you mean by this being costly? > >>> > >>> I've just been wondering why does will it scale report a 1.5% regression > >>> with this patch. > >> > >> Are you talking about data you have collected from a test you have > >> run, or the data I have run? > > > > About the kernel test robot auto report that was sent recently. > > https://lkml.org/lkml/2019/9/21/112 > > And if I'm correct, that regression is observable in case reporting is > not enabled. (so with this patch applied only, e.g., on a bare-metal system) Thanks. For whatever reason it looks like my gmail decided to pop it out of the thread so I hadn't seen it yet this morning. I'll have to look into it. It doesn't make much sense to me why this would have this much impact since especially in the disabled case the changes should be quite small. - Alex