aligungr / UERANSIM

Open source 5G UE and RAN (gNodeB) implementation.
GNU General Public License v3.0
776 stars 319 forks source link

Do UERANSIM works on Redhat ? #345

Open Trauck opened 3 years ago

Trauck commented 3 years ago

Hi, i have installed an open5G core on Kubernetes and i would like to install a UERANSIM too.

I have followed your wiki installation but it seems that it didn't worked on RedHat.

My g++ version is 9.3.0 and my cmake version is 3.20.3. I'm on a Redhat Server release 7.8.

I've got thoses issues :

image

Thank you in advance.

aligungr commented 3 years ago

Hi @Trauck

There is a mistake in CMake file. I will fix this to the evening.

Regards

lee850220 commented 3 years ago

@aligungr In lastest version, I compiled source code with "-j" flag, I got oom error message. But without "-j" flag it can build normally. (I gave it 8GB memory, and before this version, I only used 2GB memory can build it, and this hardware has 8 cores) P.S. After failed to compile, it re-run it with "-j", it sucessfully built. image image image

OOM message image

aligungr commented 3 years ago

@Trauck

I fixed the CMakeList, you can try again with the latest master branch.


@lee850220

makefile in the root folder of UERANSIM actually does not build the project itself. But it just triggers CMake to build it, therefore -j has no effect for the makefile located in the root directory.

However if you want to use a parallel build, you can execute the CMake build command with -j command. (For example by modifying the makefile in the root folder, but I'm not sure if this would remove the OOM error) And otherwise there should not be a difference between the previous and the latest versions of the UERANSIM.

Thanks

Trauck commented 3 years ago

Thank you for your quick answer.

Now, i have different kind of errors.

Some warnings, that means that const is an extension of GCC. image

And two differents errors : image This one for every declaration of "static_assert()".

and this one image

for every call at "if constexpr"

If you need more information about my system, you are free to ask.

aligungr commented 3 years ago

@Trauck

This time, the error seems like a gcc version problem. And I could not detect any problem in our code-base.

Trauck commented 3 years ago

Well, i've tried with a gcc 9.3 and 9.4 and i have the exact same error.

I don't know where it could come from.

lee850220 commented 3 years ago

@lee850220

makefile in the root folder of UERANSIM actually does not build the project itself. But it just triggers CMake to build it, therefore -j has no effect for the makefile located in the root directory.

However if you want to use a parallel build, you can execute the CMake build command with -j command. (For example by modifying the makefile in the root folder, but I'm not sure if this would remove the OOM error) And otherwise there should not be a difference between the previous and the latest versions of the UERANSIM.

Thanks

This is weird, I used command with "-j" flag, also assigned a number of thread to use, and it took effect with different compile time. When number increase, it compiled faster and consumed more memory. If number lower than 4, it did not cause OOM. P.S. I did not modify Makefile.

Trauck commented 3 years ago

I'm not sure but it seems that the problem come from a librairy that is call during the make. Some files call the stdarg.h, stddef.h and stdint.h in the repository /usr/libexec/gcc/x86_64-redhat-linux/4.8.5 and i can't upgrade those files.

image

Same thing in the /usr/include/c++ repositorry, i have only the 4.8.5 version. image

aligungr commented 3 years ago

@Trauck

I think you should upgrade the g++ as well. Upgrading only gcc may not be sufficient perhaps.

Please try to upgrade to the latest version of g++ (not gcc).


@lee850220

I will check this, but now I want to ask if you are using the root makefile or the makefile generated by the cmake, while using -j command?

lee850220 commented 3 years ago

@aligungr I tested in both root and non-root user with instructions below. (This machine have 8 threads and 8GB memory could use)

htop in normal status: image

These are my operational process:

$ git clone https://github.com/aligungr/UERANSIM $ cd UERANSIM $ make -j ... [100%] Building CXX object src/ue/CMakeFiles/ue.dir/ue.cpp.o htop status: image and it occurred OOM. htop status: image

aligungr commented 3 years ago

@lee850220

Yes, -j option works, that was my mistake sorry.

But I'm not sure how we can overcome the OOM problem in this case. C++ compilations generally consume very large memory, especially while in parallel build. But some other processes in the machine may be consuming the majority of the RAM as well.

My thoughts about a possible solution:

  1. Increasing the RAM
  2. Compiling UERANSIM without -j
  3. Killing other memory-consuming processes in the environment
  4. Checking if there is anything to do with Linux's OOM Process Killer.