Knowing and understanding what is running on your Oracle Linux system is vital for proper maintenance and proper tuning. As operating systems are seen more and more as something that is just there and should not be hindrance for development, as we see the rise of container based solutions and serverless computing it might look like that the operating system becomes less and less important. However, the opposite is true, the operating system becomes more and more important as it need to be able to facilitate all the requirements from the containers and functions running on top of it without human intervention or at least as less human intervention as possible.
This brings that, if you operate a large deployment of servers and you have to ensure everything is automated and operating at the best of performance at any moment in time without having to touch the systems or at least as less as possible, you need to optimize it and automate it. To be able to do so you need to be able to understand every component and be able to check if you need it or that you can drop it. Whatever you do not need, drop it, it can be a security risk or it can be a consumer of resources without having the need for it.
Oracle Linux Kernel modules
Kernel modules are an important part of the Oracle Linux operating system, understanding them and being able to check what is loaded and what is not should be something that you need to understand. Kernel modules are pieces of code that can be loaded and unloaded into the kernel upon demand. They extend the functionality of the kernel without the need to reboot the system.
udev
Today, all necessary modules loading is handled automatically by udev, so if you do not need to use any out-of-tree kernel modules, there is no need to put modules that should be loaded at boot in any configuration file. However, there are cases where you might want to load an extra module during the boot process, or blacklist another one for your computer to function properly.
Kernel modules can be explicitly loaded during boot and are configured as a static list in files under /etc/modules-load.d/. Each configuration file is named in the style of /etc/modules-load.d/.conf. Configuration files simply contain a list of kernel modules names to load, separated by newlines. Empty lines and lines whose first non-whitespace character is # or ; are ignored.
lsmod
Checking which kernel modules are loaded in the kernel can be done by using the lsmod command. lsmod will list all the modules. Basically it is a representation of everything you will find in the /proc/modules file however in a somewhat more understandable way. An example of the lsmod command on an Oracle Linux system running in a Vagrant box is shown below:
This could be the starting point of investigating and finding out what is loaded and what is really needed, what is not needed and what might be a good addition in some cases.
modinfo
as you might not be checking your kernel modules on a daily basis you might not know which module is used for what purpose. In this case modinfo is coming to your reseque. If you want to know, for example, what the module snd_seq is used for you can check the details with modinfo as shown in the example below.
As you can see in the example above the snd_seq module is the Advanced Linux Sound Architecture sequencer developed by Frank van de Pol and Jaroslav Kysela. Taking this as an example, you can argue. do I need the snd_seq module if I run a server where I have no need for any sound.
Unloading "stuff" you do not need will ensure you have a faster boot sequence timing of your system, less resource consumption and as every component carries a risk of having an issue.... with less components you have theoretically less possible bugs.
In conclusion
optimizing your system by checking which kernel models should be loaded and which could be left out on your Oracle Linux system. However, when you just use it for common tasks you might not want to spend to much time on it. However, if you are building your own image or investing time in building a fully automated way of deploying servers fast in a CI/CD manner you might want to spend time on making sure only the components you really need are in the system and nothing else.
This brings that, if you operate a large deployment of servers and you have to ensure everything is automated and operating at the best of performance at any moment in time without having to touch the systems or at least as less as possible, you need to optimize it and automate it. To be able to do so you need to be able to understand every component and be able to check if you need it or that you can drop it. Whatever you do not need, drop it, it can be a security risk or it can be a consumer of resources without having the need for it.
Oracle Linux Kernel modules
Kernel modules are an important part of the Oracle Linux operating system, understanding them and being able to check what is loaded and what is not should be something that you need to understand. Kernel modules are pieces of code that can be loaded and unloaded into the kernel upon demand. They extend the functionality of the kernel without the need to reboot the system.
udev
Today, all necessary modules loading is handled automatically by udev, so if you do not need to use any out-of-tree kernel modules, there is no need to put modules that should be loaded at boot in any configuration file. However, there are cases where you might want to load an extra module during the boot process, or blacklist another one for your computer to function properly.
Kernel modules can be explicitly loaded during boot and are configured as a static list in files under /etc/modules-load.d/. Each configuration file is named in the style of /etc/modules-load.d/
lsmod
Checking which kernel modules are loaded in the kernel can be done by using the lsmod command. lsmod will list all the modules. Basically it is a representation of everything you will find in the /proc/modules file however in a somewhat more understandable way. An example of the lsmod command on an Oracle Linux system running in a Vagrant box is shown below:
[root@localhost ~]# lsmod Module Size Used by vboxsf 38491 1 ipv6 391530 20 [permanent] ppdev 8323 0 parport_pc 21178 0 parport 37780 2 ppdev,parport_pc sg 31734 0 pcspkr 2094 0 i2c_piix4 12269 0 snd_intel8x0 33895 0 snd_ac97_codec 127589 1 snd_intel8x0 ac97_bus 1498 1 snd_ac97_codec snd_seq 61406 0 snd_seq_device 4604 1 snd_seq snd_pcm 113293 2 snd_intel8x0,snd_ac97_codec snd_timer 26196 2 snd_seq,snd_pcm snd 79940 6 snd_intel8x0,snd_ac97_codec,snd_seq,snd_seq_device,snd_pcm,snd_timer soundcore 7412 1 snd e1000 134545 0 vboxvideo 42469 1 ttm 88927 1 vboxvideo drm_kms_helper 120123 1 vboxvideo drm 343055 4 vboxvideo,ttm,drm_kms_helper i2c_core 53097 3 i2c_piix4,drm_kms_helper,drm vboxguest 306752 3 vboxsf,vboxvideo sysimgblt 2595 1 vboxvideo sysfillrect 4093 1 vboxvideo syscopyarea 3619 1 vboxvideo acpi_cpufreq 12697 0 ext4 604127 2 jbd2 108826 1 ext4 mbcache 9265 1 ext4 sd_mod 36186 3 ahci 26684 2 libahci 27932 1 ahci pata_acpi 3869 0 ata_generic 3811 0 ata_piix 27059 0 video 15828 0 dm_mirror 14787 0 dm_region_hash 11613 1 dm_mirror dm_log 9657 2 dm_mirror,dm_region_hash dm_mod 106591 8 dm_mirror,dm_log [root@localhost ~]#
This could be the starting point of investigating and finding out what is loaded and what is really needed, what is not needed and what might be a good addition in some cases.
modinfo
as you might not be checking your kernel modules on a daily basis you might not know which module is used for what purpose. In this case modinfo is coming to your reseque. If you want to know, for example, what the module snd_seq is used for you can check the details with modinfo as shown in the example below.
[root@localhost ~]# modinfo snd_seq filename: /lib/modules/4.1.12-61.1.28.el6uek.x86_64/kernel/sound/core/seq/snd-seq.ko alias: devname:snd/seq alias: char-major-116-1 license: GPL description: Advanced Linux Sound Architecture sequencer. author: Frank van de Pol, Jaroslav Kysela srcversion: 88DDA62432337CC735684EE depends: snd,snd-seq-device,snd-timer intree: Y vermagic: 4.1.12-61.1.28.el6uek.x86_64 SMP mod_unload modversions parm: seq_client_load:The numbers of global (system) clients to load through kmod. (array of int) parm: seq_default_timer_class:The default timer class. (int) parm: seq_default_timer_sclass:The default timer slave class. (int) parm: seq_default_timer_card:The default timer card number. (int) parm: seq_default_timer_device:The default timer device number. (int) parm: seq_default_timer_subdevice:The default timer subdevice number. (int) parm: seq_default_timer_resolution:The default timer resolution in Hz. (int) [root@localhost ~]#
As you can see in the example above the snd_seq module is the Advanced Linux Sound Architecture sequencer developed by Frank van de Pol and
Unloading "stuff" you do not need will ensure you have a faster boot sequence timing of your system, less resource consumption and as every component carries a risk of having an issue.... with less components you have theoretically less possible bugs.
In conclusion
optimizing your system by checking which kernel models should be loaded and which could be left out on your Oracle Linux system. However, when you just use it for common tasks you might not want to spend to much time on it. However, if you are building your own image or investing time in building a fully automated way of deploying servers fast in a CI/CD manner you might want to spend time on making sure only the components you really need are in the system and nothing else.
No comments:
Post a Comment