<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>codemonkey.org.uk &#187; x86info</title>
	<atom:link href="http://codemonkey.org.uk/tag/x86info/feed/" rel="self" type="application/rss+xml" />
	<link>http://codemonkey.org.uk</link>
	<description>Dave Jones' Linux &#38; opensource stuff.</description>
	<lastBuildDate>Tue, 03 Jan 2012 14:52:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>10 years of x86info.</title>
		<link>http://codemonkey.org.uk/2011/02/26/10-years-x86info/</link>
		<comments>http://codemonkey.org.uk/2011/02/26/10-years-x86info/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 18:06:03 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[x86info]]></category>

		<guid isPermaLink="false">http://codemonkey.org.uk/?p=301</guid>
		<description><![CDATA[On Mon Feb 26 2001, I committed the first version of x86info to CVS on sourceforge. The actual coding of that first version had happened during the week or so prior. The project began after seeing the program &#8216;cpuid&#8217; by Phil Karn. I had sent a few patches to Phil but never got any reply, [...]<p><a href="http://codemonkey.org.uk/2011/02/26/10-years-x86info/">10 years of x86info.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>On Mon Feb 26 2001, I committed the first version of x86info to CVS on sourceforge.  The actual coding of that first version had happened during the week or so prior.</p>
<p>The project began after seeing the program &#8216;cpuid&#8217; by Phil Karn.  I had sent a few patches to Phil but never got any reply, and no new release of cpuid appeared until months later (not including my patches).  As I ended up forking more and more of the code, I decided to push it out as &#8216;x86info&#8217; for the first time.  Phil did a few more releases, up until 2002, when the program was abandoned.</p>
<p>Over the years, x86info has seen 739 commits from at least 19 contributors (some patches written by others were committed in the CVS days without correct attribution).  The bulk of the commits were unsurprisingly mine.</p>
<p>The commit rate year by year is interesting.</p>
<p>2001 197<br />
2002 119<br />
2003 88<br />
2004 17<br />
2005 37<br />
2006 46<br />
2007 34<br />
2008 74<br />
2009 65<br />
2010 27<br />
2011 54</p>
<p>2003 was when I got hired at Red Hat, and the Fedora kernel pretty much became my life. 2004 I was doing RHEL4 too. The drop-off around that time is significant, and doesn&#8217;t recover until several years later.<br />
This year seems to be off to a good start <img src='http://codemonkey.org.uk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>x86info has been ported to Solaris and FreeBSD, and at one time, even to Microsoft Windows. That support was ultimately removed due to the number of invasive ifdefs present.  The various ports sometimes get broken due to lack of testing during development time, but afaik they are available in &#8216;ports&#8217; with whatever fixes need to be present.</p>
<p>Asides from the Linux kernel, this is the oldest project I&#8217;m involved in that is still seeing development.</p>
<p><a href="http://codemonkey.org.uk/2011/02/26/10-years-x86info/">10 years of x86info.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2011/02/26/10-years-x86info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>x86info processor topology parsing.</title>
		<link>http://codemonkey.org.uk/2009/12/11/x86info-processor-topology-parsing/</link>
		<comments>http://codemonkey.org.uk/2009/12/11/x86info-processor-topology-parsing/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 03:01:14 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[x86info]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=279</guid>
		<description><![CDATA[Today was my last working day of the year, as I&#8217;ve accumulated some ridiculous amount of time off that needs to be taken. Before I disappeared for three weeks, I wanted to get something finished that I&#8217;ve been working on for a while. I got close too. The development tree of x86info (ie, git or [...]<p><a href="http://codemonkey.org.uk/2009/12/11/x86info-processor-topology-parsing/">x86info processor topology parsing.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>Today was my last working day of the year, as I&#8217;ve accumulated some ridiculous amount of time off that needs to be taken.<br />
Before I disappeared for three weeks, I wanted to get something finished that I&#8217;ve been working on for a while.  I got close too.<br />
The <a href="http://www.codemonkey.org.uk/projects/x86info/">development tree of x86info</a> (ie, git or snapshots) now has a nifty new feature where after parsing all the processors it finds, it determines how they&#8217;re connected, and prints out what it thinks the topology looks like.</p>
<p>So where 1.25 used to print out garbage like..<br />
<code><br />
APIC ID: 0x1	Package: 0  Core: 0   SMT ID 1<br />
</code></p>
<p>The new code prints out something much more readable.<br />
<code><br />
Summary:<br />
This system has 1 dual-core processor with hyperthreading (2 threads per core) running at an estimated 2.95GHz<br />
Total processor threads: 4<br />
</code></p>
<p>I&#8217;ve thrown it at several different kinds of processor topologies (single/dual/quad core), with and without hyperthreading, and it seems to do the right thing in all cases.  Currently this code is Intel only. It may do the right thing on other vendors in some situations, but there are definitly cases where it doesn&#8217;t.</p>
<p>I&#8217;ll tackle the other vendors in the new year.  If you find any Intel systems where it doesn&#8217;t print out the right thing, drop me an email with x86info -a &#8211;debug.  (Don&#8217;t email me non-Intel ones, unless it does something really nasty like segfault).</p>
<p>Though as I&#8217;m on vacation, it&#8217;ll probably be the new year before I fix it up, unless I get bored.<br />
When the new year comes and I&#8217;ve added the other vendor support, I&#8217;ll roll out a 1.26 release with this and whatever else I have queued up.</p>
<p>Happy holidays.</p>
<p><a href="http://codemonkey.org.uk/2009/12/11/x86info-processor-topology-parsing/">x86info processor topology parsing.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2009/12/11/x86info-processor-topology-parsing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>x86info 1.24</title>
		<link>http://codemonkey.org.uk/2009/02/06/x86info-124/</link>
		<comments>http://codemonkey.org.uk/2009/02/06/x86info-124/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 17:24:36 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[x86info]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=139</guid>
		<description><![CDATA[I just pushed out a new release of x86info. Not a huge amount of stuff changed, but it has recognition for Atom, and Nehalem, which are becoming widespread enough that it&#8217;s worth doing a release. I also added a few older quad core CPUs that I previously overlooked last time I went through the spec [...]<p><a href="http://codemonkey.org.uk/2009/02/06/x86info-124/">x86info 1.24</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>I just pushed out a new release of <a href="http://www.codemonkey.org.uk/projects/x86info">x86info</a>.<br />
Not a huge amount of stuff changed, but it has recognition for Atom, and Nehalem, which are becoming widespread enough that it&#8217;s worth doing a release.  I also added a few older quad core CPUs that I previously overlooked last time I went through the spec update datasheets.</p>
<p>The results/ directory is looking a little neglected. If anyone wants to send me examples for CPUs not presently in there, I&#8217;ll get them added.  A zillion &#8216;core 2&#8242; entries isn&#8217;t really so interesting, so unless there&#8217;s a compelling difference between models, I&#8217;ll only add one from each generation.</p>
<p>Oh, and this release requires a minimum of glibc 2.4 (so did earlier ones for the last few releases, but now there&#8217;s an explicit check)</p>
<p><a href="http://codemonkey.org.uk/2009/02/06/x86info-124/">x86info 1.24</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2009/02/06/x86info-124/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>x86info glibc backwards compatibility.</title>
		<link>http://codemonkey.org.uk/2009/01/21/x86info-glibc-compatibility/</link>
		<comments>http://codemonkey.org.uk/2009/01/21/x86info-glibc-compatibility/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:28:19 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[backwards compatibility]]></category>
		<category><![CDATA[glibc]]></category>
		<category><![CDATA[x86info]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=95</guid>
		<description><![CDATA[Sometimes, backwards compatibility gets really ugly. Today I got a mail from someone who failed to compile x86info on some old system, because it had an old glibc. x86info uses the affinity system calls to bind processes to specific CPUs. I had forgotten all about it, but earlier versions of the interface in glibc were [...]<p><a href="http://codemonkey.org.uk/2009/01/21/x86info-glibc-compatibility/">x86info glibc backwards compatibility.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>Sometimes, backwards compatibility gets really ugly.<br />
Today I got a mail from someone who failed to compile x86info on some old system, because it had an old glibc.<br />
x86info uses the affinity system calls to bind processes to specific CPUs.  I had forgotten all about it, but earlier versions of the interface in glibc were a little unstable.<br />
Quoting the sched_getaffinity manpage:</p>
<blockquote><p>
VERSIONS<br />
The CPU affinity system calls were introduced in Linux kernel 2.5.8.  The library interfaces were introduced in glibc 2.3.  Initially, the glibc interfaces included a cpusetsize argument, typed as unsigned int.  In glibc 2.3.3, the cpusetsize argument was removed, but was then restored in glibc 2.3.4, with type size_t.
</p></blockquote>
<p>The email I got was kind enough to include <a href="http://files.pooryorick.com/b6983afd2ebe7c0e9f955a62d1c1734a1df6cd131516f81d95fc2a426fa5d3cb">a patch</a> that made it work on all possible combinations of the glibc, by using <a href="http://www.open-mpi.org/projects/plpa/">plpa</a>.  It&#8217;s neat that this rube goldberg machine can make it work with anything, but damn is it ever ugly.</p>
<p>I settled for <a href="http://git.choralone.org/?p=x86info.git;a=commitdiff;h=de50e1d2533cd3480979137fbd750006522dd379">a simpler &#8220;fix&#8221;</a></p>
<p>It&#8217;s a controversial answer, but sometimes, compatibility just isn&#8217;t worth it.</p>
<p><a href="http://codemonkey.org.uk/2009/01/21/x86info-glibc-compatibility/">x86info glibc backwards compatibility.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2009/01/21/x86info-glibc-compatibility/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>x86info hacking.</title>
		<link>http://codemonkey.org.uk/2009/01/15/x86info-hacking/</link>
		<comments>http://codemonkey.org.uk/2009/01/15/x86info-hacking/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 05:46:50 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[x86info]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=69</guid>
		<description><![CDATA[Spent much of the afternoon today working on some updates for x86info. The CPU database within it needs to be constantly updated whenever Intel (or any other vendor) release new processors. This means sifting through dozens of datasheets, and trying to come up with the logic to distinguish between them. Once upon a time, it [...]<p><a href="http://codemonkey.org.uk/2009/01/15/x86info-hacking/">x86info hacking.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>Spent much of the afternoon today working on some updates for x86info.  The CPU database within it needs to be constantly updated whenever Intel (or any other vendor) release new processors.  This means sifting through dozens of datasheets, and trying to come up with the logic to distinguish between them.  Once upon a time, it was a simple case of matching the cpuid family/model/stepping pair.  Then circa Pentium 3/Celeron era, things got more complicated, and you had to take the L2 cache size into consideration too.  As time went on, more and more things needed to be checked before you could make a decision.  The maximum MHz the CPU runs at for example. Or the number of cores on a die.  It&#8217;s all getting really, really complicated.</p>
<p>It&#8217;s further complicated by the fact that in some cases, Intel have re-used part numbers.</p>
<p>x86info is a mess of nested if&#8217;s and switches as a result of the above.   I toyed with the idea of making it somehow database driven a few years ago, but of course, it&#8217;s one of those projects that never seems to happen.  Maybe one day I&#8217;ll get around to it.</p>
<p>Today I added recognition of Nehalem, Atom and a bunch of older Core2&#8242;s that I had missed in the last update.<br />
I&#8217;m hoping to get an update out sometime in the next week or two.  I still need to pore over a bunch of those datasheets, double-checking what else I&#8217;ve missed.</p>
<p><a href="http://codemonkey.org.uk/2009/01/15/x86info-hacking/">x86info hacking.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2009/01/15/x86info-hacking/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

