OutOfMemoryErrors in ParamModi

Issue

We sporadically see OOMs in ParamModi, but have not yet been able to find their cause.

See e.g.:

We also came up with some possible issues, but nothing that is clearly the cause:

In early June 2020, JF has increased the max heap on R14 to 768 MB to make OOMs in production less likely. This change has not been merged to master/other branches.

Analyses

Analysis June 9, 2020: Manual test of ParamModi in DryRun

Analysis by AW: ParamModi in 3-tier, with 512 MB of heap/memory allowed.

verlauf.png

--- ParamModi, 3-tier
* vor Drives, kein Kontext selektiert: 75

* Vollversorgungen auf SIS18_SLOW_HADES_... (blau markiert)
  * 1. 78
  * 2. 80, Spike auf ca. 105
  * 3. 83, Spike auf ca. 110
  * 4. 86, Spike auf ca. 115
  * 5. 88, Spike auf ca. 121
  * 6. 91, Spike auf ca. 127
  * 7. 93.5, Spike auf ca. 134
  * 8. 96, Spike auf ca. 141.5
  * 9. 97.7, Spike auf ca. 148
  * 10. 100.2, Spike auf ca. 151
  * 11. 100.2, Spike auf ca. 153.7
  * 12. 100.2, Spike auf ca. 154.8
  * 13. 100.3, Spike auf ca. 154.8
  * 14. 100.3, Spike auf ca. 153.8

* Selektion Resident: SIS18_SLOW_HADES_...
  * 165, Spike auf ca. 195
  
* Expert-Tab: Beschleuniger ESR
  * 162, Spike auf ca. 210
  
* Selektion Expert: ESR_EXP20_01...
  * 218, Spike auf ca. 232
  
* Tab-Wechsel: Resident, Expert, Resident, Expert: 162
  * (Selektion auf Expert-Tab geht dabei verloren)

* Selektion auf Resident-Tab abwählen (Pattern SIS18_SLOW_HADES_... "selektiert", aber keine Chain):  96

* Selektion Resident: SIS18_SLOW_HADES_...
  * 162, Spike auf ca. 195
  
* Trims auf GTK7MU5 Theoriewinkel (2 Params sent to hardware)
  * 1. 161.7, Spike auf ca. 237
  
* Vollversorgungen auf SIS18_SLOW_HADES_...
  * 1. 162, Spike auf ca. 245
  
* Trims auf GTK7MU5 Theoriewinkel (2 Params sent to hardware) (orange markiert)
  * 1. 189, Spike auf ca. 224
  * 2. 188, Spike auf ca. 226
  * 3. 155, Spike auf ca. 210
  * 4. 183, Spike auf ca. 250
  * 5. 181.5, Spike auf ca. 232
  * 6. 179, Spike auf ca. 233
  * 7. 177.2, Spike auf ca. 247
  * 8. 175.2, Spike auf ca. 228
  * --- 145 - ?! (nichts gemacht??) (ca. 15:50)  
  * 9. 175.6, Spike auf ca. 246
  * 10. 173.6, Spike auf ca. 241
  * 11. 174, Spike auf ca. 207
  * 12. 174.3, Spike auf ca. 212

* Selektion auf Resident-Tab abwählen (Pattern SIS18_SLOW_HADES_... "selektiert", aber keine Chain): 78

* Client-Refresh (bei abgewähltem Kontext (Pattern SIS18_SLOW_HADES_... "selektiert", aber keine Chain)
  * 1. 91, Spike auf ca. 183
  * 2. 82, Spike auf ca. 120
  * 3. 83, Spike auf ca. 188
  * 4. 91, Spike auf ca. 187
  * 5. 91, Spike auf ca. 184
  
* Selektion auf Resident-Tab: Pattern SIS18_FAST_HHT_... "selektiert", aber keine Chain: 91
  
* Client-Refresh (bei abgewähltem Kontext (Pattern SIS18_FAST_HHT_... "selektiert", aber keine Chain)
  * 1. 74, Spike auf ca. 180
  
* Selektion Resident: SIS18_SLOW_HADES_...
  * 141.5, Spike auf ca. 169
  
* Export komplett
  * 142, Spike auf ca. 168

* Import Dateisystem
  * 143, Spike auf ca. 152
  
* Import WebDAV
  * 1. 157, Spike auf ca. 201
  * 2. 159, Spike auf ca. 202
  * 3. 158, Spike auf ca. 200
  
* Änderungen verwerfen
  * 157, Spike auf ca. 196
  
* Selektion auf Resident-Tab abwählen (Pattern SIS18_SLOW_HADES_... "selektiert", aber keine Chain): 92
 
* Trim-Tab: SIS18_SLOW_HADES_..., alle BPs, CORRH, irgendwelche HKicks
  * 94, Spike auf ca. 129
  * 94, Spike auf ca. 101

* Selektion Resident: SIS18_SLOW_HADES_...
  * 160, Spike auf ca. 185
  
* Selektion auf Resident-Tab abwählen (Pattern SIS18_SLOW_HADES_... "selektiert", aber keine Chain): 94
  
* Selektion auf Resident-Tab: Pattern SIS18_FAST_HHT_... "selektiert", aber keine Chain: 94

No memory leak was found.

Even after 10 full drives of a SIS18-HADES pattern, the memory consumption was less than half of what was allowed. So while the issue identified in bug 1998 might be valid, it does not appear to be a likely primary cause in production.

But then I kept testing:

Full progression

verlauf2-ausschnitt_marker.png
* Vollversorgungen auf SCRATCH_AS_ESR_FAST_... (287 params sent to hardware, nur Pattern selektiert aber keine Chain) (lila markiert)
  * 1. 101, Spike auf ca. 161
  * 2. 108, Spike auf ca. 115
  * 3. 115, Spike auf ca. 146
  * 4. 123, Spike auf ca. 174
  * 5. 130, Spike auf ca. 174
  * 6. 137, Spike auf ca. 169
  * 7. 144, Spike auf ca. 211
  * 8. 151, Spike auf ca. 168
  * 9. 159, Spike auf ca. 213
  * 10. 166, Spike auf ca. 213
  * 11. 166, Spike auf ca. 222
  * 12. 166.3, Spike auf ca. 225
  * 13. 166.4, Spike auf ca. 223.5
  * 14. 166.4, Spike auf ca. 222.5
  
* Selektion auf Resident-Tab: Chain in  SCRATCH_AS_ESR_FAST_... 
  * 310, Spike auf ca. 348
  
* Selektion Expert: ESR_EXP20_01...
  * 366, Spike auf ca. 415
  
* Tab-Wechsel: Resident, Expert, Resident, Expert, Resident: 310
  * (Selektion auf Expert-Tab geht dabei verloren)
 
* Selektion auf Resident-Tab abwählen (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain): 230
  
* Client-Refresh (bei abgewähltem Kontext (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain)
  * 1. 183, Spike auf ca. 360
  * 2. 184, Spike auf ca. 300
 
--- seltsamerweise ca. 18 MB mehr als vorher - Wiederholung von Selektion, Deselektion, Client Refresh:
 
* Selektion auf Resident-Tab: Chain in  SCRATCH_AS_ESR_FAST_... 
  * 327, Spike auf ca. 365
  
* Selektion auf Resident-Tab abwählen (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain): 248
  
* Client-Refresh (bei abgewähltem Kontext (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain)
  * 1. 247, Spike auf ca. 360
  
--- auffällig mehr als vorher. Nochmal Wiederholung von Selektion, Deselektion, Client Refresh (17:04):
  
* Selektion auf Resident-Tab: Chain in  SCRATCH_AS_ESR_FAST_... 
  * 328, Spike auf ca. 431
  
* Selektion auf Resident-Tab abwählen (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain): 248
  
* Client-Refresh (bei abgewähltem Kontext (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain)
  * 1. 224, Spike auf ca. 312
  
--- Nochmal Wiederholung von Selektion, Deselektion, Client Refresh (17:05):  

* Selektion auf Resident-Tab: Chain in  SCRATCH_AS_ESR_FAST_... 
  * 306, Spike auf ca. 442
  
* Selektion auf Resident-Tab abwählen (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain): 225
  
* Client-Refresh (bei abgewähltem Kontext (Pattern SCRATCH_AS_ESR_FAST_... "selektiert", aber keine Chain)
  * 1. 231, Spike auf ca. 280
  
--- Anderes Pattern (bisher noch nicht selektiert):

* Selektion auf Resident-Tab: Chain in SCRATCH_HL_SIS18_FAST_... 
  * 234, Spike auf ca. 315
  
* Selektion auf Resident-Tab abwählen (Pattern SCRATCH_HL_SIS18_FAST_... "selektiert", aber keine Chain): 198
  
* Client-Refresh (bei abgewähltem Kontext (Pattern SCRATCH_HL_SIS18_FAST_... "selektiert", aber keine Chain)
  * 1. 198, Spike auf ca. 349  
  
--- Anderes Pattern (bisher noch nicht selektiert):

* Selektion auf Resident-Tab: Chain in SIS18_FAST_HHT... 
  * 229, Spike auf ca. 311
  
* Selektion auf Resident-Tab abwählen (Pattern SIS18_FAST_HHT... "selektiert", aber keine Chain): 196
  
* Client-Refresh (bei abgewähltem Kontext (Pattern SIS18_FAST_HHT... "selektiert", aber keine Chain)
  * 1. 213, Spike auf ca. 298   
  
--- Wieder > 10 kleine Trims, wie vorhin:

* Selektion auf Resident-Tab: Chain in SIS18_SLOW_HADES_... 
  * 254, Spike auf ca. 372

* Trims auf GTK7MU5 Theoriewinkel (2 Params sent to hardware) (grün markiert)
  * 1. 277, Spike auf ca. 411
  * 2. 300, Spike auf ca. 340
  * 3. 234, Spike auf ca. 379
  * 4. 256.5, Spike auf ca. 387
  * 5. 220 Spike auf ca. 300
  * 6. 242, Spike auf ca. 384
  * 7. 236, Spike auf ca. 394
  * 8. 229, Spike auf ca. 387
  * 9. 222, Spike auf ca. 331
  * 10. 215, Spike auf ca. 403
  * 11. 215.5, Spike auf ca. 390
  * 12. 215.7, Spike auf ca. 387
  
* Selektion auf Resident-Tab abwählen (Pattern SIS18_SLOW_HADES_... "selektiert", aber keine Chain): 119.3

--- ca. 30 MB mehr jetzt (ca. 17:25) als vorhin (ca. 15:55) - warum?!

I performed 10 full drives on an ESR pattern. The DriveResult were, as expected, larger than the DriveResults for the SIS pattern, but nothing seemed abnormal.

However, I then selected the chain of the ESR pattern, and switched around between patterns/chains a bit. I noticed then that the memory consumption had apparently increased, but I could not pinpoint why.

Eventually, I performed the same small trims as I had already done before. When I was done, the memory consumption was about 30 MB higher than before after the same trims, even though ParamModi should be in the same basic "state" (same kind of DriveResults stored in DriveResultViewer, no chain selected in any tab).


Then (no protocol), I clicked around a bit, mainly switching between chains and patterns on Resident and Expert tab. Finally, I clicked Client Refresh again - and then heap went down to 98. Which is reasonably close to the 94 we had before the second part of testing.

No idea what's going on here.

AnnekeWalter - 09 Jun 2020
Topic revision: r1 - 09 Jun 2020, AnnekeWalter
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback