Giter VIP home page Giter VIP logo

Comments (13)

samveen avatar samveen commented on June 12, 2024
  • It will be quicker to build the updated genesis-base locally in your environment.
  • As you are building it locally, why not just add a modprobe ice at
    instead of this whole if conditional - this can be maintained as part of a organization-local patch-set to apply. We've had to do this for xCAT customizations that were too specific for our environment as compared to upstream xCAT.

from xcat-core.

abhishek-sa1 avatar abhishek-sa1 commented on June 12, 2024

@samveen It is required to load other drivers also using modprobe as we have to support multiple NIC interfaces available. Thats the reason added loop for all drivers in modules.dep file for x86_64 architecture. Similar loop present for ppc64 architecture as well. The drivers which are not required is excluded by added grep -vE option as mentioned in the script.

Can I create PR for this change and is it possible to create a new xCAT genesis base rpm file in next release and keep in the tarball?

from xcat-core.

samveen avatar samveen commented on June 12, 2024

@abhishek-sa1 what I mean is that that on x86_64 platform the command that you run the give a lot more output than just network drivers:

cat /lib/modules/$KERVER/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print \$1}'

The exception list list on x86_64 will need to be much greater than just these.

from xcat-core.

abhishek-sa1 avatar abhishek-sa1 commented on June 12, 2024

@samveen
Without adding modprobe for all drivers in x86_64, custom genesis base image ss getting stuck for other Intel and Broadcom NIC cards as mentioned below:
image

Initially I had same block like it is present in ppc64. For ppc64 also we are loading all drivers in module.dep file. Is there any reason we are loading all drivers in ppc64?

for line in `cat /lib/modules/$KERVER/modules.dep | awk -F: '{print \$1}' | sed -e "s/\(.*\)\.ko.*/\1/"`; do

elif [[ ${ARCH} =~ x86_64 ]]; then
    # load all network driver modules listed in /lib/modules/<kernel>/modules.dep file
    KERVER=`uname -r`
    for line in `cat /lib/modules/$KERVER/modules.dep | awk -F: '{print \$1}' | sed -e "s/\(.*\)\.ko.*/\1/"`; do
        if [[ $line =~ "kernel/drivers/net" ]]; then
            modprobe `basename $line`
        fi
    done
fi

Reason for adding tunnel|ieee|ifb|bond|dummy in exception list is due to unwanted NICs which are getting loaded in genesis image as mentioned below.
image

Reason for adding fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci is due to modprobe error visible on the screen while booting genesis image.
image

from xcat-core.

samveen avatar samveen commented on June 12, 2024

@abhishek-sa1 Filtering for kernel/drivers/net and adding line count at the end of the grep as below:

cat /lib/modules/$KERVER/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print $1}' |grep 'kernel/drivers/net'| wc -l

I get 236 modules on a Centos 7 system: that is 236 modules getting loaded. I expect you will get a similar number too. All this is not required. (for example WiFi or USB networking drivers).

Instead of loading drivers uselessly, build a custom genesis image for your environment , after loading only those modules that your environment needs at :

Just simple modprobe ice should be enough. If not, add the other required modules to modprobe as well, instead of trying to load all modules as below:

for mod in  "ice" "and" "other" "modules" ; do
            modprobe $mod
done

from xcat-core.

abhishek-sa1 avatar abhishek-sa1 commented on June 12, 2024

@samveen in ppc64 architecture we are loading all 252 modules. We need all drivers in ppc64?

if [[ ${ARCH} =~ ppc64 ]]; then
# load all network driver modules listed in /lib/modules/<kernel>/modules.dep file
KERVER=`uname -r`
for line in `cat /lib/modules/$KERVER/modules.dep | awk -F: '{print \$1}' | sed -e "s/\(.*\)\.ko.*/\1/"`; do
if [[ $line =~ "kernel/drivers/net" ]]; then
modprobe `basename $line`
fi
done

from xcat-core.

abhishek-sa1 avatar abhishek-sa1 commented on June 12, 2024

@samveen we are using RHEL8 for building rpm. Not CentOS7.

from xcat-core.

samveen avatar samveen commented on June 12, 2024

@abhishek-sa1 did you run the test on RHEL8? what was the result of the test?

from xcat-core.

abhishek-sa1 avatar abhishek-sa1 commented on June 12, 2024

@samveen I had run buildrpm command to create genesis base rpm for x86_64 in RHEL8 and it was successful. I had removed existing genesis base rpm for x86_64 and installed new one which I created. I was able to boot genesis image in RHEL8.6. I could disover all nodes in bmc discovery method using this genesis image.

from xcat-core.

samveen avatar samveen commented on June 12, 2024

@abhishek-sa1 please run the following command on rhel8 and give me the output:

cat /lib/modules/$(uname -r)/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print $1}' |grep 'kernel/drivers/net'| wc -l

from xcat-core.

abhishek-sa1 avatar abhishek-sa1 commented on June 12, 2024

@samveen

[root@springcp ~]# cat /lib/modules/$(uname -r)/modules.dep |grep -vE 'tunnel|ieee|ifb|bond|dummy|fjes|hv_netvsc|ntb_netdev|xen-netfront|hdlc_fr|dlci'| awk -F: '{print $1}' |grep 'kernel/drivers/net'| wc -l
249

from xcat-core.

samveen avatar samveen commented on June 12, 2024

@abhishek-sa1 As you can see, loading 249 modules will be overkill, not to mention take up kernel memory needlessly.

That is why I proposed that you add just the modules you require rather than try and pick from the kernel module dependency list as below:

for mod in  "ice" "and" "other" "modules" ; do
            modprobe $mod
done

from xcat-core.

abhishek-sa1 avatar abhishek-sa1 commented on June 12, 2024

@samveen Thanks for the information.

from xcat-core.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.