Re: Gradual Growth of Memory Use?
"David McClain (as dbm at refined-audiometrics dot com)" <[email protected]>
| Newsgroups | gmane.lisp.lispworks.general |
|---|---|
| Message-ID | <[email protected]> |
I was keeping the collision messages, which themselves contain references to the delivery target Actor. This is useful for tracking down the source of collisions. > On Mar 19, 2025, at 08:51, David McClain <[email protected]> wrote: > > AHA!! > > I found the culprit. I had a telemetry collection down in the Actor Dispatch mechanism to detect and count the number of BECOME collisions - parallel tasks attempting to BECOME inside of any one Actor behavior, which allows only one of them to succeed and forces a retry of message delivery for the losers. > > This is an interesting problem for parallel concurrency. Some Actor systems allow only one thread of execution inside any one Actor behavior. Mine allows full parallel execution. > > At any rate, I zapped the telemetry queue, did another (GC-GENERATION 7), and now Tim Dump shows only 588 Actors. That sounds more reasonable. > > - DM > > > >> On Mar 19, 2025, at 08:44, David McClain (as dbm at refined-audiometrics dot com) <[email protected]> wrote: >> >> Here is the Tim Dump after (GC-GENERATION 7) and now having run for 7 hours. >> >> Now shows 650,000 Actors accumulated !!?? Something is clearly not working as I would have expected…. >> >> (#S(CLASS-COUNTER :NAME CONS >> :COUNT 11538098 >> :TOTAL-SIZE 184609568 >> :CUMULATIVE-SIZE 409114392) >> #S(CLASS-COUNTER :NAME FUNCTION >> :COUNT 1984077 >> :TOTAL-SIZE 88266264 >> :CUMULATIVE-SIZE 224504824) >> #S(CLASS-COUNTER :NAME SIMPLE-VECTOR >> :COUNT 2981570 >> :TOTAL-SIZE 88202744 >> :CUMULATIVE-SIZE 136238560) >> #S(CLASS-COUNTER :NAME COM.RAL.ACTORS:ACTOR >> :COUNT 651265 >> :TOTAL-SIZE 15630360 >> :CUMULATIVE-SIZE 48035816) >> #S(CLASS-COUNTER :NAME CLOS::SYSTEM-OBJECT >> :COUNT 125668 >> :TOTAL-SIZE 7476728 >> :CUMULATIVE-SIZE 32405456) >> #S(CLASS-COUNTER :NAME SIMPLE-STRING >> :COUNT 22364 >> :TOTAL-SIZE 5244112 >> :CUMULATIVE-SIZE 24928728) >> #S(CLASS-COUNTER :NAME VECTOR >> :COUNT 3100 >> :TOTAL-SIZE 5132048 >> :CUMULATIVE-SIZE 19684616) >> #S(CLASS-COUNTER :NAME SYMBOL >> :COUNT 103353 >> :TOTAL-SIZE 4960944 >> :CUMULATIVE-SIZE 14552568) >> #S(CLASS-COUNTER :NAME SIMPLE-BASE-STRING >> :COUNT 126148 >> :TOTAL-SIZE 3816784 >> :CUMULATIVE-SIZE 9591624) >> #S(CLASS-COUNTER :NAME EDITOR::TEXT-PROPERTY-POINT >> :COUNT 8710 >> :TOTAL-SIZE 696800 >> :CUMULATIVE-SIZE 5774840) >> #S(CLASS-COUNTER :NAME DOUBLE-FLOAT >> :COUNT 41393 >> :TOTAL-SIZE 662288 >> :CUMULATIVE-SIZE 5078040) >> >> >>> On Mar 19, 2025, at 08:24, Martin Simmons <[email protected]> wrote: >>> >>> It would be useful to try again after (GC-GENERATION 7), because that can >>> sometimes collect more objects in generation 3 than (GC-GENERATION 3) can. >>> >>> -- >>> Martin Simmons >>> LispWorks Ltd >>> http://www.lispworks.com/ >>> >>> >>> >>>>>>>> On Wed, 19 Mar 2025 06:50:20 -0700, David McClain said: >>>> >>>> I just did a (GC-GENERATION 3), about half-hour after the last dump. Here is >>>> the new dump: (Now shows 460,000 Actors, up from 342,000 !!??) >>>> >>>> (#S(CLASS-COUNTER :NAME CONS >>>> :COUNT 8821834 >>>> :TOTAL-SIZE 141149344 >>>> :CUMULATIVE-SIZE 324811016) >>>> #S(CLASS-COUNTER :NAME FUNCTION >>>> :COUNT 1456012 >>>> :TOTAL-SIZE 71371256 >>>> :CUMULATIVE-SIZE 183661672) >>>> #S(CLASS-COUNTER :NAME SIMPLE-VECTOR >>>> :COUNT 2221920 >>>> :TOTAL-SIZE 69226000 >>>> :CUMULATIVE-SIZE 112290416) >>>> #S(CLASS-COUNTER :NAME COM.RAL.ACTORS:ACTOR >>>> :COUNT 459690 >>>> :TOTAL-SIZE 11032560 >>>> :CUMULATIVE-SIZE 43064416) >>>> #S(CLASS-COUNTER :NAME CLOS::SYSTEM-OBJECT >>>> :COUNT 127772 >>>> :TOTAL-SIZE 7416080 >>>> :CUMULATIVE-SIZE 32031856) >>>> #S(CLASS-COUNTER :NAME VECTOR >>>> :COUNT 3110 >>>> :TOTAL-SIZE 5701968 >>>> :CUMULATIVE-SIZE 24615776) >>>> #S(CLASS-COUNTER :NAME SIMPLE-STRING >>>> :COUNT 22319 >>>> :TOTAL-SIZE 5269464 >>>> :CUMULATIVE-SIZE 18913808) >>>> #S(CLASS-COUNTER :NAME SYMBOL >>>> :COUNT 103353 >>>> :TOTAL-SIZE 4960944 >>>> :CUMULATIVE-SIZE 13644344) >>>> #S(CLASS-COUNTER :NAME SIMPLE-BASE-STRING >>>> :COUNT 126192 >>>> :TOTAL-SIZE 3817624 >>>> :CUMULATIVE-SIZE 8683400) >>>> #S(CLASS-COUNTER :NAME DOUBLE-FLOAT >>>> :COUNT 27586 >>>> :TOTAL-SIZE 441376 >>>> :CUMULATIVE-SIZE 4865776) >>>> >>>> >>>>> On Mar 19, 2025, at 06:43, David McClain (as dbm at refined-audiometrics dot com) <[email protected]> wrote: >>>>> >>>>> >>>>> >>>>>> On Mar 19, 2025, at 06:02, Martin Simmons <[email protected]> wrote: >>>>>> >>>>>> I suggest comparing those counters with another call to size-by-class/loop >>>>>> when the image has grown some more. After that, you could do (gc-generation >>>>>> 3) and compare again to see if the objects were really live or just stuck in >>>>>> generation 3. >>>>> >>>>> >>>>> So, from your suggestion, it would make most sense to perform (gc-generation 3) before doing the memory dump from Tim? Allow the system to discard the accumulated garbage first? Then compare dumps from two separated times. >>>>> >>>>> My experience running (gc-generation 3) in the past has shown that the memory image is indeed increasing. The results of the call do keep increasing, which would indicate memory actually in-use. >>> >>> _______________________________________________ >>> Lisp Hug - the mailing list for LispWorks users >>> [email protected] >>> http://www.lispworks.com/support/lisp-hug.html >> >> >> _______________________________________________ >> Lisp Hug - the mailing list for LispWorks users >> [email protected] >> http://www.lispworks.com/support/lisp-hug.html > _______________________________________________ Lisp Hug - the mailing list for LispWorks users [email protected] http://www.lispworks.com/support/lisp-hug.html