[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Supporting reading of system information from BIOS.
On Tue, Oct 14, 2014 at 10:14:07AM +0530, Rita Sinha wrote: > > 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. Nice, thanks for taking this project on. Have you considered implementing something that functions the same as hwloc-gather-topology(1): http://manpages.ubuntu.com/manpages/saucy/man1/hwloc-gather-topology.1.html but instead of collecting information from /proc and /sys, it accesses DMI and ACPI tables directly? This would let you reuse the existing lstopo(1) command to display a graphical topology. --msw > --- > 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"; > + } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |