Thread (31 messages) 31 messages, 6 authors, 2019-09-26

Re: [PATCH v10 3/6] mm: Introduce Reported pages

From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2019-09-23 15:00:35
Also in: kvm, linux-mm, lkml

On Mon, Sep 23, 2019 at 07:50:15AM -0700, Alexander Duyck wrote:
quoted
quoted
+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.
Also, at least on my system, pahole seems to indicate they are in
different cache lines.

/* --- cacheline 3 boundary (192 bytes) --- */
struct zone_padding        _pad1_;               /*   192     0 */
struct free_area           free_area[11];        /*   192  1144 */
/* --- cacheline 20 boundary (1280 bytes) was 56 bytes ago --- */
long unsigned int          flags;                /*  1336     8 */
/* --- cacheline 21 boundary (1344 bytes) --- */
spinlock_t                 lock;                 /*  1344     4 */

Basically these flags aren't supposed to be touched unless we are
holding the lock anyway so I am not sure it would be all that costly
for this setup. Basically we are holding the lock when the flag is set
or cleared, and we only set it if it is not already set. If needed
though I suppose I could look at moving the flags if you think that is
an issue. However I would probably need to add some additional padding
to prevent the lock from getting into the same cache line as the
free_area values.
-- 
MST

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help