[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Supporting reading of system information from BIOS.
On 14/10/14 05:44, Rita Sinha wrote: Thanks for having a stab at this. Some comments inline > 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 rather than from sysfs and proc interfaces > since in a virtualisation enviroment, some of this information is no longer > accurate, particularly any information based around numbers of cpus. Would you mind formatting this to 80 columns wide? Generally speaking, submission of patches need a Signed-off-by: tag. > --- > dmidecode.pl | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 51 insertions(+) > create mode 100644 dmidecode.pl > > diff --git a/dmidecode.pl b/dmidecode.pl > new file mode 100644 > index 0000000..76fdf78 > --- /dev/null > +++ b/dmidecode.pl > @@ -0,0 +1,51 @@ > +#!/usr/bin/perl > + > +# dmidecode.pl - a script to read the system architecture information > +# directly from the BIOS. Only for Linux. > +# > +# Rita Sinha (rita.sinha89@xxxxxxxxx) > +# OPW Program-Round9 > +# 14/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; > + > +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"; > + } > + Running this script in dom0 yields: [root@fusebot ~]# ./dmidecode.pl Warning: dmidecode reports 1 processors, kernel reports 4 processors. This is a Xeon E3-1240 v3 system where dom0 has 4 vcpus. Under Xen, each vcpu appears as a separate processor, which is why /proc/cpuinfo and dmidecode disagree about the processor count. This also goes to show that /proc/cpuinfo only sees the virtual layout, not the physical layout. I think it might be worth starting with a design of the first task we discussed, including the indented source of the information to be used. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |