[PATCH 1/4] win32u: Add freelist cache allocator.

Jin-oh Kang jinoh.kang.kr at gmail.com
Mon Mar 21 11:47:59 CDT 2022


On Mon, Mar 21, 2022, 7:56 PM Huw Davies <huw at codeweavers.com> wrote:

> On Mon, Mar 21, 2022 at 05:41:48AM +0900, Jinoh Kang wrote:
> > Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
> > ---
> >  dlls/win32u/Makefile.in     |   1 +
> >  dlls/win32u/alloc.c         | 173 ++++++++++++++++++++++++++++++++++++
> >  dlls/win32u/ntgdi_private.h |   4 +
> >  3 files changed, 178 insertions(+)
> >  create mode 100644 dlls/win32u/alloc.c
>
> Hi Jinoh,
>
> Could you provide some justification for why we should include this?
>

Well, I forgot to mark this as RFC. I still haven't decided how to
benchmark this change effectively; feedbacks are welcome.

The rationale was that some applications were seeing frequent page faults
due to writing to demand-zero pages in GDI bit blitting routines.

For a bitmap that extends over several demand-zero pages, each page access
would incur a fault (in the worst scenario), resulting in significant
performance drop and/or high CPU usage. This may be aggravated by
non-sequential access (which usually is the case with bottom-up DIBs) or
with transparent huge pages disabled.

Specifically, KakaoTalk renders GIF animations via GDI, calling
CreateCompatibleBitmap() a number of times per each frame. NtCreateBitmap()
uses calloc() to allocate bitmap memory, and calloc() uses freshly
mmap()-ed area above certain size threshold. Apparantly GLibc ptmalloc
assumes the use pattern where bigger objects are allocated and freed much
rarer.

Additionally, there are a few magic numbers in this patch, some
> discussion about their value would be good.
>

They are pretty arbitrary as you might have guessed. It certainly needs
more benchmark work so it can be tuned more appropriately.


> Also note, [1/4] is adding dead (unused) code.  You'd want to combine
> it with [2/4] say.
>

Ack.


> Huw.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20220322/ae5d7bb6/attachment.htm>


More information about the wine-devel mailing list