Memory usage with ETS

Peter-Henry Mander <>
Fri Aug 5 20:15:16 CEST 2005


No! no, I'm wrong. It didn't work. ETS memory consumption still grows
regardless. Grumble.

Any helpful suggestions? (on Friday evening? Yeah right, I'm going
home!)

Pete.

On Fri, 2005-08-05 at 18:16 +0100, Peter-Henry Mander wrote:
> Hi Gurus,
> 
> I've carried out a little experiment. The program I've written
> originally used several ETS tables throughout it's processing lifetime,
> and memory consumption grew gradually as it progressed. I have found
> that periodically copying all the records over to a new table, deleting
> the original table then calling erlang:garbage_collect/0 has helped to
> stabilise memory consumption.
> 
> Is this a suitable method? Are there any drawbacks or gotchas I should
> be wary of?
> 
> The program performance is dominated by disk access since it processes
> call data records, so I doubt that copying a few tables with
> approximately 32,000 records each will have a huge impact. However will
> this method cause performance issues on other systems?
> 
> For example, I've rewritten the timer module so that I can specify timer
> periods with microsecond granularity to enable issuing messages at rates
> of, say 333 cps (the timer approximates the period to the nearest
> millisecond and will achieve 333 cps on average). I've used ETS to store
> the timer sequence since inserting into lists gets very costly as the
> number and frequency of the timers increases. I haven't run the timer
> for very long but I suspect the ETS table will grow monotonically. How
> can I reduce the memory footprint without resorting to table copying
> which will disrupt the timer?
> 
> Pete.
> 
> 





More information about the erlang-questions mailing list