Installs the InfiniBand software stack.
- CentOS 6 & 7 x86_64
Standard usage to enable InfiniBand support
class { 'infiniband': }
Define a IBoIP interface
class { 'infiniband':
interfaces => {
'ib0' => {'ipaddr' => '192.168.1.1', 'netmask' => '255.255.255.0'}
}
}
infiniband
: Installs and configures a system to use InfiniBand
infiniband::install
: Installs the InfiniBand packages.infiniband::config
: Manages the rdma.conf file and the mlx4_core module options.infiniband::service
: Manages the rdma and ibacm services.infiniband::providers
: Creates infiniband::interface defined types based on the interfaces parameter.infiniband::params
: Sets default values based on theosfamily
andhas_infiniband
facts.
The packges to install infiniband support. Default is undef.
If undef the entire set of Infiniband Support packages will be installed.
If true, the packages in optional_packages
are installed (defaults to true).
RDMA service ensure parameter. Default to 'running' if has_infiniband
fact is 'true', and 'stopped' if 'has_infiniband' fact is 'false'.
RDMA service enable parameter. Default to true if has_infiniband
fact is 'true', and false if 'has_infiniband' fact is 'false'.
RDMA service name (defaults to 'rdma').
RDMA service has_status parameter (defaults to true).
RDMA service has_restart parameter (defaults to true).
ibacm service ensure parameter. Default to 'running' if has_infiniband
fact is 'true', and 'stopped' if 'has_infiniband' fact is 'false'.
ibacm service enable parameter. Default to true if has_infiniband
fact is 'true', and false if 'has_infiniband' fact is 'false'.
ibacm service name (defaults to 'ibacm').
ibacm service has_status parameter (defaults to true).
ibacm service has_restart parameter (defaults to true).
The RDMA service configuration path (defaults to '/etc/rdma/rdma.conf').
Sets the IPOIB_LOAD
setting for the RDMA service (defaults to 'yes').
Sets the SRP_LOAD
setting for the RDMA service (defaults to 'no').
Sets the ISER_LOAD
setting for the RDMA service (defaults to 'no').
Sets the RDS_LOAD
setting for the RDMA service (defaults to 'no').
Sets the FIXUP_MTRR_REGS
setting for the RDMA service (defaults to 'no').
Sets the NFSoRDMA_LOAD
setting for the RDMA service (defaults to 'yes').
Sets the NFSoRDMA_PORT
setting for the RDMA service (defaults to 2050).
Boolean that determines if '/etc/modprobe.d/mlx4_core.conf' should be managed (defaults to true).
Sets the mlx4_core module's 'log_num_mtt' value. Defaults to undef.
When the value is undef the value is determined using the calc_log_num_mtt
parser function.
Sets the mlx4_core module's 'log_mtts_per_seq' value. Defaults to 3.
This Hash can be used to define infiniband::interface
resources (defaults to an empty Hash).
Creates the ifcfg file for an IBoIP interface
infiniband::interface { 'ib0':
ipaddr => '192.168.1.1',
netmask => '255.255.255.0',
}
String: the resource title. Sets the interfaces name, for example 'ib0'.
String: required, no default. The IPADDR for the infiniband interface.
String: required, no default. The NETMASK for the infiniband interface.
String: defaults to undef. The GATEWAY for the infiniband interface.
String: defaults to 'present'. Sets if the infiniband::interface should be present or absent.
Boolean: defaults to true. Sets if the infiniband::interface should be enabled.
String: defaults to 'yes'. The CONNECTED_MODE for the infiniband interface.
String: defaults to undef. The MTU for the infiniband interface.
Boolean: defaults to true. By default the network service gets notified and therefore restarted when one or more interfaces are created, changed or removed. If set to false, the changes to the config files is done without notifying the network service, which then can/must be done manually at a later point. Setting this to false also enables to use another module for handling the network service.
Determine if the system's hardware supports InfiniBand.
Reports the firmware version of the InfiniBand interface card.
NOTE: Only supports getting the value from the first interface card found.
Returns the board_id (PSID) of the InfiniBand interface card.
NOTE: Only supports getting the value from the first interface card found.
Returns the rate of the InfiniBand interface card.
NOTE: Only supports getting the value from the first interface card found.
This function calculates the appropriate value for mlx4_core module's 'log_num_mtt' parameter.
The formula is max_reg_mem = (2^log_num_mtt) * (2^log_mtts_per_seg) * (page_size_bytes)
. This function finds the
log_num_mtt necessary to make 'max_reg_mem' twice the size of system's RAM. Ref: http://community.mellanox.com/docs/DOC-1120.
Usage:
calc_log_num_mtt(memorysize_mb
, log_mtts_per_seg
, page_size_bytes
)
- memorysize_mb - The system's memory size in MBs. This argument is required.
- log_mtts_per_seg - The value for log_mtts_per_seg. Defaults to '3' if undefined.
- page_size_bytes - The system's page size in bytes. Defaults to '4096' if undefined.
Examples:
If $::memorysize_mb
is 129035.57
calc_log_num_mtt($::memorysize_mb, 3)
Would return 23
calc_log_num_mtt($::memorysize_mb, 1)
Would return 25
Testing requires the following dependencies:
- rake
- bundler
Install gem dependencies
bundle install
Run unit tests
bundle exec rake test
If you have Vagrant >= 1.2.0 installed you can run system tests
bundle exec rake beaker
- Additional facts for IB firmware version, card model, etc.
- Refactor the infiniband facts to be dynamic based on ports found
- Use structured facts based on IB ports found