<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
 <title>planet-ltc.org aggregator</title>
 <link>http://planet-ltc.org/aggregator</link>
 <description>planet-ltc.org - aggregated feeds</description>
 <language>en</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PlanetLtc" type="application/rss+xml" /><item>
 <title>Daniel Ferber: Software Tools, Eclipse, and Programming on Linux: Resume scp/rsync file transfer</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/458622751/</link>
 <description>This is very basic Linux knowledge, but the question has arised too often and I decided to document it.
Problem:
Transfer (or upload/download) a large tree of files and directories from one machine to another using a ssh connection, and being able to resume/continue if the operation is interrupted.
Solution:
Until now, I believe that the best solution is [...]&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/458622751" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 19 Nov 2008 10:28:00 -0700</pubDate>
<feedburner:origLink>http://techtavern.wordpress.com/2008/11/19/resume-scprsync-file-transfer/</feedburner:origLink></item>
<item>
 <title>Lucas Meneghel Rodrigues: Linux on Power: We should be as the linux kernel&amp;#8230;</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/457908409/</link>
 <description>And persevere, no matter what: From
arch/x86/kernel/traps_32.c, L 690:
printk(KERN_EMERG &amp;#8220;Dazed and confused, but trying to continue\n&amp;#8221;);
Brings us a lesson about how we should live our lives - even on moments where everything seems to be confusing and dazzling, we *must* continue.
Word.
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/457908409" height="1" width="1"/&gt;</description>
 <pubDate>Tue, 18 Nov 2008 19:31:00 -0700</pubDate>
<feedburner:origLink>http://mybravenewworld.wordpress.com/2008/11/19/we-should-be-as-the-linux-kernel/</feedburner:origLink></item>
<item>
 <title>Jeremy Kerr: SPE gang scheduling policies</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/456933943/</link>
 <description>&lt;p&gt;In my &lt;a href="http://ozlabs.org/~jk/diary/tech/cell/external-scheduling.diary"&gt;previous
post&lt;/a&gt; here, I mentioned that:
&lt;blockquote&gt;
We also need to allow contexts to be loaded outside of spu_run to implement
gang scheduling correctly and efficiently.
&lt;/blockquote&gt;
&lt;p&gt;I think that may require a little explanation, so here we go:&lt;/p&gt;

&lt;h3&gt;gang scheduling policies&lt;/h3&gt;
&lt;p&gt;The idea behind SPE gang scheduling is to allow a set of related SPE
contexts to be scheduled together, to allow interactions between contexts to be
performed in a timely manner. For example, consider two contexts (A and B)
that send mailbox messages to each other. If context A is running while
context B is scheduled out, then A will spend its time-slice waiting for a
message from B. If they are scheduled as a single entity, neither context will
have to spend its timeslice blocked, waiting for the other context to be
run.&lt;/p&gt;

&lt;p&gt;So, we have to come up with a &lt;em&gt;policy&lt;/em&gt; to define the behaviour of the
gang scheduler.  When does the gang become schedulable? Under which conditions
should the gang be descheduled?&lt;/p&gt;

&lt;p&gt;I can see four possible approaches:&lt;p&gt;

&lt;h4&gt;policy 1: the gang is only schedulable when &lt;em&gt;all&lt;/em&gt; contexts are
runnable&lt;/h4&gt;

&lt;p&gt;In this case, the gang is only ever scheduled when &lt;em&gt;all&lt;/em&gt; of the gang's
contexts are runnable (ie, they are being run by the &lt;code&gt;spu_run&lt;/code&gt; system
call).&lt;/p&gt;
&lt;p&gt;Although the simplest, this approach will never complete&amp;emdash;consider the
following:&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;Context A becomes runnable&lt;/li&gt;
 &lt;li&gt;Context B becomes runnable&lt;/li&gt;
 &lt;li&gt;The gang is now schedulable, so both contexts are scheduled&lt;/li&gt;
 &lt;li&gt;Because it has slightly less work to do, context A finishes before
  context B&lt;/li&gt;
 &lt;li&gt;Because only one of the two contexts is runnable, the gang is no longer
  schedulable. Context B is never re-scheduled, so cannot complete the
 rest of its task&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, this policy isn't much use; perhaps we can solve this with a new
approach:&lt;/p&gt;

&lt;h4&gt;policy 2: the gang is scheduled when all contexts are runnable, and
descheduled when no contexts are runnable&lt;/h4&gt;

&lt;p&gt;This will solve the previous non-termination problem, in that context B will
be able to terminate - the context isn't immediately descheduled when A
finishes.&lt;/p&gt;

&lt;p&gt;However, now we have a new, slightly more complex non-termination case:&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;Context A becomes runnable&lt;/li&gt;
 &lt;li&gt;Context B becomes runnable&lt;/li&gt;
 &lt;li&gt;The gang is now schedulable, so both contexts are scheduled&lt;/li&gt;
 &lt;li&gt;Because it has slightly less work to do, context A finishes before
  context B&lt;/li&gt;
 &lt;li&gt;At the same time, context B does a PPE-assisted callback, which requires
  a stop-and-signal (and so leaves spu_run for just a moment)&lt;/li&gt;
 &lt;li&gt;Because neither context is currently runnable, the gang is
  descheduled&lt;/li&gt;
 &lt;li&gt;Context B finishes its callback, so re-enters spu_run to be
  re-scheduled. However, the policy does not allow context B to be re-scheduled,
  as only one of the two contexts is runnable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Although this may sound like a rare occurrence, it's not a restriction
we can pass on to the programmer. Imagine the following SPE code:&lt;/p&gt;

&lt;pre class="shaded code"&gt;
&lt;span class="ty"&gt;int&lt;/span&gt; main(&lt;span class="ty"&gt;void&lt;/span&gt;)
{
        do_work();
        printf(&lt;span class="cs"&gt;&amp;quot;work done!&lt;/span&gt;&lt;span class="sp"&gt;\n&lt;/span&gt;&lt;span class="cs"&gt;&amp;quot;&lt;/span&gt;);
        &lt;span class="st"&gt;return&lt;/span&gt; &lt;span class="cs"&gt;0&lt;/span&gt;;
}&lt;/pre&gt;

&lt;p&gt;Here we're doing a PPE-assisted callback (the call to &lt;code&gt;printf&lt;/code&gt; is
implemented as a callback) before finishing. If this callback were to occur
when the other context has already completed, we would hit the non-termination
condition above.&lt;/p&gt;

&lt;p&gt;This means that the last-running context of a gang can never do a
PPE-assisted callback. In fact, to be completely safe against this
non-termination, a programmer would have to avoid callbacks after &lt;em&gt;any&lt;/em&gt;
context has finished, for risk of callbacks on the rest of the gang being
synchronised.&lt;/p&gt;

&lt;p&gt;So, it looks like we need to be a little more permissive when deciding if the
gang is schedulable.&lt;/p&gt;

&lt;h4&gt;policy 3: the gang is scheduled when any context is runnable, and
descheduled when no contexts are runnable&lt;/h4&gt;

&lt;p&gt;This is another fairly simple approach&amp;emdash;the gang is scheduled whenever
there is &lt;em&gt;any&lt;/em&gt; work to do. We no longer have any non-termination
conditions, as 'having work to do' will result in 'doing work'.&lt;/p&gt;

&lt;p&gt;The tricky part is that it will require us to change one of the fundamental
assumptions about spufs: currently, we don't schedule any context unless it is
runnable. Because we schedule the entire gang when one if its context becomes
runnable, we have to now schedule a number of non-runnable contexts.&lt;/p&gt;

&lt;p&gt;The good news is that I've already done a little experimental work to
overcome this general restriction in spufs.&lt;/p&gt;

&lt;p&gt;The last approach is a little more complex, but works around this
restriction:&lt;/p&gt;

&lt;h4&gt;policy 4: schedule the runnable contexts of a gang, and reserve SPEs for
the non-runnable contexts&lt;/h4&gt;

&lt;p&gt;This is just like policy 3, but instead of actually scheduling the
non-runnable contexts, we reserve a SPE for them.&lt;/p&gt;

&lt;p&gt;This way, a non-runnable context does not need to be loaded, but can be
quickly scheduled when it becomes runnable. The downside is that we're only
half-implementing gang scheduling; there still may be interactions to a
non-runnable SPE (eg, accesses to the problem state mapping from a running
context in the same gang) that will cause running contexts to become
blocked.&lt;/p&gt;

&lt;p&gt;So, which policy is best for spufs?&lt;/p&gt;

&lt;p&gt;Policies 1 and 2 have significant flaws in their approach. It's quite
possible that either will lead to non-termination conditions in fairly simple
user programs. I don't think we can 'work around' this with a restriction on
the programmer.&lt;/p&gt;

&lt;P&gt;Policy 4 will require a mechanism for reserving SPEs for a particular
context; I'm not convinced the extra complexity is worth the effort, especially
as this doesn't allow us to implement gang scheduling properly.&lt;/p&gt;

&lt;p&gt;Currently, Luke Browning and André Detsch have a work-in progress
patch series for gang scheduling, based on policy 3.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/456933943" height="1" width="1"/&gt;</description>
 <pubDate>Tue, 18 Nov 2008 00:56:40 -0700</pubDate>
<feedburner:origLink>http://ozlabs.org/~jk/diary/tech/cell/spufs/gang-scheduling-policies.diary/</feedburner:origLink></item>
<item>
 <title>Lucas Meneghel Rodrigues: Linux on Power: Handy joystick udev rules</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/457908410/</link>
 <description>To make a long story short, I haven&amp;#8217;t blogged for ages, and the best way to resume any activity is, well&amp;#8230; actually doing it.
Lately, I&amp;#8217;ve been doing some experiments on my personal laptop, aiming to make it a good entertainment center, running on free software only. At an appropriate time, I will discuss how I&amp;#8217;m [...]&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/457908410" height="1" width="1"/&gt;</description>
 <pubDate>Sun, 16 Nov 2008 11:04:00 -0700</pubDate>
<feedburner:origLink>http://mybravenewworld.wordpress.com/2008/11/16/handy-joystick-udev-rules/</feedburner:origLink></item>
<item>
 <title>Mel Gorman: Kernel Spanner: YAFAP - What else is there to do when you are ill?</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/453106781/index.php</link>
 <description>I've been out ill the last few days (and still am). As having a head full of goo made be dumber than the average stick that couldn't do more than an hour or two of useful work in a day, I decided to fire up nethack again to chew up a bit of the day. The only games I play are guitar hero variants, final fantasy anything and nethack which was the first game I played on the PS3. I hadn't played properly in months as the last time I &lt;i&gt;almost&lt;/i&gt; made it which just sickened me. The one exception was a game a few weeks ago for a local competition that had a keg as a prize if someone ascended (no one did).&lt;br /&gt;
&lt;br /&gt;
The game was mainly a grind but being dumb also made me patient. One major setback was cancelling the whole inventory including the Bell of Opening which needs charged to finish the game. This is dumb, don't do it. I had the Wizard of Yendor killed by the time I realized the artifact was a no-go and there was no means of charging or wishing left in the game as I had them cleared out or used already. In a somewhat disgruntled mood, I put the character in a situation where it was attacked by literally all the time to finish the game and call it a day. Fortunately for me, between the monsters summoned by having being negatively aligned with negative luck and the repeated monsters summoned by the Wizard, eventually a scroll of charging fell out for the first time in the game putting me back in action and levelled me up considerably in the process. After opening the sanctum I found another scroll which was enough to get a magic marker to bring my AC back to something respectable and stand up to two wizards (double trouble), the high priest of Moloch and various beasties at the same time without using wands of death as I had lost all instant-kill methods at that time. Was a real messy fight but eventually with the Amulet of Yendor in hand and after poking the Wizard a few more times in the eye, I got to the Astral planes. Visiting all three altars later and last night night I see the lovely message. &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;"In return for thy service, I grant thee the gift of Immortality!"  You ascend to the status of Demigod...&lt;br /&gt;
&lt;br /&gt;
Mel the Lord                St:25 Dx:18 Co:18 In:16 Wi:18 Ch:18  Lawful&lt;br /&gt;
Astral Plane $:175 HP:441(441) Pw:141(141) AC:-23 Xp:30/100090501 T:99085 Satiated&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Wooooo! &lt;a href="http://www.csn.ul.ie/~mel/postings/nethack-20081115/mel-ascended-dump.txt" title="nethack ascension dump file"&gt;This&lt;/a&gt; is the full dump file and now, it's time to jam yet more wonderful drugs into my head and clear it out!&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/453106781" height="1" width="1"/&gt;</description>
 <pubDate>Fri, 14 Nov 2008 08:22:12 -0700</pubDate>
<feedburner:origLink>http://www.csn.ul.ie/~mel/blog/index.php?/archives/9-YAFAP-What-else-is-there-to-do-when-you-are-ill.html</feedburner:origLink></item>
<item>
 <title>Jeremy Kerr: external context scheduling in spufs</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/452665574/</link>
 <description>&lt;p&gt;At present, the spufs code has the invariant that a context is only
ever loaded to an SPE when it is being run; ie, a thread is calling the
&lt;code&gt;spu_run&lt;/code&gt; syscall on the context.&lt;/p&gt;
&lt;p&gt;However, there are situations where we may want to load the context without
it being run. For example, to &lt;a
href="http://www-128.ibm.com/developerworks/forums/thread.jspa?messageID=14153478&amp;tstart=0"
&gt;use the SPU's DMA engine from the PPE&lt;/a&gt;, requires the PPE thread to
write to registers in the SPU's problem-state mapping (psmap). Faults on the
psmap area can only be serviced while the context is loaded, so will block until
someone runs the context. Ideally, we could allow such accesses to the psmap
without the spu_run call. We also need to allow contexts to be loaded outside of
spu_run to implement gang scheduling correctly and efficiently.&lt;/p&gt;
&lt;p&gt;So, I've been working on some experimental changes to allow "external
scheduling" for SPE contexts. The "external" refers to a thread external to the
SPE's usual method of scheduling (ie, it's owning thread calling
&lt;code&gt;spu_run&lt;/code&gt;). In the example above, the external schedule would be
caused by the fault handler for the problem-state mapping.&lt;/p&gt;
&lt;p&gt;Although a context may be scheduled to an SPE, we still can't always guarantee
forward progress. For example, in the "use the psmap to access the DMA engine"
scenario, a DMA may cause a major page fault, which needs a controlling thread
to service. In this case, the only way to ensure forward progress is through
calling &lt;code&gt;spu_run&lt;/code&gt;. However, I have some ideas on how we can
remove this restriction later.&lt;/p&gt;

&lt;h3&gt;the interface&lt;/h3&gt;
&lt;p&gt;First up, we need to tell the spufs scheduler that we want a context to be
loaded:&lt;/p&gt;
&lt;pre class="shaded code"&gt;
&lt;span class="cm"&gt;/*&lt;/span&gt;
&lt;span class="cm"&gt; * Request an 'external' schedule for this context.&lt;/span&gt;
&lt;span class="cm"&gt; *&lt;/span&gt;
&lt;span class="cm"&gt; * The context will be either loaded to an SPU, or added to the run queue,&lt;/span&gt;
&lt;span class="cm"&gt; * depending on SPU availability.&lt;/span&gt;
&lt;span class="cm"&gt; *&lt;/span&gt;
&lt;span class="cm"&gt; * Should be called with the context's state mutex locked, and the context&lt;/span&gt;
&lt;span class="cm"&gt; * in SPU_STATE_SAVED state.&lt;/span&gt;
&lt;span class="cm"&gt; &lt;/span&gt;&lt;span class="cm"&gt;*/&lt;/span&gt;
&lt;span class="ty"&gt;int&lt;/span&gt; spu_request_external_schedule(&lt;span class="ty"&gt;struct&lt;/span&gt; spu_context *ctx);&lt;/pre&gt;
&lt;p&gt;After loading the context with &lt;code&gt;spu_request_external_schedule&lt;/code&gt;, we
need a way to tell the scheduler that the context can be de-scheduled:&lt;/p&gt;
&lt;pre class="shaded code"&gt;
&lt;span class="cm"&gt;/*&lt;/span&gt;
&lt;span class="cm"&gt; * The context should be unscheduled at the end of its timeslice&lt;/span&gt;
&lt;span class="cm"&gt; &lt;/span&gt;&lt;span class="cm"&gt;*/&lt;/span&gt;
&lt;span class="ty"&gt;void&lt;/span&gt; spu_cancel_external_schedule(&lt;span
  class="ty"&gt;struct&lt;/span&gt; spu_context *ctx);&lt;/pre&gt;
These functions are implemented by incrementing or decrementing a count of
"external schedulers" on the context. If multiple threads are requesting an
external schedule, then the first will activate the context. When the last
thread calls the cancel method, the context can be descheduled.&lt;/p&gt;

&lt;h3&gt;usage&lt;/h3&gt;
&lt;p&gt;We can use these two functions to allow the problem-state mapping fault
handler to proceed outside of spu_run:&lt;/p&gt;
&lt;pre class="shaded code"&gt;
&lt;span class="ty"&gt;--- a/arch/powerpc/platforms/cell/spufs/file.c&lt;/span&gt;
&lt;span class="ty"&gt;+++ b/arch/powerpc/platforms/cell/spufs/file.c&lt;/span&gt;
&lt;span class="st"&gt;@@ -413,9 +413,11 @@&lt;/span&gt;&lt;span class="pp"&gt; static int spufs_ps_fault(struct vm_area_struct *vma,&lt;/span&gt;

        if (ctx-&amp;gt;state == SPU_STATE_SAVED) {
                up_read(&amp;amp;current-&amp;gt;mm-&amp;gt;mmap_sem);
&lt;span class="id"&gt;+               spu_request_external_schedule(ctx);&lt;/span&gt;
                spu_context_nospu_trace(spufs_ps_fault__sleep, ctx);
                ret = spufs_wait(ctx-&amp;gt;run_wq, ctx-&amp;gt;state == SPU_STATE_LOADED);
                spu_context_trace(spufs_ps_fault__wake, ctx, ctx-&amp;gt;spu);
&lt;span class="id"&gt;+               spu_cancel_external_schedule(ctx);&lt;/span&gt;
                down_read(&amp;amp;current-&amp;gt;mm-&amp;gt;mmap_sem);
        } else {
                area = ctx-&amp;gt;spu-&amp;gt;problem_phys + ps_offs;
&lt;/pre&gt;
&lt;p&gt;Note that the spu_cancel_external_schedule function doesn't unload the
context right away; if it did, the refault would fail too, and we'd end up in
an infinite loop of faults. Instead, it keeps the context scheduled for the rest
of its timeslice. This gives the faulting thread time to access the mapping
after the fault handler has been invoked.&lt;/p&gt;
&lt;p&gt;We also need to do a bit of trickery with the priorities of contexts during
external schedule operations. If a high-priority thread access the problem-state
mapping of a low-priority context, we want the context to temporarily inherit
the higher priority. To do this, we raise the priority when
spu_request_external_schedule is called, and drop it back after the context has
finished its timeslice on the SPU.&lt;/p&gt;
&lt;h3&gt;the code&lt;/h3&gt;
&lt;p&gt;I've created a development branch in the spufs repository for these
changes, which is available:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;via git:
  &lt;code&gt;git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs.git&lt;/code&gt;, in
  the &lt;code&gt;ext-sched&lt;/code&gt; branch;
  or&lt;/li&gt;
 &lt;li&gt;on the &lt;a
 href="http://git.kernel.org/?p=linux/kernel/git/jk/spufs.git;a=shortlog;h=ext-sched"
  &gt;browsable gitweb interface&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that this is an &lt;em&gt;experimental&lt;/em&gt; codebase, expect breakages!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/452665574" height="1" width="1"/&gt;</description>
 <pubDate>Fri, 14 Nov 2008 00:14:55 -0700</pubDate>
<feedburner:origLink>http://ozlabs.org/~jk/diary/tech/cell/spufs/external-scheduling.diary/</feedburner:origLink></item>
<item>
 <title>Daniel Ferber: Software Tools, Eclipse, and Programming on Linux: About Trilead SSH open source project</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/458622753/</link>
 <description>Some time ago I have written an article about the JSch open source project. However, I soon lost all my motivation when I faced, again, the code complexity required for JSch just to start a execution session, a file copy or a port forwarding with JSch. Nevertheless the completely misunderstood authentication API for JSch let me [...]&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/458622753" height="1" width="1"/&gt;</description>
 <pubDate>Thu, 13 Nov 2008 12:30:00 -0700</pubDate>
<feedburner:origLink>http://techtavern.wordpress.com/2008/11/13/about-trilead-ssh-open-source-project/</feedburner:origLink></item>
<item>
 <title>Jeremy Kerr: new patchwork beta</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/434633237/</link>
 <description>&lt;img class="diaryfloat" src="http://ozlabs.org/~jk/images/diary/patchwork-header.png"
 width="269" height="134" alt="patchwork screengrab"/&gt;
&lt;p&gt;We've had a new version of &lt;a href="http://ozlabs.org/~jk/projects/patchwork/"&gt;patchwork&lt;/a&gt;
- the web-based patch-tracking system - online for a few weeks now at
&lt;a href="http://patchwork.ozlabs.org/"&gt;patchwork.ozlabs.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After &lt;a href="http://lwn.net/Articles/298592/"&gt;Paul's presentation on
patchwork at the 2008 Kernel Summit&lt;/a&gt;, there has been wider interest in
patchwork setups for other projects. Patchwork originally hosted the
Linux on Power and Linux on Cell lists, we've since added
&lt;a href="http://patchwork.ozlabs.org/project/netdev/"&gt;netdev&lt;/a&gt;,
&lt;a href="http://patchwork.ozlabs.org/project/linux-mtd/"&gt;linux-mtd&lt;/a&gt; and
&lt;a href="http://patchwork.ozlabs.org/project/linux-ext4/"&gt;linux-ext4&lt;/a&gt;. I've
also added the main Linux Kernel mailing list
(&lt;a href="http://patchwork.ozlabs.org/project/linux-kernel/"&gt;lkml&lt;/a&gt;), just
to see how the new patchwork handles the load; all has been okay so far.&lt;/p&gt;
&lt;p&gt;If you're interested in installing the new patchwork at your own site, you
can grab the source from the &lt;a href="http://ozlabs.org/~jk/projects/patchwork/"&gt;patchwork
project page&lt;/a&gt;. Installation can be a little tricky, so feel free to mail me
if you need a hand.&lt;/p&gt;
&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/434633237" height="1" width="1"/&gt;</description>
 <pubDate>Tue, 28 Oct 2008 04:23:07 -0700</pubDate>
<feedburner:origLink>http://ozlabs.org/~jk/diary/tech/software/new-patchwork-beta.diary/</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: So many cores...  so few students...</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/434045370/so-many-cores-so-few-students.html</link>
 <description>So it's that time of year when we return to the semi-serious thought process regarding next year's college interns and college hires.   Looking down the road in the industry and for Linux, the new servers coming have so many processor cores, requiring new programming models and approaches, that the students coming have got to know how to dive into this new world.    And recalling the way-too-many resumes dug through over 2008, there's an amazing disconnect coming.&lt;br /&gt;&lt;br /&gt;Which leads me to the three key questions..&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Can the schools actually shift gears to teach more about parallel programming?    &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Or do we need to do this ourselves in the industry and in our example the Linux community itself?    &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Can the students really cope with so many cores?    They will eventually be the users of all of these cores.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I suspect we'll all be chasing just a handful of students who have the background to help the industry down a new path of effective and efficient parallel programming.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://sc08.supercomputing.org"&gt;SC08&lt;/a&gt; looms in less than a month here in Austin, the many topics around super-computing keep coming up.   One of the most biggest pieces we're interested in is this transition to the massive number of cores coming down the pipe across the hardware architectures and systems.  This is especially apparent as our performance focus has branched into clusters as the systems scale up and scale out.    And Linux plays on them all.    HPC, commercial, educational, personal - the systems are going to have an amazing number of processor cores ready to do useful work.&lt;br /&gt;&lt;br /&gt;For myself, it's been an interesting personal journey this year as I've learned more about cluster performance and the different ways that customers and performance benchmarks parallel'ize HPC work.    I certainly have a long way to go, but now know enough to see that many cluster products and cluster programming techniques make things way too hard for the end user and the system admins.&lt;br /&gt;&lt;br /&gt;Getting ready for SC08, there are a number of sessions, panels, and birds-of-a-feather sessions emerging on this topic.   For example, Paul Steinberg over at Intel popped a blog up on "&lt;a href="http://software.intel.com/en-us/blogs/2008/10/22/sequential-programming-is-dead-so-stop-teaching-it/"&gt;Sequential programming is dead.  So stop teaching it!&lt;/a&gt;".    Interesting theme.    Paul's blog has a number of pointers to related information and papers.&lt;br /&gt;&lt;br /&gt;Paul McKenney in the LTC nicely hooked me up with this effort so I'll be spending more time on this over the next month.    This looks like a really good time to snag the universities and prod the educational processes to shift gears.    And, I'm hoping I'll learn enough about parallel programming to know what to look for in next year's students.   We need the skills.  Today.&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/434045370" height="1" width="1"/&gt;</description>
 <pubDate>Mon, 27 Oct 2008 13:32:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/2008/10/so-many-cores-so-few-students.html</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: So many cores...  so few students...</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/436837141/</link>
 <description>So it's that time of year when we return to the semi-serious thought process regarding next year's college interns and college hires.   Looking down the road in the industry and for Linux, the new servers coming have so many processor cores, requiring new programming models and approaches, that the students coming have got to know how to dive into this new world.    And recalling the way-too-many resumes dug through over 2008, there's an amazing disconnect coming.&lt;br /&gt;&lt;br /&gt;Which leads me to the three key questions..&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Can the schools actually shift gears to teach more about parallel programming?    &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Or do we need to do this ourselves in the industry and in our example the Linux community itself?    &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Can the students really cope with so many cores?    They will eventually be the users of all of these cores.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I suspect we'll all be chasing just a handful of students who have the background to help the industry down a new path of effective and efficient parallel programming.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://sc08.supercomputing.org"&gt;SC08&lt;/a&gt; looms in less than a month here in Austin, the many topics around super-computing keep coming up.   One of the most biggest pieces we're interested in is this transition to the massive number of cores coming down the pipe across the hardware architectures and systems.  This is especially apparent as our performance focus has branched into clusters as the systems scale up and scale out.    And Linux plays on them all.    HPC, commercial, educational, personal - the systems are going to have an amazing number of processor cores ready to do useful work.&lt;br /&gt;&lt;br /&gt;For myself, it's been an interesting personal journey this year as I've learned more about cluster performance and the different ways that customers and performance benchmarks parallel'ize HPC work.    I certainly have a long way to go, but now know enough to see that many cluster products and cluster programming techniques make things way too hard for the end user and the system admins.&lt;br /&gt;&lt;br /&gt;Getting ready for SC08, there are a number of sessions, panels, and birds-of-a-feather sessions emerging on this topic.   For example, Paul Steinberg over at Intel popped a blog up on "&lt;a href="http://software.intel.com/en-us/blogs/2008/10/22/sequential-programming-is-dead-so-stop-teaching-it/"&gt;Sequential programming is dead.  So stop teaching it!&lt;/a&gt;".    Interesting theme.    Paul's blog has a number of pointers to related information and papers.&lt;br /&gt;&lt;br /&gt;Paul McKenney in the LTC nicely hooked me up with this effort so I'll be spending more time on this over the next month.    This looks like a really good time to snag the universities and prod the educational processes to shift gears.    And, I'm hoping I'll learn enough about parallel programming to know what to look for in next year's students.   We need the skills.  Today.&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/436837141" height="1" width="1"/&gt;</description>
 <pubDate>Mon, 27 Oct 2008 08:32:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: So many cores...  so few students...</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/436837141/</link>
 <description>So it's that time of year when we return to the semi-serious thought process regarding next year's college interns and college hires.   Looking down the road in the industry and for Linux, the new servers coming have so many processor cores, requiring new programming models and approaches, that the students coming have got to know how to dive into this new world.    And recalling the way-too-many resumes dug through over 2008, there's an amazing disconnect coming.&lt;br /&gt;&lt;br /&gt;Which leads me to the three key questions..&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Can the schools actually shift gears to teach more about parallel programming?    &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Or do we need to do this ourselves in the industry and in our example the Linux community itself?    &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Can the students really cope with so many cores?    They will eventually be the users of all of these cores.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I suspect we'll all be chasing just a handful of students who have the background to help the industry down a new path of effective and efficient parallel programming.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://sc08.supercomputing.org"&gt;SC08&lt;/a&gt; looms in less than a month here in Austin, the many topics around super-computing keep coming up.   One of the most biggest pieces we're interested in is this transition to the massive number of cores coming down the pipe across the hardware architectures and systems.  This is especially apparent as our performance focus has branched into clusters as the systems scale up and scale out.    And Linux plays on them all.    HPC, commercial, educational, personal - the systems are going to have an amazing number of processor cores ready to do useful work.&lt;br /&gt;&lt;br /&gt;For myself, it's been an interesting personal journey this year as I've learned more about cluster performance and the different ways that customers and performance benchmarks parallel'ize HPC work.    I certainly have a long way to go, but now know enough to see that many cluster products and cluster programming techniques make things way too hard for the end user and the system admins.&lt;br /&gt;&lt;br /&gt;Getting ready for SC08, there are a number of sessions, panels, and birds-of-a-feather sessions emerging on this topic.   For example, Paul Steinberg over at Intel popped a blog up on "&lt;a href="http://software.intel.com/en-us/blogs/2008/10/22/sequential-programming-is-dead-so-stop-teaching-it/"&gt;Sequential programming is dead.  So stop teaching it!&lt;/a&gt;".    Interesting theme.    Paul's blog has a number of pointers to related information and papers.&lt;br /&gt;&lt;br /&gt;Paul McKenney in the LTC nicely hooked me up with this effort so I'll be spending more time on this over the next month.    This looks like a really good time to snag the universities and prod the educational processes to shift gears.    And, I'm hoping I'll learn enough about parallel programming to know what to look for in next year's students.   We need the skills.  Today.&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/436837141" height="1" width="1"/&gt;</description>
 <pubDate>Mon, 27 Oct 2008 08:32:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/</feedburner:origLink></item>
<item>
 <title>Daniel Ferber: Software Tools, Eclipse, and Programming on Linux: PCMan: the real and true Gnome file manager</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/430380889/</link>
 <description>I have modified this post after several people complained that I was misunderstood: Nautilus can, sure, display a tree view of the file system. Sure, but only for &amp;#8220;who-knows-how&amp;#8221;.
I do not like Gnome desktop environment because of its excessively simplified GUI that leverages all users as if they lack minimal skill to interact with a [...]&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/430380889" height="1" width="1"/&gt;</description>
 <pubDate>Thu, 23 Oct 2008 22:15:00 -0700</pubDate>
<feedburner:origLink>http://techtavern.wordpress.com/2008/10/24/pcman-the-real-and-true-gnome-file-manager/</feedburner:origLink></item>
<item>
 <title>Alan Robertson: Managing Computers with Automation: Using virtualization to provide "HA at wholesale"</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/430049285/using-virtualization-to-provide-ha-at-wholesale.html</link>
 <description>&lt;div style="text-align: justify;"&gt;Traditionally, the way people have implemented high availability is by using a high-availability management package like Linux-HA[&lt;a href="http://linux-ha.org/"&gt;1&lt;/a&gt;], then configure it in detail for each application, file system mount, IP address and so on.&amp;#0160; This traditional method works quite well, but can be a bit labor intensive - particularly when using custom or uncommon applications.&amp;#0160; You may have to understand the structure of your applications, write some resource agents[&lt;a href="http://linux-ha.org/ResourceAgent"&gt;2&lt;/a&gt;], debug them, and test them in detail.&amp;#0160; In addition, every time you change your mount structure, or other details you&amp;#39;ve told your HA system, you have to be sure and update your HA configuration to match - or it might not fail over correctly the next time.&lt;br /&gt;&lt;br /&gt;When you have good resource agents, your HA system will also recover from application failures - by restarting applications that have failed.&amp;#0160; This is a good thing.&amp;#0160; On the other hand, this is enough work that virtually no one runs &lt;em&gt;all&lt;/em&gt; their applications in an HA configuration.&amp;#0160; It&amp;#39;s just too much work for most applications.&amp;#0160; I call this traditional boutique-like method &amp;quot;HA at retail&amp;quot;.&amp;#0160; It works well, but it is a little costly to set up and maintain all the details just so.&lt;br /&gt;&lt;br /&gt;With virtualization, another approach is possible, and (big surprise), I call it &amp;quot;HA at wholesale&amp;quot;.&amp;#0160; In this paradigm, instead of needing to write scripts for each type of application, you just have one resource agent - one for managing a virtual machine.&amp;#0160; You also don&amp;#39;t need to know the structure of the applications - the OS still starts them in whatever way it has been starting them all along.&amp;#0160; Wow, this sounds good - less work, fewer chances for errors!&amp;#0160; As expected, there is still no such thing as a free lunch here - you do wind up with some disadvantages.&lt;br /&gt;&lt;br /&gt;For example, you can no longer easily detect the failure of an application.&amp;#0160; In addition, if an application fails, the only thing you can do about it is reboot the entire virtual machine.&amp;#0160;&amp;#0160; Inevitably, this takes longer than just restarting the failed application.&lt;br /&gt;&lt;br /&gt;So, HA at wholesale has these properties:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Simple enough that you can implement it for &lt;em&gt;every&lt;/em&gt; machine&lt;/li&gt;
&lt;li&gt;Works well for hardware failures&lt;/li&gt;
&lt;li&gt;When coupled with hardware predictive failure analysis[&lt;a href="http://www-05.ibm.com/hu/termekismertetok/xseries/dn/pfa.pdf"&gt;3&lt;/a&gt;] and smart HA software, outages can sometimes be completely avoided.&lt;/li&gt;
&lt;li&gt;Can&amp;#39;t easily detect or recover from application failures&lt;/li&gt;
&lt;li&gt;The only thing you can do about any failure is reboot the virtual machine&lt;/li&gt;
&lt;/ul&gt;
HA at retail has these properties:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;It is complex enough that you need to limit how broadly you apply it in your environment&lt;/li&gt;
&lt;li&gt;Works well for hardware failures&lt;/li&gt;
&lt;li&gt;It can easily detect and recover from application failures&lt;/li&gt;
&lt;li&gt;Individual applications can easily be restarted - and don&amp;#39;t require a reboot&lt;/li&gt;
&lt;/ul&gt;
HA software like Linux-HA[&lt;a href="http://linux-ha.org/"&gt;1&lt;/a&gt;] can manage either type of environment.&amp;#0160; In an ideal world, one would like to be able to do both in the same software infrastructure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://linux-ha.org/"&gt;http://linux-ha.org/&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://linux-ha.org/ResourceAgent"&gt;http://linux-ha.org/ResourceAgent&lt;/a&gt;&lt;br /&gt;[3] &lt;a href="http://www-05.ibm.com/hu/termekismertetok/xseries/dn/pfa.pdf"&gt;http://www-05.ibm.com/hu/termekismertetok/xseries/dn/pfa.pdf&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/430049285" height="1" width="1"/&gt;</description>
 <pubDate>Thu, 23 Oct 2008 14:18:00 -0700</pubDate>
<feedburner:origLink>http://techthoughts.typepad.com/managing_computers/2008/10/using-virtualization-to-provide-ha-at-wholesale.html</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: Hey!   Who's stealing my CPU cycles?!</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/429038750/hey-whos-stealing-my-cpu-cycles.html</link>
 <description>I hear this every now and then on the Power systems from customers, programmers, and even peers.      In the more recent distro versions, there's a new "st" column in the CPU metrics which tracks the usage of "stolen" CPU cycles, from the perspective of the CPU being measured.    This "steal" column has been around for a while, but the most recent service packs of RHEL 5.2 and SLES 10 sp2 have the latest fixes which display the intended values - so the values are getting noticed more.&lt;br /&gt;&lt;br /&gt;I believe this "cpu cycle stealing" all came into being when things like Xen were being developed and the programmers wanted a way to account for the CPU cycles which were allocated to another partition.   I suspect the programmers were looking at it from the perspective of "my partition", where something devious and nefarious was daring to steal my CPU cycles.  Thus the term "stolen CPU cycles".   Just guessing though.&lt;br /&gt;&lt;br /&gt;This "steal" term is a tad unfortunate.   It's been suggested that a more gentle term of "sharing" would be preferred for customers.   But digging around the source code I found the term "steal" is fairly pervasive.   And what's in the code, tends to end up in the man pages.  Ah well.&lt;br /&gt;&lt;br /&gt;With Power hardware, there's a mode where the two hardware threads are juggled by the Linux scheduler.    This is implemented via cpu pairs (for example, cpu0 and cpu1) which represent the schedule'able individual hardware threads running on the single processor core.  This is the SMT mode (simultaneous multi-threaded) on Power.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The term "hardware thread" is with respect to the processor core.   Each processor core can have two active hardware threads.   Software threads and software processes are scheduled on the processor cores by the operating system via the schedule'able CPUs which correspond to the two hardware threads.&lt;/li&gt;&lt;/ul&gt;In the SMT realm, each SMT hardware thread can be considered a sibling (in the context of brother or sister) of each other, running on a processor core.   So if the two hardware threads are flat-out-busy with work from the operating system and evenly balanced, then each of the corresponding CPUs being scheduled are generally getting 50% of the processor core's cycles.&lt;br /&gt;&lt;br /&gt;From a performance perspective, this has tremendous advantages because the processor core can flip between the hardware threads as soon as one thread hits a short-wait for things like memory accesses.  Essentially the processor core can fetch the instructions and memory accesses simultaneously for the two hardware threads which improves the efficiency of the core.&lt;br /&gt;&lt;br /&gt;In days of old, each CPU's metrics were generally based on the premise that a CPU could get to 100% user busy.   Now, the new steal column can account for the processor cycles being shared by the two SMT sibling threads, not to mention additional CPU cycles being shared with other partitions.    It's still possible for an individual CPU to go to 100% user busy, while the SMT sibling thread is idle.&lt;br /&gt;&lt;br /&gt;For example, in the vmstat output below, the rightmost CPU column is the steal column.    On an idle system, this value isn't very meaningful.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;# vmstat 1&lt;br /&gt;procs   ---- -------memory-------   ---swap--  ---io--- --system-- -----cpu------&lt;br /&gt;r  b   swpd    free   buff   cache   si   so   bi   bo   in   cs   us sy  id wa st&lt;br /&gt;0  0      0 14578432 408768 943616    0    0     0     0    2    5  0  0 100  0  0&lt;br /&gt;0  0      0 14578368 408768 943616    0    0     0     0   25   44  0  0 100  0  0&lt;br /&gt;0  0      0 14578432 408768 943616    0    0     0    32   12   44  0  0 100  0  0&lt;br /&gt;0  0      0 14578432 408768 943616    0    0     0     0   21   45  0  0 100  0  0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the next example, pushing do-nothing work on every CPU...      (in this case a four-core system, SMT was on, so 8 CPUs were available...), we'll see the vmstat "st" column quickly get to the point where the CPU cycles on average are 50% user and 50% steal.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Try using "top", then press the "1" key to see what's happening on a per-CPU basis easier..&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;# vmstat 1&lt;br /&gt;procs   ---- -------memory-------   ---swap--  ---io--- --system-- -----cpu------&lt;br /&gt;r  b   swpd    free   buff   cache   si   so   bi   bo   in   cs   us sy  id wa st&lt;br /&gt;8  0      0 14574400 408704 943488    0    0     0     0   26   42 50  0  0  0 50&lt;br /&gt;8  0      0 14574400 408704 943488    0    0     0     0   11   34 50  0  0  0 50&lt;br /&gt;8  0      0 14574400 408704 943488    0    0     0     0   26   42 50  0  0  0 50&lt;br /&gt;8  0      0 14574656 408704 943488    0    0     0     0   10   34 50  0  0  0 50&lt;br /&gt;&lt;/pre&gt;For customers and technical people who were used to seeing their CPUs up to 100% user busy, this can be...  disconcerting...    but it's now perfectly normal..    even expected..&lt;br /&gt;&lt;br /&gt;I just wish we could distinguish the SMT sharing of CPU cycles, and the CPU cycles being shared with other partitions.&lt;br /&gt;&lt;br /&gt;For more details on the process of sharing the CPU cycles, especially when the CPU cycles are being shared between partitions, check out this page where we dive into more (but not yet all) of the gory details...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/Measuring+stolen+CPU+cycles"&gt;Measuring Stolen CPU cycles&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/429038750" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 22 Oct 2008 08:45:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/2008/10/hey-whos-stealing-my-cpu-cycles.html</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: Hey!   Who's stealing my CPU cycles?!</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/436837141/</link>
 <description>I hear this every now and then on the Power systems from customers, programmers, and even peers.      In the more recent distro versions, there's a new "st" column in the CPU metrics which tracks the usage of "stolen" CPU cycles, from the perspective of the CPU being measured.    This "steal" column has been around for a while, but the most recent service packs of RHEL 5.2 and SLES 10 sp2 have the latest fixes which display the intended values - so the values are getting noticed more.&lt;br /&gt;&lt;br /&gt;I believe this "cpu cycle stealing" all came into being when things like Xen were being developed and the programmers wanted a way to account for the CPU cycles which were allocated to another partition.   I suspect the programmers were looking at it from the perspective of "my partition", where something devious and nefarious was daring to steal my CPU cycles.  Thus the term "stolen CPU cycles".   Just guessing though.&lt;br /&gt;&lt;br /&gt;This "steal" term is a tad unfortunate.   It's been suggested that a more gentle term of "sharing" would be preferred for customers.   But digging around the source code I found the term "steal" is fairly pervasive.   And what's in the code, tends to end up in the man pages.  Ah well.&lt;br /&gt;&lt;br /&gt;With Power hardware, there's a mode where the two hardware threads are juggled by the Linux scheduler.    This is implemented via cpu pairs (for example, cpu0 and cpu1) which represent the schedule'able individual hardware threads running on the single processor core.  This is the SMT mode (simultaneous multi-threaded) on Power.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The term "hardware thread" is with respect to the processor core.   Each processor core can have two active hardware threads.   Software threads and software processes are scheduled on the processor cores by the operating system via the schedule'able CPUs which correspond to the two hardware threads.&lt;/li&gt;&lt;/ul&gt;In the SMT realm, each SMT hardware thread can be considered a sibling (in the context of brother or sister) of each other, running on a processor core.   So if the two hardware threads are flat-out-busy with work from the operating system and evenly balanced, then each of the corresponding CPUs being scheduled are generally getting 50% of the processor core's cycles.&lt;br /&gt;&lt;br /&gt;From a performance perspective, this has tremendous advantages because the processor core can flip between the hardware threads as soon as one thread hits a short-wait for things like memory accesses.  Essentially the processor core can fetch the instructions and memory accesses simultaneously for the two hardware threads which improves the efficiency of the core.&lt;br /&gt;&lt;br /&gt;In days of old, each CPU's metrics were generally based on the premise that a CPU could get to 100% user busy.   Now, the new steal column can account for the processor cycles being shared by the two SMT sibling threads, not to mention additional CPU cycles being shared with other partitions.    It's still possible for an individual CPU to go to 100% user busy, while the SMT sibling thread is idle.&lt;br /&gt;&lt;br /&gt;For example, in the vmstat output below, the rightmost CPU column is the steal column.    On an idle system, this value isn't very meaningful.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;# vmstat 1&lt;br /&gt;procs   ---- -------memory-------   ---swap--  ---io--- --system-- -----cpu------&lt;br /&gt;r  b   swpd    free   buff   cache   si   so   bi   bo   in   cs   us sy  id wa st&lt;br /&gt;0  0      0 14578432 408768 943616    0    0     0     0    2    5  0  0 100  0  0&lt;br /&gt;0  0      0 14578368 408768 943616    0    0     0     0   25   44  0  0 100  0  0&lt;br /&gt;0  0      0 14578432 408768 943616    0    0     0    32   12   44  0  0 100  0  0&lt;br /&gt;0  0      0 14578432 408768 943616    0    0     0     0   21   45  0  0 100  0  0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the next example, pushing do-nothing work on every CPU...      (in this case a four-core system, SMT was on, so 8 CPUs were available...), we'll see the vmstat "st" column quickly get to the point where the CPU cycles on average are 50% user and 50% steal.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Try using "top", then press the "1" key to see what's happening on a per-CPU basis easier..&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;while : ; do : ; done &amp;amp;&lt;br /&gt;# vmstat 1&lt;br /&gt;procs   ---- -------memory-------   ---swap--  ---io--- --system-- -----cpu------&lt;br /&gt;r  b   swpd    free   buff   cache   si   so   bi   bo   in   cs   us sy  id wa st&lt;br /&gt;8  0      0 14574400 408704 943488    0    0     0     0   26   42 50  0  0  0 50&lt;br /&gt;8  0      0 14574400 408704 943488    0    0     0     0   11   34 50  0  0  0 50&lt;br /&gt;8  0      0 14574400 408704 943488    0    0     0     0   26   42 50  0  0  0 50&lt;br /&gt;8  0      0 14574656 408704 943488    0    0     0     0   10   34 50  0  0  0 50&lt;br /&gt;&lt;/pre&gt;For customers and technical people who were used to seeing their CPUs up to 100% user busy, this can be...  disconcerting...    but it's now perfectly normal..    even expected..&lt;br /&gt;&lt;br /&gt;I just wish we could distinguish the SMT sharing of CPU cycles, and the CPU cycles being shared with other partitions.&lt;br /&gt;&lt;br /&gt;For more details on the process of sharing the CPU cycles, especially when the CPU cycles are being shared between partitions, check out this page where we dive into more (but not yet all) of the gory details...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/Measuring+stolen+CPU+cycles"&gt;Measuring Stolen CPU cycles&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/436837141" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 22 Oct 2008 03:45:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/</feedburner:origLink></item>
<item>
 <title>Thiago Bauermann: Linux on Power: python scripting in gdb update</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/422355495/</link>
 <description>&lt;div class='snap_preview'&gt;&lt;br /&gt;&lt;p&gt;It&amp;#8217;s been a great while since I &lt;a href="http://blog.bauermann.eng.br/2008/03/24/gdbs-backtrace-command-implemented-in-python/"&gt;last posted&lt;/a&gt; about Python scripting in GDB, mostly because I&amp;#8217;ve been busy coding the feature and getting it ready for upstream.&lt;/p&gt;
&lt;p&gt;First of all, I&amp;#8217;d like to take the opportunity to encourage people interested in using this feature to experiment with what we have implemented so far. The reason is that if you still can&amp;#8217;t do what you want with the current code in the Python branch, we&amp;#8217;d &lt;strong&gt;love&lt;/strong&gt; to hear what you miss and implement it. We are working on what is useful for ourselves, and trying to decide what other people would find useful. But it&amp;#8217;s not possible to imagine everything that people want to use this for, or even most things. Please refer to this &lt;a href="http://sourceware.org/gdb/wiki/PythonGdb"&gt;wiki page&lt;/a&gt; to learn what currently works, what we plan to implement, and how to grab the code from the Python branch.&lt;/p&gt;
&lt;p&gt;Feel free to write to the GDB &lt;a href="http://sourceware.org/gdb/mailing-lists/"&gt;mailing list&lt;/a&gt; or show up in the #gdb IRC channel at Freenode to discuss this work and/or bring your use case to our attention, so that we can support it. I hope that with enough input from prospective users we can ship something that&amp;#8217;s immediately useful for most people, and avoid having to jump through hoops later and have to shoehorn something that we forgot to cater for initially, risking breaking scripts out there or ending up with an inconsistent API.&lt;/p&gt;
&lt;p&gt;Anyway, back to business: I have &lt;a href="http://sourceware.org/ml/gdb-patches/2008-10/msg00395.html"&gt;just committed&lt;/a&gt; the second patch in the Python series! It exports GDB&amp;#8217;s value subsystem to Python scripts. Basically, GDB values are objects which represent data in the inferior (GDB jargon for the program being debugged), holding its address in the inferior&amp;#8217;s addressspace, its type and so on. See the &amp;#8220;Python API&amp;#8221; section in the &lt;a href="http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html"&gt;GDB manual&lt;/a&gt; if you want to learn more about it (yes, we are even writing &lt;strong&gt;documentation&lt;/strong&gt; for the feature!).&lt;/p&gt;
&lt;p&gt;I committed the &lt;a href="http://sourceware.org/ml/gdb-patches/2008-08/msg00137.html"&gt;first patch&lt;/a&gt; back in August, but I didn&amp;#8217;t mention it here because it didn&amp;#8217;t do anything the user would find useful, really. It was just groundwork for the rest (autoconf and Makefile.in changes, a &amp;#8216;python&amp;#8217; command in GDB which basically does nothing useful, initial documentation&amp;#8230;). Still, it was about 1500 lines long (not counting the patch&amp;#8217;s context)! This shows how much work it is to integrate Python support in GDB. I almost regret having joined this effort. &lt;img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;The second patch also doesn&amp;#8217;t allow the user to do anything useful yet, unfortunately. But it is noteworthy because it is a base upon which a lot of other Python support code depend upon. Also, it&amp;#8217;s the first committed patch which actually exposes something from GDB to Python. It took a while to get this code ready for two reasons: one was that there was a long discussion regarding how the syntax of acessing struct/union/class elements. The other was that implementing the Value class involved playing with little-documented aspects of Python&amp;#8217;s C interface, and it took me time to discover how to do what I needed.&lt;/p&gt;
&lt;p&gt;Now my next step is to choose the next patch from the Python series to submit upstream, and get it ready for posting (i.e., fix FIXMEs, add testcases and documentation). This brings me to another thing I&amp;#8217;d like to mention. Back in April when I first &lt;a href="http://blog.bauermann.eng.br/2008/04/30/breaking-code-into-reviewable-patches/"&gt;prepared&lt;/a&gt; the Python &lt;a href="http://sourceware.org/ml/gdb-patches/2008-04/msg00653.html"&gt;patch series&lt;/a&gt;, I naively thought that after cutting them out, it was just a matter of posting them, iterate through a few review/rework steps and they&amp;#8217;d be committed. Simple enough. But here we are in mid-October and just two from nine patches went in (now it&amp;#8217;s more like 15 patches in total)! What happened?&lt;/p&gt;
&lt;p&gt;The problem is that we&amp;#8217;ve been working in the branch in an experimental and exploratory way, just hacking together enough to get something useful done. This was necessary because we didn&amp;#8217;t know exactly what we would want to expose from GDB to Python, and how we wanted to do that. As we progressed and discussed the results, things started to become clear. The problem is that now we have a lot to clean up, voids to fill, and above all documentation and testcases to write. This takes time.&lt;/p&gt;
&lt;p&gt;At least, that was the problem with the first two patches. I noticed Tom Tromey started to write more documentation and tie more loose ends than in the beginning (me? I&amp;#8217;ve just been working on the first two patches until they were ready. Didn&amp;#8217;t write sexy new stuff since then&amp;#8230;), so there&amp;#8217;s hope that the next patches will be easier to work with. We still lack a lot of tests for the testsuite, though&amp;#8230;&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bauermann.wordpress.com/163/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bauermann.wordpress.com/163/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bauermann.wordpress.com/163/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bauermann.wordpress.com/163/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bauermann.wordpress.com/163/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bauermann.wordpress.com/163/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bauermann.wordpress.com/163/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bauermann.wordpress.com/163/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bauermann.wordpress.com/163/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bauermann.wordpress.com/163/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.bauermann.eng.br&amp;blog=1857072&amp;post=163&amp;subd=bauermann&amp;ref=&amp;feed=1" /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/422355495" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 15 Oct 2008 23:03:40 -0700</pubDate>
<feedburner:origLink>http://blog.bauermann.eng.br/2008/10/16/python-scripting-in-gdb-update/</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: Linux on Power..  links and portals..</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/421658210/linux-on-power-links-and-portals.html</link>
 <description>Several of us were playing around recently counting up how many "portals" we could find for information in and around Linux for Power systems.    On the performance side, we were specifically interested in seeing whether there was information "out there" that we could leverage that we weren't really aware of.   We actually found a lot of performance information which I'll try to highlight more in the weeks coming.&lt;br /&gt;&lt;br /&gt;For the portals, we did find an amazing assortment of web pages available.   We hit classic marketing portals, hardware and performance information, generic Linux information, technical portals, a couple of old and outdated portals, various download sites for added-value items, lots of IBM forums on developerWorks, IBM Redbooks (always good information), and pointers to wiki pages spanning a number of subjects.  &lt;br /&gt;&lt;br /&gt;The marketing and customer teams generally point to the &lt;a href="http://www-03.ibm.com/systems/power/software/linux/"&gt;IBM Linux page&lt;/a&gt; as the primary entry point (portal).    The five web tabs out there (Overview, Getting Started, Solutions, About Linux, and Resources) can get the reader to all sorts of official information.&lt;br /&gt;&lt;br /&gt;For our list of web sites and pages, rather than just file the list in another email bucket never to be seen again, we created an index page called &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/"&gt;Quick Links&lt;/a&gt; to keep track of what we wanted to hunt down and get updated and more current.   We naturally didn't want to call it another portal.   'Course, now we're hunting down subject-matter experts (aka volunteers) to help update the various wiki pages, especially under the developerWorks &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/Previous+Home"&gt;Linux for Power architecture wiki&lt;/a&gt;.  We're particularly interested in providing more of the practical details, one example being the &lt;a href="http://www.ibm.com/developerworks/wikis/display/hpccentral/Red+Hat+Enterprise+Linux"&gt;HPC Central - Red Hat&lt;/a&gt; page where a series of technical wiki pages are available.&lt;br /&gt;&lt;br /&gt;Another interesting observation is seeing IBM's classic reliance on the developerWorks forums which we listed on our Quick Links index page.   The Linux community is far more used to mailing lists for interactions, questions, and development issues.   Forums are fine for questions and answers, but in our mind many of the forums are rarely used, even if the technology or product covered by each forum is helpful and useful.    I would expect that we'll start seeding the forums with answers to questions we get from customers, developers, and peers.   Help nudge things along.   Which will give us more places to link to and get the practical questions answered.&lt;br /&gt;&lt;br /&gt;[edit'ed 10/30/2008 - we made the Quick Links page the LinuxP home page]&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/421658210" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 15 Oct 2008 05:23:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/2008/10/linux-on-power-links-and-portals.html</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: Linux on Power..  links and portals..</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/436837141/</link>
 <description>Several of us were playing around recently counting up how many "portals" we could find for information in and around Linux for Power systems.    On the performance side, we were specifically interested in seeing whether there was information "out there" that we could leverage that we weren't really aware of.   We actually found a lot of performance information which I'll try to highlight more in the weeks coming.&lt;br /&gt;&lt;br /&gt;For the portals, we did find an amazing assortment of web pages available.   We hit classic marketing portals, hardware and performance information, generic Linux information, technical portals, a couple of old and outdated portals, various download sites for added-value items, lots of IBM forums on developerWorks, IBM Redbooks (always good information), and pointers to wiki pages spanning a number of subjects.  &lt;br /&gt;&lt;br /&gt;The marketing and customer teams generally point to the &lt;a href="http://www-03.ibm.com/systems/power/software/linux/"&gt;IBM Linux page&lt;/a&gt; as the primary entry point (portal).    The five web tabs out there (Overview, Getting Started, Solutions, About Linux, and Resources) can get the reader to all sorts of official information.&lt;br /&gt;&lt;br /&gt;For our list of web sites and pages, rather than just file the list in another email bucket never to be seen again, we created an index page called &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/"&gt;Quick Links&lt;/a&gt; to keep track of what we wanted to hunt down and get updated and more current.   We naturally didn't want to call it another portal.   'Course, now we're hunting down subject-matter experts (aka volunteers) to help update the various wiki pages, especially under the developerWorks &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/Previous+Home"&gt;Linux for Power architecture wiki&lt;/a&gt;.  We're particularly interested in providing more of the practical details, one example being the &lt;a href="http://www.ibm.com/developerworks/wikis/display/hpccentral/Red+Hat+Enterprise+Linux"&gt;HPC Central - Red Hat&lt;/a&gt; page where a series of technical wiki pages are available.&lt;br /&gt;&lt;br /&gt;Another interesting observation is seeing IBM's classic reliance on the developerWorks forums which we listed on our Quick Links index page.   The Linux community is far more used to mailing lists for interactions, questions, and development issues.   Forums are fine for questions and answers, but in our mind many of the forums are rarely used, even if the technology or product covered by each forum is helpful and useful.    I would expect that we'll start seeding the forums with answers to questions we get from customers, developers, and peers.   Help nudge things along.   Which will give us more places to link to and get the practical questions answered.&lt;br /&gt;&lt;br /&gt;[edit'ed 10/30/2008 - we made the Quick Links page the LinuxP home page]&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/436837141" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 15 Oct 2008 00:23:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: Linux on Power..  links and portals..</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/436837141/</link>
 <description>Several of us were playing around recently counting up how many "portals" we could find for information in and around Linux for Power systems.    On the performance side, we were specifically interested in seeing whether there was information "out there" that we could leverage that we weren't really aware of.   We actually found a lot of performance information which I'll try to highlight more in the weeks coming.&lt;br /&gt;&lt;br /&gt;For the portals, we did find an amazing assortment of web pages available.   We hit classic marketing portals, hardware and performance information, generic Linux information, technical portals, a couple of old and outdated portals, various download sites for added-value items, lots of IBM forums on developerWorks, IBM Redbooks (always good information), and pointers to wiki pages spanning a number of subjects.  &lt;br /&gt;&lt;br /&gt;The marketing and customer teams generally point to the &lt;a href="http://www-03.ibm.com/systems/power/software/linux/"&gt;IBM Linux page&lt;/a&gt; as the primary entry point (portal).    The five web tabs out there (Overview, Getting Started, Solutions, About Linux, and Resources) can get the reader to all sorts of official information.&lt;br /&gt;&lt;br /&gt;For our list of web sites and pages, rather than just file the list in another email bucket never to be seen again, we created an index page called &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/"&gt;Quick Links&lt;/a&gt; to keep track of what we wanted to hunt down and get updated and more current.   We naturally didn't want to call it another portal.   'Course, now we're hunting down subject-matter experts (aka volunteers) to help update the various wiki pages, especially under the developerWorks &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/Previous+Home"&gt;Linux for Power architecture wiki&lt;/a&gt;.  We're particularly interested in providing more of the practical details, one example being the &lt;a href="http://www.ibm.com/developerworks/wikis/display/hpccentral/Red+Hat+Enterprise+Linux"&gt;HPC Central - Red Hat&lt;/a&gt; page where a series of technical wiki pages are available.&lt;br /&gt;&lt;br /&gt;Another interesting observation is seeing IBM's classic reliance on the developerWorks forums which we listed on our Quick Links index page.   The Linux community is far more used to mailing lists for interactions, questions, and development issues.   Forums are fine for questions and answers, but in our mind many of the forums are rarely used, even if the technology or product covered by each forum is helpful and useful.    I would expect that we'll start seeding the forums with answers to questions we get from customers, developers, and peers.   Help nudge things along.   Which will give us more places to link to and get the practical questions answered.&lt;br /&gt;&lt;br /&gt;[edit'ed 10/30/2008 - we made the Quick Links page the LinuxP home page]&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/436837141" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 15 Oct 2008 00:23:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/</feedburner:origLink></item>
<item>
 <title>Bill Buros: Improving Performance on Linux: Linux on Power..  links and portals..</title>
 <link>http://feeds.feedburner.com/~r/PlanetLtc/~3/436837141/</link>
 <description>Several of us were playing around recently counting up how many "portals" we could find for information in and around Linux for Power systems.    On the performance side, we were specifically interested in seeing whether there was information "out there" that we could leverage that we weren't really aware of.   We actually found a lot of performance information which I'll try to highlight more in the weeks coming.&lt;br /&gt;&lt;br /&gt;For the portals, we did find an amazing assortment of web pages available.   We hit classic marketing portals, hardware and performance information, generic Linux information, technical portals, a couple of old and outdated portals, various download sites for added-value items, lots of IBM forums on developerWorks, IBM Redbooks (always good information), and pointers to wiki pages spanning a number of subjects.   &lt;br /&gt;&lt;br /&gt;The marketing and customer teams generally point to the &lt;a href="http://www-03.ibm.com/systems/power/software/linux/"&gt;IBM Linux page&lt;/a&gt; as the primary entry point (portal).    The five web tabs out there (Overview, Getting Started, Solutions, About Linux, and Resources) can get the reader to all sorts of official information.&lt;br /&gt;&lt;br /&gt;For our list of web sites and pages, rather than just file the list in another email bucket never to be seen again, we created an index page called &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/Quick+Links"&gt;Quick Links&lt;/a&gt; to keep track of what we wanted to hunt down and get updated and more current.   We naturally didn't want to call it another portal.   'Course, now we're hunting down subject-matter experts (aka volunteers) to help update the various wiki pages, especially under the developerWorks &lt;a href="http://www.ibm.com/developerworks/wikis/display/LinuxP/Home"&gt;Linux for Power architecture wiki&lt;/a&gt;.  We're particularly interested in providing more of the practical details, one example being the &lt;a href="http://www.ibm.com/developerworks/wikis/display/hpccentral/Red+Hat+Enterprise+Linux"&gt;HPC Central - Red Hat&lt;/a&gt; page where a series of technical wiki pages are available.&lt;br /&gt;&lt;br /&gt;Another interesting observation is seeing IBM's classic reliance on the developerWorks forums which we listed on our Quick Links index page.   The Linux community is far more used to mailing lists for interactions, questions, and development issues.   Forums are fine for questions and answers, but in our mind many of the forums are rarely used, even if the technology or product covered by each forum is helpful and useful.    I would expect that we'll start seeding the forums with answers to questions we get from customers, developers, and peers.   Help nudge things along.   Which will give us more places to link to and get the practical questions answered.&lt;img src="http://feeds.feedburner.com/~r/PlanetLtc/~4/436837141" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 15 Oct 2008 00:23:00 -0700</pubDate>
<feedburner:origLink>http://well-itdepends.blogspot.com/</feedburner:origLink></item>
</channel>
</rss>
