On 2/22/12 12:55 PM, Matthias Sohn wrote:
2012/2/22 Winston Prakash <[email protected] <mailto:[email protected]>>

    Denis,

    Right now I'm not talking about memory leak, but memory consumption.

    Hudson has a tendency to keep the info about entire artifacts of a
    build. For example, if a job contains JUnit test results then this
    info is kept in the memory. Currently Hudson is holding about 360
    jobs with 6500 builds and 510,000 JUnit Case results in the
    memory. Average memory consumed by each JUnit Test case is about
    200kb. So net memory consumption by JUnit results should be about
    100 MB, however memory profiler reports 250 MB of memory occupied
    by Test cases.

why is Hudson keeping all that in memory ?

Looks like the original authors developed Hudson that way. May be at that time the authors did not envision Hudson to be so successful and become an enterprise tool :-)

Looks like it should instead use a LRU cache
with a fixed max cache size.
Yes, that would be the right architecture for a large enterprise installation. I will look in to that.

    I noticed that the job hudson-test-harness (which is maintained by
    me) has the  debug turned on. Because of this the Junit Test
    standard outputs has about 15-20 MB of debug results and this
    entire result was in the memory. Just 10 JUnit Case results occupy
    about 150-200 MB of memory. Now I turned off the debug. However,
    old Junit test results are still in the memory. So next time when
    Hudson restarts it should consume less memory (about 150 MB less).
    I noticed some other jobs too have large JUnit standard output.
    Reducing those output should reduce over all Hudson memory
    consumption. I will try to list those jobs. The ideal solution
    would be to fix in Hudson to load JUnit Test results  lazily, but
    that is a long term solution.

    Similarly, the job "tycho-gmp.gmf.tooling" is producing huge
    amount of maven artifacts which are also kept in the memory (about
    128 MB). I'm not sure exactly what it is, could be JavaDoc as
    pointed out by Mickael. I'm trying to find from tycho team if we
    could reduce those maven artifacts in the build (temporarily at
    least), until we find proper solution in Hudson itself.

does it keep all the maven artifacts in memory or some metadata about these artifacts ?

I think it keeps only the metadata. But something is going weird, I'm trying to figure that out with the maven folks.

    Of course we need to fix the memory leaks, however the quick
    solution is to reduce these huge memory footprints for now in a
    easy way.


could we throw more memory on Hudson to workaround these problems until
Hudson became smarter about caching data ?
Currently 2.5 GB of memory is set aside for the Hudson JVM. If we are able to get rid of these huge memory consumers, I guess that amount should be ok.

- Winston
--
Matthias


_______________________________________________
cross-project-issues-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev
_______________________________________________
cross-project-issues-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev

Reply via email to