Skip to content

Test suite hits 2GB limit on 32bit R-devel #2767

@mattdowle

Description

@mattdowle

I've just seen this occur, here :
https://ci.appveyor.com/project/Rdatatable/data-table/build/1.0.2337/job/3rppwcw31ent8g1r

Jan saw it too today here :
#2761 (comment)

So, despite all our efforts, there's still more to do.

The error I saw is similar to Jan's :

  Running test id 1667.1      Error: memory exhausted (limit reached?)
  Error: memory exhausted (limit reached?)
  Error: memory exhausted (limit reached?)
  Execution halted

That message is R's, here :
https://github.com/wch/r-source/blob/trunk/src/main/memory.c#L2059
and looking at the context there (inside an err_malloc function) suggests AppVeyor instance is declining R's malloc request. (i.e. it doesn't seem like some kind of stack limit inside R itself).

@jangorecki

  • What is the memory limit of an AppVeyor instance? I had a quick look and 4GB came up quickly but I'm not sure if that's correct. If it is 4GB I don't see how we are reaching that.
  • We never knew before, but now with your new memtest charts, it seems the max memory used is towards the end of the test suite and reaches 160MB. If that's right, it seems very low. I can't imagine AppVeyor's limit being that low. Certainly a lot less than 4GB and we know it now passes on your 2GB instance.
  • I already reduced the memory usage of the non-equi-join tests in PR Nqjoin efficiency 2 #2733. I'm fairly confident that helped a lot and that the memory usage is no longer in that area.
  • According to the memtest charts there are 3 large step-ups in memory usage very early in the test suite. If the mem usage table could be sorted by change and the top 10 printed at the end of the test suite then we could see which tests those step-ups are for. If the data used in those 3 tests is rm()'d after those tests, then perhaps more memory will be available for the tests at the end. However, as I said above, it's strange that the memtest charts show only 160MB being used! Reducing those 3 tests will be wasted effort if, somehow, the memtest results are not capturing the actual mem usage on AppVeyor.
  • A long shot ... might it be that a Suggests package test is running on AppVeyor which eats more RAM, which does not run in the environment used to create the memtest charts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions