Skip to contentSkip to conversation

Support added to read system information from BIOS and verify it with Xen.

PATCH In review Rita Sinha 3 participants 7 messages Oct 21, 2014

lore
Share & tools
lore

Rita Sinha

author
#0 lore raw

PATCH v2 1/1 Support added to read system information from BIOS and verify it with Xen.

This patch is in response to
http://wiki.xenproject.org/wiki/Outreach_Program_Projects#CPU.2FRAM.2FPCI_diagram_tool
project for applying to OPW-Round9.It adds support for reading system architecture information from BIOS and verifies it with Xen via xl toolstack.

---
 dmidecode.pl | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 dmidecode.pl
dmidecode.pl new file +61 -0
new file mode 100644
index 0000000..8556cfd
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+
+# dmidecode.pl - a script to read the system architecture information
+# directly from the BIOS and verify with xen.  Only for Linux.
+#
+# Rita Sinha ([email protected])
+# OPW Program-Round9
+# 21/10/14
+
+`id -u` == 0 || die "must be run as root";
+
+open(DmiFh, "/usr/sbin/dmidecode |") or
+  die "problem running dmidecode";
+$DmiNumProcs = 0;
+$DmiNumSockets = 0;
+while(<DmiFh>)
+  {
+    next unless /Central Processor/;
+    # We've found a processor (or at least a socket), keep going
+    while(<DmiFh>)
+	{
+	  # Keep walking the dmidecode output to find out if
+	  # the socket has a processor in it.
+	  last if /^Handle/;
+	  next unless /Status/;
+	  $DmiNumSockets += 1;
+	  /Populated/ and $DmiNumProcs += 1;
+	  last;
+	}
+  }
+close DmiFh;
+
+open(CpuInfoFh, "/proc/cpuinfo") || die "failed to open /proc/cpuinfo!";
+$CpuInfoNumProcs = 0;
+while(<CpuInfoFh>)
+  {
+    next unless /^processor.*:/;
+    ($CpuInfoNumProcs) += (/^processor.*: (\d+)/);
+  }
+close CpuInfoFh;
+
+my @command = `xl list`;
+my @xen_values = split(' ', $command[1]);
+
+
+if ( $DmiNumProcs != $CpuInfoNumProcs )
+  {
+    print "Warning: dmidecode reports $DmiNumProcs processors, kernel reports $CpuInfoNumProcs processors.\n";
+  }
+
+if ( $DmiNumProcs != $DmiNumSockets )
+  {
+    print "Info: dmidecode reports $DmiNumSockets cpu sockets, but only $DmiNumProcs processors.\n";
+  }
+
+if ( $DmiNumProcs != @xen_values[3] )
+  {
+    print "Warning: dmidecode reports $DmiNumProcs processors, xen reports $xenCpus processors\n";
+  }
+
+
Signature · 8 lines
1.8.3.1

The information contained in this electronic mail transmission 
may be privileged and confidential, and therefore, protected 
from disclosure. If you have received this communication in 
error, please notify us immediately by replying to this 
message and deleting it from your computer without copying 
or disclosing it.
#1 lore raw
Quoted 7 lines · Rita Sinha

This patch is in response to
http://secure-web.cisco.com/1YB1awPInStO2hrLa12KgfqobN6IDb1NLSm9NDTo00PshSMkAjWOlHjGJGcermXIpIZUvx3-fqRwDbSnhthheWCKKPOn5XvXx826jIO9jEhbTjUrPXeSn7NTVUCES71yLs1nX_OAbMCmg1MPlywqp3SUGT6O973O-mDSzQty_mYU/http%3A%2F%2Fwiki.xenproject.org%2Fwiki%2FOutreach_Program_Projects#CPU.2FRAM.2FPCI_diagram_tool
project for applying to OPW-Round9.It adds support for reading system architecture information from BIOS and verifies it with Xen via xl toolstack.

---
 dmidecode.pl | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Which git tree is this against? It certainly wouldn't be correct to dump this into the toplevel of xen.git.

Quoted 70 lines
 1 file changed, 61 insertions(+)
 create mode 100644 dmidecode.pl
dmidecode.pl new file +61 -0
new file mode 100644
index 0000000..8556cfd
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+
+# dmidecode.pl - a script to read the system architecture information
+# directly from the BIOS and verify with xen.  Only for Linux.
+#
+# Rita Sinha ([email protected])
+# OPW Program-Round9
+# 21/10/14
+
+`id -u` == 0 || die "must be run as root";
+
+open(DmiFh, "/usr/sbin/dmidecode |") or
+  die "problem running dmidecode";
+$DmiNumProcs = 0;
+$DmiNumSockets = 0;
+while(<DmiFh>)
+  {
+    next unless /Central Processor/;
+    # We've found a processor (or at least a socket), keep going
+    while(<DmiFh>)
+	{
+	  # Keep walking the dmidecode output to find out if
+	  # the socket has a processor in it.
+	  last if /^Handle/;
+	  next unless /Status/;
+	  $DmiNumSockets += 1;
+	  /Populated/ and $DmiNumProcs += 1;
+	  last;
+	}
+  }
+close DmiFh;
+
+open(CpuInfoFh, "/proc/cpuinfo") || die "failed to open /proc/cpuinfo!";
+$CpuInfoNumProcs = 0;
+while(<CpuInfoFh>)
+  {
+    next unless /^processor.*:/;
+    ($CpuInfoNumProcs) += (/^processor.*: (\d+)/);
+  }
+close CpuInfoFh;
+
+my @command = `xl list`;
+my @xen_values = split(' ', $command[1]);
+
+
+if ( $DmiNumProcs != $CpuInfoNumProcs )
+  {
+    print "Warning: dmidecode reports $DmiNumProcs processors, kernel reports $CpuInfoNumProcs processors.\n";
+  }
+
+if ( $DmiNumProcs != $DmiNumSockets )
+  {
+    print "Info: dmidecode reports $DmiNumSockets cpu sockets, but only $DmiNumProcs processors.\n";
+  }
+
+if ( $DmiNumProcs != @xen_values[3] )
+  {
+    print "Warning: dmidecode reports $DmiNumProcs processors, xen reports $xenCpus processors\n";
+  }
+
+
author
#2 lore raw

Hi Ian,

This is against the
http://xenbits.xen.org/git-http/people/andrewcoop/hwloc.git tree not xen.git.

Regards,
Rita Sinha

Quoted 84 lines · Ian Campbell
Quoted 7 lines · Rita Sinha

This patch is in response to
http://secure-web.cisco.com/1YB1awPInStO2hrLa12KgfqobN6IDb1NLSm9NDTo00PshSMkAjWOlHjGJGcermXIpIZUvx3-fqRwDbSnhthheWCKKPOn5XvXx826jIO9jEhbTjUrPXeSn7NTVUCES71yLs1nX_OAbMCmg1MPlywqp3SUGT6O973O-mDSzQty_mYU/http%3A%2F%2Fwiki.xenproject.org%2Fwiki%2FOutreach_Program_Projects#CPU.2FRAM.2FPCI_diagram_tool
project for applying to OPW-Round9.It adds support for reading system architecture information from BIOS and verifies it with Xen via xl toolstack.

---
 dmidecode.pl | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Which git tree is this against? It certainly wouldn't be correct to dump this into the toplevel of xen.git.

Quoted 70 lines
 1 file changed, 61 insertions(+)
 create mode 100644 dmidecode.pl
dmidecode.pl new file +61 -0
new file mode 100644
index 0000000..8556cfd
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+
+# dmidecode.pl - a script to read the system architecture information
+# directly from the BIOS and verify with xen.  Only for Linux.
+#
+# Rita Sinha ([email protected])
+# OPW Program-Round9
+# 21/10/14
+
+`id -u` == 0 || die "must be run as root";
+
+open(DmiFh, "/usr/sbin/dmidecode |") or
+  die "problem running dmidecode";
+$DmiNumProcs = 0;
+$DmiNumSockets = 0;
+while(<DmiFh>)
+  {
+    next unless /Central Processor/;
+    # We've found a processor (or at least a socket), keep going
+    while(<DmiFh>)
+     {
+       # Keep walking the dmidecode output to find out if
+       # the socket has a processor in it.
+       last if /^Handle/;
+       next unless /Status/;
+       $DmiNumSockets += 1;
+       /Populated/ and $DmiNumProcs += 1;
+       last;
+     }
+  }
+close DmiFh;
+
+open(CpuInfoFh, "/proc/cpuinfo") || die "failed to open /proc/cpuinfo!";
+$CpuInfoNumProcs = 0;
+while(<CpuInfoFh>)
+  {
+    next unless /^processor.*:/;
+    ($CpuInfoNumProcs) += (/^processor.*: (\d+)/);
+  }
+close CpuInfoFh;
+
+my @command = `xl list`;
+my @xen_values = split(' ', $command[1]);
+
+
+if ( $DmiNumProcs != $CpuInfoNumProcs )
+  {
+    print "Warning: dmidecode reports $DmiNumProcs processors, kernel reports $CpuInfoNumProcs processors.\n";
+  }
+
+if ( $DmiNumProcs != $DmiNumSockets )
+  {
+    print "Info: dmidecode reports $DmiNumSockets cpu sockets, but only $DmiNumProcs processors.\n";
+  }
+
+if ( $DmiNumProcs != @xen_values[3] )
+  {
+    print "Warning: dmidecode reports $DmiNumProcs processors, xen reports $xenCpus processors\n";
+  }
+
+
#4 lore raw
In reply to Rita Sinha

dmidecode.pl line 58

Quoted 5 lines · Rita Sinha
dmidecode.pl new file +4 -0
+my @command = `xl list`;
+my @xen_values = split(' ', $command[1]);
 
+if ( $DmiNumProcs != @xen_values[3] )
+    print "Warning: dmidecode reports $DmiNumProcs processors, xen reports $xenCpus processors\n";

Is a warning expected if dom0 is booted with dom0_max_vcpus=N?

Olaf

author
#5 lore raw

Hi Olaf,

Quoted 3 lines

Is a warning expected if dom0 is booted with dom0_max_vcpus=N?

My current script would not issue any warning even if dom0 is booted with dom0_max_vcpus=N.

Do you thing this case needs to be handled?

I am generating a warning only if BIOS is lying about the number of vpus or under the influence of virtualization, sysfs and proc interfaces information is no longer accurate, particularly any information based around numbers of cpus.

Regards,
Rita Sinha

#6 lore raw
Quoted 5 lines · Rita Sinha
Quoted 1 line

Is a warning expected if dom0 is booted with dom0_max_vcpus=N?

My current script would not issue any warning even if dom0 is booted with dom0_max_vcpus=N.

Do you thing this case needs to be handled?

I have no idea what this script is all about. It just looked like "xl list" will report something else for dom0 than dmidecode for the whole host.

Olaf