Re: win32 threads patch vs beta2 - what to do? - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: win32 threads patch vs beta2 - what to do?
Date
Msg-id 47225371.5030703@hagander.net
Whole thread Raw
In response to Re: 8.2.3: Server crashes on Windows using Eclipse/Junit  (Magnus Hagander <magnus@hagander.net>)
Responses Re: win32 threads patch vs beta2 - what to do?
List pgsql-hackers
Magnus Hagander wrote:
> Dave Page wrote:
>> Magnus Hagander wrote:
>>> Right. You need to look at VM size in *process explorer*. VM size in
>>> task manager has nothing to do with VM size, it's the private bytes :-S
>>> And there is no way to see that info from task manager, I think. PE is
>>> your friend.
>>>
>>>
>>> Anyway. Other than a refresher on those, I'd be interested in two other
>>> important parts:
>>> * How many threads does it reach when you have 300 active backends?
>>> * Is there a handle leak? meaning once your 300 backends have exited,
>>> does the number of handles in the process drop down to the same value it
>>> had before?
>> Without patch:
>>
>> VM:             1,322,792K
>> Idle threads:        6        
>> Peak threads:        306    
>> Handles at start:    576
>> Handles at end:        576
>>
>> With patch:
>>
>> VM:             98,088K        
>> Idle threads:        3    
>> Peak threads:        7
>> Handles at start:    576
>> Handles at end:        585 (585 again after second run).
> 
> Ah, now we're talking. That's the kind of reduction I was looking for :-)
> 
> I think the difference in handles is because the threadpool keeps some
> things around. As long as it stays at 585 and comes back down after a
> second run, we're fine at that - there's no leak.
> 
> Attached is an updated version of the patch, currently being tested by
> both me and Dave. If it passes our tests, I'll apply this so it gets
> included for broader testing in beta2.

So of course, for all good patches, problems turn up :-(

This patch doesn't work on mingw, at least not on all versions. The
reason is that, as usual, the mingw libraries are not complete. We've
dealt with this before, by dynamically loading the functions. We know
this works. But I don't have time to fix that tonight, and I'll be
offline much of this weekend.

Now, given these great improvements, I'd very much like this in beta2,
so it can get proper testing. This leaves us with a couple of choices:

1) Delay beta2 until the beginning of next week. I'll get this fixed
sunday evening or monday at the latest. I know how to fix it, it's just
that I don't have the time right now :( (This assumes that the plan
still is to wrap beta2 today)

2) Apply the patch as-is. Then beta2 will work fine with the msvc build,
which is used for the binary distribution. But it's broken on mingw
until fixed, which of course includes the buildfarm stuff. Again, we
know how to fix this.

2b) I apply this as-is, and someone else cleans up mingw before beta2 is
wrapped.

3) We don't apply this, and wait until beta3 to have it tested.
Depending on how many betas we end up with, that may leave us with very
little testing before release.



2b is of course the best here, but then someone has to step up and
volunteer to do that.

I'm leaning towards applying the patch now, and hoping for 2b to happen.
If it doesn't happen, the choice between 1 and 2 can be made when the
time to wrap the beta approaches (at which point I will be offline, so I
escape :-P)


The patch that would go in is the one previously posted plus a couple of
minor edits in comments as suggested on IM by Alvaro.


Comments?

//Magnus


pgsql-hackers by date:

Previous
From: Magnus Hagander
Date:
Subject: Re: 8.2.3: Server crashes on Windows using Eclipse/Junit
Next
From: Dave Page
Date:
Subject: Re: win32 threads patch vs beta2 - what to do?