[squeak-dev] Serious garbage/storage leak issue with MCInfoProxy
Bert Freudenberg
bert at freudenbergs.de
Fri Jan 19 11:50:37 UTC 2018
On 19 January 2018 at 05:30, Chris Muller <ma.chris.m at gmail.com> wrote:
> It wasn't clear to me that your bloated image issue was related to
> MCInfoProxy at all -- you said it showed ByteArray's and Bitmaps as
> the top, but the Proxy wasn't agitated until you ran the
> pointer-finder.
>
> As I mentioned, the intention of the design is to allow purging the MC
> ancestry to recover that memory for building a smaller, tighter
> production image, without losing the ability to access it,
> transparently, if needed. Because no one would want to accidentally
> save a version with the ancestry gone (corrupt), right? This design
> requires
> no extra thinking, just a little extra waiting. Conceptually, that
> feels like a classic cache, to me. If there's a glitch in how it
> interacts with MC that could be improved, we should fix it. I'm
> curious what else was on that stack..
>
I've voiced my criticism of that design before, so I'll just point out
that it's exactly this unpredictable nature of proxy interactions that
makes it fragile.
I agree, though, it isn't needed on the UI menu, so we should remove
> it. It's something one would normally only call from a
> deployment/build script.
>
+1
If even Master Eliot is confused, we really should not expose it with one
tempting click ;)
- Bert -
>
> Best,
> Chris
>
> On Thu, Jan 18, 2018 at 9:43 PM, Eliot Miranda <eliot.miranda at gmail.com>
> wrote:
> > Hi Chris,
> >
> > On Thu, Jan 18, 2018 at 7:20 PM, Chris Muller <asqueaker at gmail.com>
> wrote:
> >>
> >> Hi Eliot,
> >>
> >> It sounds like you selected 'flush cached versions and ancestry' from
> >> the Repository menu of the Monticello Working Copy browser.
> >>
> >> That's something that you would only want to do for a production
> >> deployment image where you aren't planning to do any more development
> >> in. It saves memory on ancestry while providing a dynamic (albeit,
> >> slow) means of loading it back on the rare case that one would need to
> >> do that in the production image ever again. The PointerFinder is not
> >> sensitive enough for proxies, so using it ends up agitating them into
> >> reification, forcing the dynamic reload of ancestry like you
> >> experienced.
> >>
> >> What you want is simply, "flush cached versions" and then you'll never
> >> have that issue.
> >
> >
> > Can you explain? How does this create the issue? Why have an item like
> > "flush cached versions and ancestry" if its dangerous. The implication
> of
> > :cached" is that the information can be rebuilt when required. The
> ancestry
> > is out there in the .mcz files. I don't understand what's going on here.
> > feels like a bad design decision.
> >
> >>
> >>
> >> - Chris
> >>
> >> On Thu, Jan 18, 2018 at 5:24 PM, Eliot Miranda <eliot.miranda at gmail.com
> >
> >> wrote:
> >> > Hi All,
> >> >
> >> > I've been experiencing image save slowdowns recently and finally
> my
> >> > work
> >> > image reached 1.%Gb and I thought I better take a look:
> >> >
> >> > Sisyphus.Cog$ ls -lh SpurWork64.* save/SpurWork64-*
> >> > -rw-r--r--@ 1 eliot staff 28M Jan 18 12:47 SpurWork64.changes
> >> > -rw-r--r--@ 1 eliot staff 1.6G Jan 18 12:48 SpurWork64.image
> >> > -rw-r--r--@ 1 eliot staff 28M Jan 18 12:03
> >> > save/SpurWork64-2018-01-18.changes
> >> > -rw-r--r--@ 1 eliot staff 1.5G Jan 18 12:03
> >> > save/SpurWork64-2018-01-18.image
> >> >
> >> > I ran a space analysis and found that Bitmap and ByteArray were the
> top
> >> > two,
> >> > so I looked for large Bitmaps. I found three that fit this criterion:
> >> >
> >> >
> >> > Bitmap allInstances select: [:bm| bm size >= 1000000 and: [bm ~~
> >> > Display
> >> > bits]]
> >> >
> >> > I inspected the three and did a chase pointers on one of them. As I
> did
> >> > that suddenly
> >> > a) the inspector on the Array became empty (still an array but zero
> >> > elements)
> >> > b) the progress bar for Downloading FlexibleVocabularies-who.NN
> appeared
> >> >
> >> > I interrupted this and did a very cursory stack examination. Some
> object
> >> > had
> >> > not understood isLiteral and from there what looked like an attempt to
> >> > turn
> >> > this stub into a real object caused FlexibleVocabularies-who.NN to
> start
> >> > to
> >> > download.
> >> >
> >> > I threw away the debugger, ran the GC and suddenly all my free space
> was
> >> > back. So now on disc I have
> >> >
> >> > Sisyphus.Cog$ ls -lh SpurWork64.* save/SpurWork64-*
> >> > -rw-r--r--@ 1 eliot staff 28M Jan 18 15:17 SpurWork64.changes
> >> > -rw-r--r--@ 1 eliot staff 57M Jan 18 15:17 SpurWork64.image
> >> > -rw-r--r--@ 1 eliot staff 28M Jan 18 12:03
> >> > save/SpurWork64-2018-01-18.changes
> >> > -rw-r--r--@ 1 eliot staff 1.5G Jan 18 12:03
> >> > save/SpurWork64-2018-01-18.image
> >> >
> >> > What is going on here? There seems to be a very bad storage leak.
> Can
> >> > we
> >> > please discuss this? This doesn't seem like healthy behaviour at all
> >> > :-)
> >> >
> >> > _,,,^..^,,,_
> >> > best, Eliot
> >> >
> >> >
> >> >
> >>
> >
> >
> >
> > --
> > _,,,^..^,,,_
> > best, Eliot
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180119/5ef95aa3/attachment-0001.html>
More information about the Squeak-dev
mailing list
|