|
|
|
---+ Kernel Requirements for RAN
|
|
|
|
# Kernel Requirements for RAN
|
|
|
|
|
|
|
|
A simple OAI system doesn't require any special kernels and generally we use exclusively Ubuntu distributions with OAI (mainly because this is what we install at EURECOM). We currently support 14.04 LTS with a recent low-latency kernel (e.g. 3.17-low-latency), but some parts of OAI can be made to work with newer distributions. With ExpressMIMO2, you should consider installing Ubuntu 14.04 low-latency with a kernel version above 3.14.10 which provides preemptive scheduling. Below are precise instructions for the primary installations that we use at EURECOM.
|
|
|
|
---+++ <strong>Ubuntu 14.04 LTS/Linux Kernel version 3.17 (Recommended)<br /></strong>
|
|
|
|
A simple OAI system doesn't require any special kernels and generally
|
|
|
|
we use exclusively Ubuntu distributions with OAI (mainly because this
|
|
|
|
is what we install at EURECOM). We currently support 14.04 LTS with a
|
|
|
|
recent low-latency kernel (e.g. 3.17-low-latency), but some parts of
|
|
|
|
OAI can be made to work with newer distributions. With ExpressMIMO2,
|
|
|
|
you should consider installing Ubuntu 14.04 low-latency with a kernel
|
|
|
|
version above 3.14.10 which provides preemptive scheduling. Below are
|
|
|
|
precise instructions for the primary installations that we use at EURECOM.
|
|
|
|
|
|
|
|
<br />Install a standard 64-bit 14.04 system.
|
|
|
|
## Ubuntu 14.04 LTS/Linux Kernel version 3.17 (Recommended)
|
|
|
|
|
|
|
|
Remove all power management features in the BIOS (sleep states, in particular C-states) and CPU frequency scaling (Intel SpeedStep). In some cases, you can also do this with cpufreqtool.
|
|
|
|
* check this using this command: =watch grep \"cpu MHz\" /proc/cpuinfo=
|
|
|
|
* have a look at [[http://askubuntu.com/questions/523640/how-i-can-disable-cpu-frequency-scaling-and-set-the-system-to-performance ][this link ]]for further information.
|
|
|
|
* you may need to add intel_pstate=disable to the Linux boot options, i.e GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable" in /etc/default/grub, then perform update-grub
|
|
|
|
Note: when using the new kernel dead line scheduler, you need to have root access. Otherwise you get the following errors:
|
|
|
|
Install a standard 64-bit 14.04 system.
|
|
|
|
|
|
|
|
=[SCHED] eNB tx thread: sched_setattr failed: Invalid argument=
|
|
|
|
Remove all power management features in the BIOS (sleep states, in particular
|
|
|
|
C-states) and CPU frequency scaling (Intel SpeedStep). In some cases, you can
|
|
|
|
also do this with cpufreqtool.
|
|
|
|
|
|
|
|
* check this using this command: `watch grep \"cpu MHz\" /proc/cpuinfo`
|
|
|
|
* have a look at [this link](http://askubuntu.com/questions/523640/how-i-can-disable-cpu-frequency-scaling-and-set-the-system-to-performance)
|
|
|
|
for further information.
|
|
|
|
* you may need to add `intel_pstate=disable` to the Linux boot options,
|
|
|
|
i.e `GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable"`
|
|
|
|
in `/etc/default/grub`, then perform `update-grub`
|
|
|
|
|
|
|
|
Note: when using the new kernel dead line scheduler, you need to have
|
|
|
|
root access. Otherwise you get the following errors:
|
|
|
|
|
|
|
|
`[SCHED] eNB tx thread: sched_setattr failed: Invalid argument`
|
|
|
|
|
|
|
|
Dead line scheduler has been added in Linux kernel since version 3.14.10
|
|
|
|
|
|
|
|
If you update ubuntu 14.04 with latest Ubuntu 14.04 packages update:
|
|
|
|
|
|
|
|
_apt-get update; apt-get dist-upgrade_
|
|
|
|
```shell
|
|
|
|
apt-get update; apt-get dist-upgrade
|
|
|
|
```
|
|
|
|
|
|
|
|
you must have a suitable Kernel.
|
|
|
|
|
|
|
|
Nevertheless, you may want a specific kernel, such as high preemption frequency. For example, to install Ubuntu 14.10 kernel 3.17 on top of Ubuntu 14.04, 64-bit architecture and lowlatency (preemption at 1ms)
|
|
|
|
Nevertheless, you may want a specific kernel, such as high preemption
|
|
|
|
frequency. For example, to install Ubuntu 14.10 kernel 3.17 on top of
|
|
|
|
Ubuntu 14.04, 64-bit architecture and lowlatency (preemption at 1ms).
|
|
|
|
|
|
|
|
=version=3.17 <br />wget -r -e robots=off --accept-regex "(.*lowlatency.*amd64)|(all).deb" http://kernel.ubuntu.com/~kernel-ppa/mainline/v${version}-utopic/ <br />dpkg -i kernel.ubuntu.com/*/*/*/*deb=
|
|
|
|
```shell
|
|
|
|
version=3.17
|
|
|
|
wget -r -e robots=off --accept-regex "(.*lowlatency.*amd64)|(all).deb" http://kernel.ubuntu.com/~kernel-ppa/mainline/v${version}-utopic/
|
|
|
|
dpkg -i kernel.ubuntu.com/*/*/*/*deb
|
|
|
|
```
|
|
|
|
|
|
|
|
After a reboot, =uname -a= should give the following output:
|
|
|
|
After a reboot, `uname -a` should give the following output:
|
|
|
|
|
|
|
|
=Linux [NAME] 3.17-lowlatency #201408132253 SMP PREEMPT Thu Aug 14 03:01:44 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux=
|
|
|
|
`Linux [NAME] 3.17-lowlatency #201408132253 SMP PREEMPT Thu Aug 14 03:01:44 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux`
|
|
|
|
|
|
|
|
Note: To use legacy OpenAirInterface Makefiles and to compile Kernel modules, (the current procedure doesn't require this)<br />You need to add a link in Kernel source files as per this example
|
|
|
|
Note: To use legacy OpenAirInterface Makefiles and to compile Kernel modules,
|
|
|
|
(the current procedure doesn't require this), you need to add a link in Kernel
|
|
|
|
source files as per this example:
|
|
|
|
|
|
|
|
_export version=<your_kernel_version><br />ln -s /usr/src/linux-headers-${version}*lowlatency/include/generated/autoconf.h /lib/modules/${version}*lowlatency/build/include/linux_
|
|
|
|
---+++ *Disable CPU Frequency scaling*
|
|
|
|
``shell
|
|
|
|
export version=<your_kernel_version>
|
|
|
|
ln -s /usr/src/linux-headers-${version}*lowlatency/include/generated/autoconf.h /lib/modules/${version}*lowlatency/build/include/linux
|
|
|
|
```
|
|
|
|
|
|
|
|
## Disable CPU Frequency scaling
|
|
|
|
|
|
|
|
Install cpufrequtils:
|
|
|
|
<blockquote>
|
|
|
|
|
|
|
|
```shell
|
|
|
|
sudo apt-get install cpufrequtils
|
|
|
|
</blockquote>
|
|
|
|
```
|
|
|
|
|
|
|
|
Then edit the following file (if it doesn't exist, create it):
|
|
|
|
<blockquote>
|
|
|
|
|
|
|
|
sudo nano /etc/default/cpufrequtils
|
|
|
|
</blockquote>
|
|
|
|
```shell
|
|
|
|
sudo vi /etc/default/cpufrequtils
|
|
|
|
```
|
|
|
|
|
|
|
|
And add the following line to it:
|
|
|
|
<blockquote>
|
|
|
|
|
|
|
|
```shell
|
|
|
|
GOVERNOR="performance"
|
|
|
|
</blockquote>
|
|
|
|
```
|
|
|
|
|
|
|
|
Save and exit.
|
|
|
|
|
|
|
|
Now you need to disable ondemand daemon, otherwise after you reboot the settings will be overwriten.
|
|
|
|
<pre> sudo update-rc.d ondemand disable</pre>
|
|
|
|
|
|
|
|
```shell
|
|
|
|
sudo update-rc.d ondemand disable
|
|
|
|
```
|
|
|
|
|
|
|
|
You can check your settings with:
|
|
|
|
<blockquote>
|
|
|
|
|
|
|
|
```shell
|
|
|
|
cpufreq-info
|
|
|
|
</blockquote>
|
|
|
|
```
|
|
|
|
|
|
|
|
It will show a block of information for every core your processor has. Just check if all of then are in perfomance mode, and at the maximum speed of your processor.
|
|
|
|
It will show a block of information for every core your processor has. Just check
|
|
|
|
if all of then are in perfomance mode, and at the maximum speed of your processor.
|
|
|
|
|
|
|
|
---+++ Virtual Machine (VMWare, Virtual Box, etc)
|
|
|
|
## Virtual Machine (VMWare, Virtual Box, etc)
|
|
|
|
|
|
|
|
We do not recommend the usage of virtual machine usage for OAI due to the fact that some VMs do no export the CPU flags correctly, and CPU flags needs to be passed manually which might/might not work due to VM configuration. The resolution of this issue and possible solution is discussed here (http://lists.eurecom.fr/sympa/arc/openair4g-devel/2015-10/msg00041.html, <a href="https://gitlab.eurecom.fr/oai/openairinterface5g/issues/32" title="https://gitlab.eurecom.fr/oai/openairinterface5g/issues/32">https://gitlab.eurecom.fr/oai/openairinterface5g/issues/32</a>)
|
|
|
|
We do not recommend the usage of virtual machine usage for OAI due to the fact that
|
|
|
|
some VMs do no export the CPU flags correctly, and CPU flags needs to be passed
|
|
|
|
manually which might/might not work due to VM configuration. The resolution of this
|
|
|
|
issue and possible solution is discussed here
|
|
|
|
(http://lists.eurecom.fr/sympa/arc/openair4g-devel/2015-10/msg00041.html,
|
|
|
|
https://gitlab.eurecom.fr/oai/openairinterface5g/issues/32).
|
|
|
|
|
|
|
|
---+++ *Ubuntu 12.04 LTS (loosly supported)*
|
|
|
|
## Ubuntu 12.04 LTS (loosly supported)
|
|
|
|
|
|
|
|
For hard real-time with RTAI (ExpressMIMO2 or Ettus B210):
|
|
|
|
* [[OpenAirKernel357Ubuntu1204x86Setups][HOW-TO install RTAI 4.0 on a Ubuntu 12.04 LTS (3.x kernel) (Preferred)]]
|
|
|
|
For hard real-time with PREEMPT-RT (ExpressMIMO2, Ettus B210 or Ethernet)
|
|
|
|
* [[RtLinux][HOW-TO install the PREEMPT-RT Linux kernel]]
|
|
|
|
-- User.NavidNikaein - 03 Jul 2015
|
|
|
|
|
|
|
|
---+ Kernel Requirements for Core Network
|
|
|
|
* [HOW-TO install RTAI 4.0 on a Ubuntu 12.04 LTS (3.x kernel) (Preferred)](OpenAirKernel357Ubuntu1204x86Setups)
|
|
|
|
|
|
|
|
For hard real-time with PREEMPT-RT (ExpressMIMO2, Ettus B210 or Ethernet):
|
|
|
|
|
|
|
|
* [HOW-TO install the PREEMPT-RT Linux kernel](RtLinux)
|
|
|
|
|
|
|
|
-- @navid.nikaein - 03 Jul 2015
|
|
|
|
|
|
|
|
# Kernel Requirements for Core Network
|
|
|
|
|
|
|
|
We currently support UBUNTU 14.04 LTS and UBUNTU 15.04 64 bits with a UBUNTU generic 3.19 kernel (more recent kernels above 3.19 may be tested too). Low latency kernels may be tested also.
|
|
|
|
We currently support UBUNTU 14.04 LTS and UBUNTU 15.04 64 bits with a
|
|
|
|
UBUNTU generic 3.19 kernel (more recent kernels above 3.19 may be tested
|
|
|
|
too). Low latency kernels may be tested also.
|
|
|
|
|
|
|
|
If your intent is to run the OAI core network software on the OAI eNB, then you need to run a low-latency 3.19 kernel on the eNB. |
|
|
|
If your intent is to run the OAI core network software on the OAI eNB,
|
|
|
|
then you need to run a low-latency 3.19 kernel on the eNB. |