Re: [v3 0/9] parallelized "struct page" zeroing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 05/15/2017 03:38 PM, Michal Hocko wrote:
On Mon 15-05-17 14:12:10, Pasha Tatashin wrote:
Hi Michal,

After looking at your suggested memblock_virt_alloc_core() change again, I
decided to keep what I have. I do not want to inline
memblock_virt_alloc_internal(), because it is not a performance critical
path, and by inlining it we will unnecessarily increase the text size on all
platforms.

I do not insist but I would really _prefer_ if the bool zero argument
didn't proliferate all over the memblock API.

Sure, I will remove zero boolean argument from memblock_virt_alloc_internal(), and do memset() calls inside callers.

Also, because it will be very hard to make sure that no platform regresses
by making memset() default in _memblock_virt_alloc_core() (as I already
showed last week at least sun4v SPARC64 will require special changes in
order for this to work), I decided to make it available only for "deferred
struct page init" case. As, what is already in the patch.

I do not think this is the right approach. Your measurements just show
that sparc could have a more optimized memset for small sizes. If you
keep the same memset only for the parallel initialization then you
just hide this fact. I wouldn't worry about other architectures. All
sane architectures should simply work reasonably well when touching a
single or only few cache lines at the same time. If some arches really
suffer from small memsets then the initialization should be driven by a
specific ARCH_WANT_LARGE_PAGEBLOCK_INIT rather than making this depend
on DEFERRED_INIT. Or if you are too worried then make it opt-in and make
it depend on ARCH_WANT_PER_PAGE_INIT and make it enabled for x86 and
sparc after memset optimization.

OK, I will think about this.

I do not really like adding new configs because they tend to clutter the code. This is why, I wanted to rely on already existing config that I know benefits all platforms that use it. Eventually, "CONFIG_DEFERRED_STRUCT_PAGE_INIT" is going to become the default everywhere, as there should not be a drawback of using it even on small machines.

Pasha
--
To unsubscribe from this list: send the line "unsubscribe linux-s390" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux