Messages in this thread | | | Subject | Re: [PATCH v2 2/2] mm/pageblock: remove false sharing in pageblock_flags | From | Vlastimil Babka <> | Date | Tue, 1 Sep 2020 19:04:06 +0200 |
| |
On 8/19/20 10:09 AM, Alex Shi wrote: > > > 在 2020/8/19 下午3:57, Anshuman Khandual 写道: >> >> >> On 08/19/2020 11:17 AM, Alex Shi wrote: >>> Current pageblock_flags is only 4 bits, so it has to share a char size >>> in cmpxchg when get set, the false sharing cause perf drop. >>> >>> If we incrase the bits up to 8, false sharing would gone in cmpxchg. and >>> the only cost is half char per pageblock, which is half char per 128MB >>> on x86, 4 chars in 1 GB. >> >> Agreed that increase in memory utilization is negligible here but does >> this really improve performance ? >> > > It's no doubt in theory. and it would had a bad impact according to > commit e380bebe4771548 mm, compaction: keep migration source private to a single
I don't think that commit is doing the test_and_set_skip() under lock to avoid false sharing. I think it's done to simply make the test and set protected against races without relying on e.g. a truly atomic test_and_set_bit(). It's still noted that it's just a hint so it's not protected to others calling set_pageblock_skip() from other contexts not under a lock.
> but I do have some problem in running thpscale/mmtest. I'd like to see if anyone > could give a try. > > BTW, I naturally hate the false sharing even it's in theory. Anyone who doesn't? :) > > Thanks > Alex >
| |