Ogre Version: v1.11.5
Operating System: Raspian 9 (stretch)
Render System:
My Raspberry Pi 3 B+ has 1 GB of RAM.
I have added an 8 GB swap file to cope with large builds like OpenCV and Ogre, and that was enough for OpenCV, but not Ogre.
I just added another 2 GB of swap, hoping it's enough.
Since it takes a long time to reach the "virtual memory exhausted" error, and because I'm running low on disk-space, I thought I'd post here to see if anyone has a rough gauge on how much virtual memory is likely needed to complete the build?
(If it's much more than the 1 GB + 10 GB swap I have now, I'll have to move to a larger SD card).
Thanks in advance for any insights! =D
"virtual memory exhausted" while building on RPI
-
- Gnoblar
- Posts: 4
- Joined: Sat Apr 27, 2019 8:10 pm
-
- OGRE Team Member
- Posts: 1994
- Joined: Sun Mar 30, 2014 2:51 pm
- x 1074
- Contact:
Re: "virtual memory exhausted" while building on RPI
personally I would cross-compile it from an x86 machine. However you can also reduce the number of build jobs to 1 to reduce memory pressure.
"make -j1" or "ninja -j1"
"make -j1" or "ninja -j1"
-
- Gnoblar
- Posts: 4
- Joined: Sat Apr 27, 2019 8:10 pm
Re: "virtual memory exhausted" while building on RPI
Paroj,
Thanks for the advice. I'll try limiting the jobs.
Thanks for the advice. I'll try limiting the jobs.
-
- Gnoblar
- Posts: 4
- Joined: Sat Apr 27, 2019 8:10 pm
Re: "virtual memory exhausted" while building on RPI
BTW, I happened to be watching closely when it failed this time (I have not tried limiting the jobs yet).
It turns out it stopped after the cc1plus process tried to exceed 2 GB of virtual memory.
This is a 32-bit platform. I would have expected the limit to be 4 GB.
But anyway, no amount of additional swap is going help this problem, so fingers crossed that limiting the jobs does the trick. =D
It turns out it stopped after the cc1plus process tried to exceed 2 GB of virtual memory.
This is a 32-bit platform. I would have expected the limit to be 4 GB.
But anyway, no amount of additional swap is going help this problem, so fingers crossed that limiting the jobs does the trick. =D
- dark_sylinc
- OGRE Team Member
- Posts: 5296
- Joined: Sat Jul 21, 2007 4:55 pm
- Location: Buenos Aires, Argentina
- x 1278
- Contact:
Re: "virtual memory exhausted" while building on RPI
As you noticed, 2GB is the virtual address limit per process and now swapping is going to help you. This is because the other 2GB is reserved for system kernel ranges including device drivers and special addresses (e.g. 0x00000000, 0xCDCDCDCD, etc)
Things that may help:
Things that may help:
- What paroj already suggested
- Building using OGRE_UNITY_BUILD (if it's still there in Ogre 1.x) and playing with the OGRE_UNITY_FILES_PER_UNIT setting
- Disabling precompiled headers if they're enabled
- Trying a different compiler (GCC vs Clang). If you're on a Debian-based distro, "update-alternatives --config c++ " may come handy
- Disabling optimizations, disabling debug information (i.e. no "-g" option)
- Trying a different linker (regular ld vs gold)
-
- Gnoblar
- Posts: 4
- Joined: Sat Apr 27, 2019 8:10 pm
Re: "virtual memory exhausted" while building on RPI
Thanks for all the advice, folks.
I never did get the build to complete using the defaults even with -j1.
It was dying late in to a part of the build dealing with python bindings.
I don't expect to need those features, so I just disabled them in the cmake input, a la:
-D OGRE_BUILD_COMPONENT_PYTHON=OFF
I never did get the build to complete using the defaults even with -j1.
It was dying late in to a part of the build dealing with python bindings.
I don't expect to need those features, so I just disabled them in the cmake input, a la:
-D OGRE_BUILD_COMPONENT_PYTHON=OFF