diff --git a/generators/oar-properties/lib/lib-oar-properties.rb b/generators/oar-properties/lib/lib-oar-properties.rb index 3cbd22b9c86f216624580fb5724dc8cdcc6013fd..44cfd79388e8691e068933c91e20142c31d290f5 100755 --- a/generators/oar-properties/lib/lib-oar-properties.rb +++ b/generators/oar-properties/lib/lib-oar-properties.rb @@ -45,28 +45,59 @@ def get_node_properties(cluster_uid, cluster, node_uid, node) h['cputype'] = [node['processor']['model'], node['processor']['version']].join(' ') h['cpufreq'] = node['processor']['clock_speed']/1_000_000_000.0 h['disktype'] = (node['storage_devices'].first[1] || {})['interface'] - h['ethnb'] = node['network_adapters'].values.select{|na| na['interface'] =~ /ethernet/i}.select{|nb| nb['mounted'] == true || nb['mountable'] == true}.length - eth10g = node['network_adapters'].values.select{|na| na['interface'] =~ /ethernet/i}.select{|nb| nb['mounted'] == true || nb['mountable'] == true} - h['eth10g'] = eth10g.detect{|na| na['rate'] == 10_000_000_000}.nil? ? false : true + # ETH + ni_mountable = node['network_adapters'].values.select{|na| na['interface'] =~ /ethernet/i}.select{|nb| nb['mounted'] == true || nb['mountable'] == true} + ni_fastest = ni_mountable.max_by{|na| na['rate']} + + h['eth_count'] = ni_mountable.length + h['eth_rate'] = ni_fastest['rate'] / 1_000_000_000 + + # INFINIBAND + ni_mountable = node['network_adapters'].values.select{|na| na['interface'] =~ /infiniband/i}.select{|nb| nb['mounted'] == true || nb['mountable'] == true} + ni_fastest = ni_mountable.max_by{|na| na['rate']} + ib_map = {0 => 'NO', 10 => 'SDR', 20 => 'DDR', 40 => 'QDR', 56 => 'FDR'} - ib10g = node['network_adapters'].values.detect{|na| na['interface'] =~ /infiniband/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 10_000_000_000} - h['ib10g'] = ib10g ? true : false - h['ib10gmodel'] = ib10g ? ib10g['version'] : 'none' + h['ib_count'] = ni_mountable.length + h['ib_rate'] = ni_mountable.length > 0 ? ni_fastest['rate'] / 1_000_000_000 : 0 + h['ib'] = ib_map[h['ib_rate']] - ib20g = node['network_adapters'].values.detect{|na| na['interface'] =~ /infiniband/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 20_000_000_000} - h['ib20g'] = ib20g ? true : false - h['ib20gmodel'] = ib20g ? ib20g['version'] : 'none' + # MYRINET + ni_mountable = node['network_adapters'].values.select{|na| na['interface'] =~ /myri/i}.select{|nb| nb['mounted'] == true || nb['mountable'] == true} + ni_fastest = ni_mountable.max_by{|na| na['rate']} + myri_map = {0 => 'NO', 2 => 'Myrinet-2000', 10 => 'Myri-10G'} - ib40g = node['network_adapters'].values.detect{|na| na['interface'] =~ /infiniband/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 40_000_000_000} - h['ib40g'] = ib40g ? true : false - h['ib40gmodel'] = ib40g ? ib40g['version'] : 'none' + h['myri_count'] = ni_mountable.length + h['myri_rate'] = ni_mountable.length > 0 ? ni_fastest['rate'] / 1_000_000_000 : 0 + h['myri'] = myri_map[h['myri_rate']] - ib56g = node['network_adapters'].values.detect{|na| na['interface'] =~ /infiniband/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 56_000_000_000} - h['ib56g'] = ib56g ? true : false - h['ib56gmodel'] = ib56g ? ib56g['version'] : 'none' + myri10g = node['network_adapters'].values.detect{|na| na['interface'] =~ /myri/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 10_000_000_000} + h['myri10g'] = myri10g ? true : false + h['myri10gmodel'] = myri10g ? myri10g['version'] : 'none' + + myri2g = node['network_adapters'].values.detect{|na| na['interface'] =~ /myri/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 2_000_000_000} + h['myri2g'] = myri2g ? true : false + h['myri2gmodel'] = myri2g ? myri2g['version'] : 'none' - h['ib'] = h['ib10g'] || h['ib20g'] || h['ib40g'] || h['ib56g'] + # TO BE REMOVED + h['ethnb'] = h['eth_count'] + h['eth10g'] = (h['eth_rate'] == 10 ? true : false) + + h['ib10g'] = (h['ib_rate'] == 10 ? true : false) + h['ib20g'] = (h['ib_rate'] == 20 ? true : false) + h['ib40g'] = (h['ib_rate'] == 40 ? true : false) + h['ib56g'] = (h['ib_rate'] == 56 ? true : false) + + h['ib10gmodel'] = 'none' + h['ib20gmodel'] = 'none' + h['ib40gmodel'] = 'none' + h['ib56gmodel'] = 'none' + if h['ib_rate'] > 0 + ni_mountable = node['network_adapters'].values.select{|na| na['interface'] =~ /infiniband/i}.select{|nb| nb['mounted'] == true || nb['mountable'] == true} + ni_fastest = ni_mountable.max_by{|na| na['rate']} + h["ib#{h['ib_rate']}gmodel"] = ni_fastest['version'] rescue 'none' + end + #h['ib'] = h['ib10g'] || h['ib20g'] || h['ib40g'] || h['ib56g'] h['ib_sdr'] = h['ib10g'] h['ib_ddr'] = h['ib20g'] h['ib_qdr'] = h['ib40g'] @@ -77,16 +108,11 @@ def get_node_properties(cluster_uid, cluster, node_uid, node) h['ib_qdr_model'] = h['ib40gmodel'] h['ib_fdr_model'] = h['ib56gmodel'] - myri10g = node['network_adapters'].values.detect{|na| na['interface'] =~ /myri/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 10_000_000_000} - h['myri10g'] = myri10g ? true : false - h['myri10gmodel'] = myri10g ? myri10g['version'] : 'none' - - myri2g = node['network_adapters'].values.detect{|na| na['interface'] =~ /myri/i && ( na['mounted'] == true || na['mountable'] == true ) && na['rate'] == 2_000_000_000} - h['myri2g'] = myri2g ? true : false - h['myri2gmodel'] = myri2g ? myri2g['version'] : 'none' - - h['myri'] = h['myri2g'] || h['myri10g'] + h['myri2g'] = (h['myri_rate'] == 2 ? true : false) + h['myri10g'] = (h['myri_rate'] == 10 ? true : false) + #h['myri'] = h['myri2g'] || h['myri10g'] + # h['memcore'] = node['main_memory']['ram_size']/node['architecture']['smt_size']/MiB h['memcpu'] = node['main_memory']['ram_size']/node['architecture']['smp_size']/MiB h['memnode'] = node['main_memory']['ram_size']/MiB