[vwnc] Need help understanding fixed-space allocation failures

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[vwnc] Need help understanding fixed-space allocation failures

Martin McClure
In testing 7.7, I've been seeing occasional FixedSpace allocation
failures. I need help to understand why these are happening.

Here's an example:

The allocation that fails is:

   UninterpretedBytes newInFixedSpace: 25

Which wants to allocate 25 bytes. But I get a walkback "No space
available to allocate this object".

When I look at ObjectMemory current, I see that there is plenty of space
in FixedSpace:

FIXED: 1.52M / 4.82M, 25

...more than 3MB left, and only 25 objects in fixed space, so it's not
possible that things are fragmented enough that the smallest free space
is less than 25 bytes.

So... did GC run and free up a bunch of memory between the failure and
my looking at memory stats? No, because

   UninterpretedBytes newInFixedSpace: 25

*still* fails.

Something seems very wrong here, but I don't know which things are
wrong. Any explanations or hints for further debugging?

Regards,

-Martin



The full ObjectMemory current and CurrentMemoryPolicy in use:

self:  an ObjectMemory
statistics:
SPACE: used / total[ @ threshold][, objects]

EDEN: 248.91K / 300.00K @ 296.00K
SURVIVOR: 33.78K / 60.00K @ 40.00K
LARGE: 114.56K / 200.00K @ 180.46K, 5
OLD: 4.62M / 34.39M @ 29.77M, 724334
PERM: 10.55M / 15.39M, 423043
FIXED: 1.52M / 4.82M, 25
allocFailures:  1
allocMatches:  0
allocProbes:  59
allocSplits:  10
availableFreeOldSpaceBytes:  4847828
availableFreeOldSpaceBytesLimit:  4838148
bytesPerFTE:  20
bytesPerLTE:  20
bytesPerOOP:  4
bytesPerOTE:  12
bytesPerRTE:  4
compCodeCacheBytes:  655360
contiguousFreeOldBytes:  5230380
edenBytes:  307200
edenUsedBytes:  254888
edenUsedBytesScavengeThreshold:  303104
enumerationCallsPerMillisecond:  197277
fixedBytes:  5062404
fixedSegments:  5
fixedUsedBytes:  1596480
fixedUsedObjects:  25
incGCState:  $r "16r0072"
incMarkedBytes:  0
incMarkedObjects:  0
incMarkedWeakBytes:  0
incMarkedWeakObjects:  0
incNilledBytes:  0
incNilledObjects:  0
incReclaimedBytes:  0
incReclaimedObjects:  0
incSweepAllocatedBytes:  4696
incSweepAllocatedObjects:  11
incSweptObjects:  0
incUnmarkedObjects:  0
largeBytes:  204800
largeFreeBytesTenuringThreshold:  20000
largeUsedBytes:  117312
largeUsedObjects:  5
maximalFreeOldSpaceBytes:  1462228
nativeStackSpills:  15651
numDataCompactions:  33
numGCs:  17
numGlobalGCs:  3
numIncGCs:  756
numMarkStackOverflows:  0
numScavenges:  115110
numWeakObjectListOverflows:  0
oldBytes:  36064640
oldDataBytes:  22142252
oldOTEs:  724334
oldRtEntries:  11000
oldRtUsedEntries:  10855
oldSegments:  14
permBytes:  16146916
permDataBytes:  11069832
permOTEs:  423043
reservedContiguousFreeBytes:  409600
rtEntries:  5000
rtUsedEntries:  73
stackBytes:  40960
survBytes:  61440
survUsedBytes:  34596
survUsedBytesTenuringThreshold:  40960
threadedDataBytes:  27048
threadedDataEntries:  3
threadedOTEntries:  1
1:  19935164
2:  541872
3:  13432668
4:  1003476
5:  83368
6:  3036
7:  1003476
8:  28132
9:  665888
10:  1003476
11:  36240
12:  568588
13:  1003476
14:  1391
15:  986768
16:  1003476
17:  2110
18:  978132
19:  1003476
20:  502
21:  997448
22:  1003476
23:  780
24:  994100
25:  1003476
26:  6951
27:  920064
28:  3629012
29:  17406
30:  2568312
31:  1003476
32:  5572
33:  0
34:  1003476
35:  0
36:  0
37:  1003476
38:  10
39:  27248
40:  1462228
41:  0
42:  0
43:  1048468
44:  13
45:  798304
46:  249872
47:  1003484
48:  1
49:  0
50:  1003464
51:  1003484
52:  7
53:  548072
54:  255788
55:  1003484
56:  3
57:  250024
58:  505784
59:  1003484
60:  1
61:  0
62:  1003464


=====================

self:  a MemoryPolicy
availableSpaceSafetyMargin:  421184
contiguousSpaceSafetyMargin:  50000
freeMemoryUpperBound:  8388608
growthRegimeMeasurementBlock:  BlockClosure [] in
MemoryPolicy>>measureDynamicFootprintForGrowthRegime
growthRegimeUpperBound:  48000000
growthRetryDecrement:  10000
idleLoopAllocationThreshold:  16000000
incGCAccelerationFactor:  5
incMarkingRate:  40
incNillingRate:  2
incrementalAllocationThreshold:  10000
incSweepingRate:  8
incUnmarkingRate:  8
lowSpacePercent:  25
maxHardLowSpaceLimit:  250000
maxPercentOfThreadedData:  75
maxPercentOfThreadedOTEs:  10
maxProbesPerAttempt:  10
memoryMeasurementBlock:  BlockClosure [] in
MemoryPolicy>>measureDynamicFootprintForMemoryUpperBound
memoryStatus:  an ObjectMemory
memoryUpperBound:  536870912
preferredGrowthIncrement:  1000000
threadedDataIncrement:  25000


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [vwnc] Need help understanding fixed-space allocation failures

Travis Griggs-3

On Jan 21, 2010, at 4:22 PM, Martin McClure wrote:

> In testing 7.7, I've been seeing occasional FixedSpace allocation
> failures. I need help to understand why these are happening.
>
> Here's an example:
>
> The allocation that fails is:
>
>   UninterpretedBytes newInFixedSpace: 25
>
> Which wants to allocate 25 bytes. But I get a walkback "No space
> available to allocate this object".
>
> When I look at ObjectMemory current, I see that there is plenty of  
> space
> in FixedSpace:
>
> FIXED: 1.52M / 4.82M, 25
>
> ...more than 3MB left, and only 25 objects in fixed space, so it's not
> possible that things are fragmented enough that the smallest free  
> space
> is less than 25 bytes.
>
> So... did GC run and free up a bunch of memory between the failure and
> my looking at memory stats? No, because
>
>   UninterpretedBytes newInFixedSpace: 25
>
> *still* fails.
>
> Something seems very wrong here, but I don't know which things are
> wrong. Any explanations or hints for further debugging?

There *used* to be a bug in the memory policy/VM interface, where it  
was computing free fixed space incorrectly, and coming to the wrong  
conclusion about whether it could allocate or not. I thought that was  
fixed though. I must say, this reminds me of exactly the type of  
problem we had had with it at Key though.

--
Travis Griggs
Objologist
"HTTP. It's like a bike pretending to be a bus, a bulldozer, and a cup  
of coffee at the same time." - Martin Kobetic


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc