Support added to read system information from BIOS and verify it with Xen.
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
@@ -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.
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.pldmidecode.pl new file +61
-0@@ -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"; + } + +
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.pldmidecode.pl new file +61
-0@@ -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"; + } + +
Quoted 5 lines · Rita Sinha
Hi Ian,
This is against the
http://xenbits.xen.org/git-http/people/andrewcoop/hwloc.git tree not xen.git.
Ah, I see. In which case please could you prefix $subject with "hwloc:" or something so I know whether or not I need to review.
Ian.
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
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
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