<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
>

  <channel rdf:about="http://lwn.net/headlines/192214/">
    <title>LWN: Comments on "OLS: On how user space sucks"</title>
    <link>http://lwn.net/Articles/192214/</link>
    <description>
This is a special feed containing comments posted
to the individual LWN article titled &quot;OLS: On how user space sucks&quot;.

    </description>

    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>2</syn:updateFrequency>
    <items>
      <rdf:Seq>
	<rdf:li resource="http://lwn.net/Articles/414744/rss" />
	<rdf:li resource="http://lwn.net/Articles/414393/rss" />
	<rdf:li resource="http://lwn.net/Articles/194596/rss" />
	<rdf:li resource="http://lwn.net/Articles/194305/rss" />
	<rdf:li resource="http://lwn.net/Articles/193954/rss" />
	<rdf:li resource="http://lwn.net/Articles/193388/rss" />
	<rdf:li resource="http://lwn.net/Articles/193330/rss" />
	<rdf:li resource="http://lwn.net/Articles/193250/rss" />
	<rdf:li resource="http://lwn.net/Articles/193112/rss" />
	<rdf:li resource="http://lwn.net/Articles/193120/rss" />
	<rdf:li resource="http://lwn.net/Articles/193101/rss" />
	<rdf:li resource="http://lwn.net/Articles/193062/rss" />
	<rdf:li resource="http://lwn.net/Articles/193060/rss" />
	<rdf:li resource="http://lwn.net/Articles/193024/rss" />
	<rdf:li resource="http://lwn.net/Articles/193016/rss" />
	<rdf:li resource="http://lwn.net/Articles/193004/rss" />
	<rdf:li resource="http://lwn.net/Articles/192690/rss" />
	<rdf:li resource="http://lwn.net/Articles/192662/rss" />
	<rdf:li resource="http://lwn.net/Articles/192653/rss" />
	<rdf:li resource="http://lwn.net/Articles/192652/rss" />
	<rdf:li resource="http://lwn.net/Articles/192651/rss" />
	<rdf:li resource="http://lwn.net/Articles/192650/rss" />
	<rdf:li resource="http://lwn.net/Articles/192644/rss" />
	<rdf:li resource="http://lwn.net/Articles/192638/rss" />
	<rdf:li resource="http://lwn.net/Articles/192618/rss" />
	<rdf:li resource="http://lwn.net/Articles/192509/rss" />
	<rdf:li resource="http://lwn.net/Articles/192485/rss" />
	<rdf:li resource="http://lwn.net/Articles/192467/rss" />
	<rdf:li resource="http://lwn.net/Articles/192465/rss" />
	<rdf:li resource="http://lwn.net/Articles/192466/rss" />
	<rdf:li resource="http://lwn.net/Articles/192464/rss" />
	<rdf:li resource="http://lwn.net/Articles/192460/rss" />
	<rdf:li resource="http://lwn.net/Articles/192450/rss" />
	<rdf:li resource="http://lwn.net/Articles/192433/rss" />
	<rdf:li resource="http://lwn.net/Articles/192395/rss" />
	<rdf:li resource="http://lwn.net/Articles/192392/rss" />
	<rdf:li resource="http://lwn.net/Articles/192371/rss" />
	<rdf:li resource="http://lwn.net/Articles/192356/rss" />
	<rdf:li resource="http://lwn.net/Articles/192344/rss" />
	<rdf:li resource="http://lwn.net/Articles/192347/rss" />
      
      </rdf:Seq>
    </items>

  </channel>
    <item rdf:about="http://lwn.net/Articles/414744/rss">
      <title>OLS: On how user space sucks</title>
      <link>http://lwn.net/Articles/414744/rss</link>
      <dc:date>2010-11-11T09:57:54+00:00</dc:date>
      <dc:creator>MKallas</dc:creator>
      <description>
      Yes, this would be something worth of a follow-up!&lt;/br&gt;
Besides, here's the &lt;a rel=&quot;nofollow&quot; href=&quot;http://www.codemonkey.org.uk/projects/talks/ols2k6.tar.gz&quot;&gt;updated link to the slides of Dave Jones' presentation &quot;Why userspace sucks&quot; (Magicpoint format)&lt;/a&gt;.
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/414393/rss">
      <title>OLS: On how user space sucks</title>
      <link>http://lwn.net/Articles/414393/rss</link>
      <dc:date>2010-11-10T10:11:43+00:00</dc:date>
      <dc:creator>Randakar</dc:creator>
      <description>
      &lt;div class=&quot;FormattedComment&quot;&gt;
(Sorry for raising this particular article from the grave)&lt;br&gt;
&lt;p&gt;
How much of this has been changed and/or fixed today?&lt;br&gt;
&lt;/div&gt;

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/194596/rss">
      <title>Infinite bloat</title>
      <link>http://lwn.net/Articles/194596/rss</link>
      <dc:date>2006-08-09T01:28:35+00:00</dc:date>
      <dc:creator>barrygould</dc:creator>
      <description>
      True was changed from a shell script to an executable due to the fact that running a shell for a user that wasn't supposed to be able to login (e.g. an ftp-only user) created a security hole (ctrl-c could get you a shell).&lt;br&gt;
&lt;p&gt;
Barry&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/194305/rss">
      <title>gtk file selector dialog</title>
      <link>http://lwn.net/Articles/194305/rss</link>
      <dc:date>2006-08-06T16:07:59+00:00</dc:date>
      <dc:creator>Duncan</dc:creator>
      <description>
      &lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; Does [...] gnome/kde has a &quot;open with application&quot;&lt;/font&gt;&lt;br&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; dialog like  the one windows uses&lt;/font&gt;&lt;br&gt;
&lt;p&gt;
KDE (3.5.4) does.  It pops up a 3-section window, textbox file chooser on &lt;br&gt;
top (browse button to the right), a tree-view copy of the K-Menu in the &lt;br&gt;
center, and two checkbox options on the bottom, run in terminal (with a &lt;br&gt;
don't close after exit suboption that's dimmed out until run in terminal &lt;br&gt;
is selected), and remember application association (similar to the &lt;br&gt;
MSWormOS dialog option).  Below that are the usual OK/Cancel buttons.&lt;br&gt;
&lt;p&gt;
Duncan&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193954/rss">
      <title>gtk file selector dialog</title>
      <link>http://lwn.net/Articles/193954/rss</link>
      <dc:date>2006-08-03T09:17:35+00:00</dc:date>
      <dc:creator>kelvin</dc:creator>
      <description>
      &lt;i&gt;If you're unfortunate enough to navigate to /usr/bin using it, it will probably lock up for a good 2 minutes as it reads 10+ mb of data and makes tens of thousands of system calls.&lt;/i&gt;

&lt;p&gt;This was all too true on older versions of GTK+, but the file selector (among other GTK-things) has been heavily profiled and improved in the latest versions.  On this P4/3GHz Ubuntu install with GTK+ 2.8.20, a cold-cache opening of /usr/bin takes roughly 2 seconds (including display of the &quot;undecipherable icons&quot;).&lt;/p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193388/rss">
      <title>Test, with &quot;test&quot; vs /usr/bin/test</title>
      <link>http://lwn.net/Articles/193388/rss</link>
      <dc:date>2006-07-29T15:43:50+00:00</dc:date>
      <dc:creator>kreutzm</dc:creator>
      <description>
      Where do you see that &quot;60x&quot;? ALso I'd advise you to use time(1) next time ;-)&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193330/rss">
      <title>OLS: On how user space sucks</title>
      <link>http://lwn.net/Articles/193330/rss</link>
      <dc:date>2006-07-28T17:45:15+00:00</dc:date>
      <dc:creator>sandmann</dc:creator>
      <description>
      &lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; Wow. I'm not a particularly good coder, but my understanding is that if it polls like a large chunk of the desktop programs do, generally, you've done it wrong. I know of the sleep() and usleep() functions, and I'm pretty sure could figure out callbacks.&lt;/font&gt;&lt;br&gt;
&lt;p&gt;
Uh, are you saying that using poll() is wrong?&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193250/rss">
      <title>gtk file selector dialog</title>
      <link>http://lwn.net/Articles/193250/rss</link>
      <dc:date>2006-07-28T15:03:13+00:00</dc:date>
      <dc:creator>bjornen</dc:creator>
      <description>
      &lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; So... for now I mostly use opera, at least on slow machines.&lt;/font&gt;&lt;br&gt;
&lt;p&gt;
Ouch! opera 9.0-20060616.6 is one of the worst offenders on my computer (a &lt;br&gt;
750MHz P4 laptop (dell i8k)).&lt;br&gt;
&lt;p&gt;
top's TIME+ column says it used 24 CPU seconds by the time it's done &lt;br&gt;
loading. After this it continues to steal ~3% CPU by itself and increasing &lt;br&gt;
Xfree86's CPU usage to ~7%.&lt;br&gt;
&lt;p&gt;
And this on a fresh install, only 9 tabs opened, the window minimised and &lt;br&gt;
javascript, plugins, et al turned off.&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
There some surprising blame and constructive criticism in Federico Mena &lt;br&gt;
Quintero's blog - &lt;br&gt;
&lt;a href=&quot;http://primates.ximian.com/~federico/news-2005-11.html#moz-images&quot;&gt;http://primates.ximian.com/~federico/news-2005-11.html#mo...&lt;/a&gt;&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193112/rss">
      <title>Profiling before you optimize</title>
      <link>http://lwn.net/Articles/193112/rss</link>
      <dc:date>2006-07-27T17:26:54+00:00</dc:date>
      <dc:creator>Thalience</dc:creator>
      <description>
      Ok. Those are reasonable numbers to work with. Thanks for making the effort!&lt;br&gt;
&lt;p&gt;
I still think, however, that ditching auto-detection would be to throw the baby out with the bathwater. By focusing more attention on hot-plug style auto-detection, we can have both fast startup and reliable, effortless hardware support.&lt;br&gt;
&lt;p&gt;
As an aside, I've always thought that Kudzu was a very appropriate name for that particular peice of software. :)&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193120/rss">
      <title>OLS: On how user space sucks</title>
      <link>http://lwn.net/Articles/193120/rss</link>
      <dc:date>2006-07-27T17:15:56+00:00</dc:date>
      <dc:creator>lockhart</dc:creator>
      <description>
      &lt;p&gt;
Or see the individual paper at &lt;a href=&quot;http://ols2006.108.redhat.com/&quot;&gt;http://ols2006.108.redhat.com/&lt;/a&gt;&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193101/rss">
      <title>Sometimes userspace is made to suck, I mean poll</title>
      <link>http://lwn.net/Articles/193101/rss</link>
      <dc:date>2006-07-27T16:34:02+00:00</dc:date>
      <dc:creator>gdt</dc:creator>
      <description>
      &lt;p&gt;linux-2.6.17/Documentation/feature-removal-schedule.txt says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What: mount/umount uevents&lt;br&gt;
When: February 2007&lt;br&gt;
Why: These events are not correct, and do not properly let userspace know
when a file system has been mounted or unmounted.  Userspace should
poll the /proc/mounts file instead to detect this properly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also, try and detect if an unrelated process is running without polling (hint: *notify doesn't work on procfs).&lt;/p&gt;

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193062/rss">
      <title>gtk file selector dialog</title>
      <link>http://lwn.net/Articles/193062/rss</link>
      <dc:date>2006-07-27T14:33:43+00:00</dc:date>
      <dc:creator>emj</dc:creator>
      <description>
      &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=259594&quot;&gt;Here is te bug report in bugzilla&lt;/a&gt;  all you have to do is fix it.

Does any one know if gnome/kde has a &quot;open with application&quot; dialog like &lt;a href=&quot;https://bugzilla.mozilla.org/attachment.cgi?id=163237&amp;action=view&quot;&gt; the one windows uses&lt;/a&gt;

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193060/rss">
      <title>gtk file selector dialog</title>
      <link>http://lwn.net/Articles/193060/rss</link>
      <dc:date>2006-07-27T14:21:50+00:00</dc:date>
      <dc:creator>emj</dc:creator>
      <description>
      The best part is you can't just enter a command to execute having firefox look it up in the path.. So this bug of GTK fileselector only show up because a misfeature in Firefox.. ;-( &lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193024/rss">
      <title>gtk file selector dialog</title>
      <link>http://lwn.net/Articles/193024/rss</link>
      <dc:date>2006-07-27T11:13:13+00:00</dc:date>
      <dc:creator>jbh</dc:creator>
      <description>
      Yes! 2 minutes to choose an application sounds about right (even if I know the exact path and write it in the Ctrl-L location dialog).&lt;br&gt;
&lt;p&gt;
I guess it wouldn't be too hard to work around either, but I really don't want to wade into the flame fest that surrounds the gtk file chooser. So... for now I mostly use opera, at least on slow machines.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193016/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/193016/rss</link>
      <dc:date>2006-07-27T09:35:11+00:00</dc:date>
      <dc:creator>nix</dc:creator>
      <description>
      ... except of course that if you're a poor sod whose home directory is mounted over the network (perhaps from a centralized RAIDed fileserver), then, oops, the damn thing falls back to polling (over a network!)&lt;br&gt;
&lt;p&gt;
Apparently its inability to send notifications to other copies of itself over the network is a *feature*, but given that you're using NFS or a similar fs in any case, I can't imagine what extra security threats could be opened by sending notifications around. (FAM could do this.)&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/193004/rss">
      <title>Profiling before you optimize</title>
      <link>http://lwn.net/Articles/193004/rss</link>
      <dc:date>2006-07-27T07:54:01+00:00</dc:date>
      <dc:creator>ekj</dc:creator>
      <description>
      Not scientifically valid profiles, no.&lt;p&gt;

But bootup-time (measured from GRUB loads the kernel until the last startup-script finishes) improved from 1:48 to 1:32 simply by disabling kudzu (which does detection of new hardware).&lt;p&gt;

Uninstalling packages that where auto-installed without question, and that support hardware I don't have shaved another 10 seconds off that to aproximately 1:23.&lt;p&gt;

1:23 and 1:48 ain't that hugely different, but it *does* mean a 30% increase in bootup-time for trying to detect hardware I don't have on every bootup.&lt;p&gt;

Some hardware is regularily plugged in an out. It's reasonable (and good) to try to detect such. But that should happen on the fly, and not as part of a bootup-script. Afterall, the user may very well plug in a usb-stick or whatever *after* logging in.&lt;p&gt;

Other hardware (like for example a pcmcia-slot) is rather unlikely to suddenly appear. I'm guessing that 99.9% of the computers that don't have it when the distro is installed, will *never* have it.
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192690/rss">
      <title>Infinite bloat</title>
      <link>http://lwn.net/Articles/192690/rss</link>
      <dc:date>2006-07-25T12:05:35+00:00</dc:date>
      <dc:creator>nix</dc:creator>
      <description>
      That is all GNU libc-version-dependent, and happens before main() is entered.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192662/rss">
      <title>Test, with &quot;test&quot; vs /usr/bin/test</title>
      <link>http://lwn.net/Articles/192662/rss</link>
      <dc:date>2006-07-25T03:59:12+00:00</dc:date>
      <dc:creator>Richard_J_Neill</dc:creator>
      <description>
      &quot;if [ a = b ] &quot; and &quot;if test a = b &quot; are both shell-builtins. If you want the other one, you have to call /usr/bin/test&lt;br&gt;
&lt;p&gt;
$ date;  for ((i=0; i&amp;lt;10000; i++)) ; do if [ a = b ] ; then c=d ; fi ; done ;date&lt;br&gt;
Tue Jul 25 04:51:16 BST 2006&lt;br&gt;
Tue Jul 25 04:51:16 BST 2006&lt;br&gt;
&lt;p&gt;
$ date;  for ((i=0; i&amp;lt;10000; i++)) ; do if test a = b  ; then c=d ; fi ; done ;date&lt;br&gt;
Tue Jul 25 04:51:27 BST 2006&lt;br&gt;
Tue Jul 25 04:51:27 BST 2006&lt;br&gt;
&lt;p&gt;
$ date;  for ((i=0; i&amp;lt;10000; i++)) ; do if /usr/bin/test a = b  ; then c=d ; fi ; done ;date&lt;br&gt;
Tue Jul 25 04:51:33 BST 2006&lt;br&gt;
Tue Jul 25 04:51:50 BST 2006&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
It's a huge difference! The script with the builtins runs 60 times faster.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192653/rss">
      <title>gtk file selector dialog</title>
      <link>http://lwn.net/Articles/192653/rss</link>
      <dc:date>2006-07-25T01:49:38+00:00</dc:date>
      <dc:creator>joey</dc:creator>
      <description>
      My favorite example at the moment is the gtk file selector dialog, as seen in firefox. Each time you change directories, it first uses getdents to get all the files in the directory, then stats each individual file, then _reads_ 4k of each file to determine the file type. That information is used to put undecipherable tiny useless icons next to the files indicating their file type.&lt;br&gt;
&lt;p&gt;
If you're unfortunate enough to navigate to /usr/bin using it, it will probably lock up for a good 2 minutes as it reads 10+ mb of data and makes tens of thousands of system calls. Compare with ls /usr/bin which takes about 0.2 seconds even in inefficient sort and colorise mode.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192652/rss">
      <title>Infinite bloat</title>
      <link>http://lwn.net/Articles/192652/rss</link>
      <dc:date>2006-07-25T01:40:25+00:00</dc:date>
      <dc:creator>joey</dc:creator>
      <description>
      Shell coders who are really interested in being efficient don't use external commands like /bin/true anyway, when the shell builtin &quot;:&quot; will do the same thing.&lt;br&gt;
&lt;p&gt;
(true is also a builtin in bash and dash, but I prefer &quot;:&quot; for space-efficiency also.)&lt;br&gt;
&lt;p&gt;
However, your version of gnu true doesn't seem to match mine, which opens only /usr/lib/locale/locale-archive, and which is faster than the zero-byte  version.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192651/rss">
      <title>Infinite bloat</title>
      <link>http://lwn.net/Articles/192651/rss</link>
      <dc:date>2006-07-25T01:11:50+00:00</dc:date>
      <dc:creator>zlynx</dc:creator>
      <description>
      Not mine, but I remembered seeing it before.&lt;br&gt;
&lt;p&gt;
Here you go :)&lt;br&gt;
&lt;a href=&quot;http://www.muppetlabs.com/~breadbox/software/tiny/true.asm.txt&quot;&gt;http://www.muppetlabs.com/~breadbox/software/tiny/true.as...&lt;/a&gt;&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192650/rss">
      <title>Infinite bloat</title>
      <link>http://lwn.net/Articles/192650/rss</link>
      <dc:date>2006-07-25T01:00:43+00:00</dc:date>
      <dc:creator>jonabbey</dc:creator>
      <description>
      But invoking a complete /bin/sh process to evaluate the empty shell script file would have been worse, surely?&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192644/rss">
      <title>OLS: On how user space sucks</title>
      <link>http://lwn.net/Articles/192644/rss</link>
      <dc:date>2006-07-24T23:27:49+00:00</dc:date>
      <dc:creator>cjwatson</dc:creator>
      <description>
      On Ubuntu, pcmciautils is installed by default because - aside from its init script - it's pretty small and lightweight (compared to the monster that was pcmcia-cs/cardmgr) and it simplifies the installer, debugging the resulting system, etc. if we just install it all the time.&lt;br&gt;
&lt;p&gt;
Per Olofsson simplified that init script a fair bit in Debian; Edgy has that simplification, and e.g. no longer calls laptop-detect.&lt;br&gt;
&lt;p&gt;
It's also worth noting that 'case' in shell scripts doesn't spawn a subprocess, unlike 'if [ ... ]', so simply counting conditionals doesn't always give you a fair picture.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192638/rss">
      <title>OLS: On how user space sucks</title>
      <link>http://lwn.net/Articles/192638/rss</link>
      <dc:date>2006-07-24T23:18:21+00:00</dc:date>
      <dc:creator>bluefoxicy</dc:creator>
      <description>
      &lt;p&gt;
You know all you people are gathering nice profiling data and all, I'd like to know all the stuff that normally gets scanned for and why it's relevant.  Seems to me the lot of you are running strace and finding a djillion &lt;tt&gt;gettimeofday()&lt;/tt&gt;s et al; wouldn't it be nice to have a small shell script that does this and spits out timing information?
&lt;/p&gt;

&lt;p&gt;
Unfortunately oprofile tends to suck and eat up gigs of hard disk space in a few days, else it'd be interesting to have a method of automatic profiling and reporting.  Of course we then sacrifice cycles to do runtime profiling, which is no good in a production environment; but I'd volunteer some CPU time to gather data like that, it's not that much of a drag for light usage like typical desktop stuff.  I'm not sure of the security implications here ... runtime timing data may be useful for getting parts of passwords or encryption keys, if it's detailed enough; but that's black magic to me so far.
&lt;/p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192618/rss">
      <title>Infinite bloat</title>
      <link>http://lwn.net/Articles/192618/rss</link>
      <dc:date>2006-07-24T21:01:23+00:00</dc:date>
      <dc:creator>aegl</dc:creator>
      <description>
      A long time ago in a Unix version far, far away /bin/true was an empty shell script (since it was executable, the shell would run it as a shell script when the kernel failed the exec(2), with nothing in the script, the shell returned a 0 exit code).&lt;br&gt;
&lt;p&gt;
$ ls -l /bin/true&lt;br&gt;
-rwxr-xr-x  1 root root 21969 2004-04-05 21:32 /bin/true&lt;br&gt;
&lt;p&gt;
Infinite bloat!&lt;br&gt;
&lt;p&gt;
But it is worse.  Run strace on /bin/true, and you'll see it open and mmap a dozen locale files (and try and fail to open a dozen more).&lt;br&gt;
&lt;p&gt;
The problems here seem to have arisen because someone decided to add &quot;--version&quot; and &quot;--help&quot; arguments.  Aaargggghhhh!&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192509/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192509/rss</link>
      <dc:date>2006-07-24T12:27:43+00:00</dc:date>
      <dc:creator>NAR</dc:creator>
      <description>
      &lt;I&gt;My hardware is supported out of the box on new kernels, which is wasn't for older.&lt;/I&gt;
&lt;P&gt;
Your mileage may vary, but I never managed to boot my old 486 with 2.6 kernel - fortunately it worked with 2.4. It didn't worked well, the TCP connection tracking code kept tracking connections that were long gone, so the system ran out of memory, but it still worked. On the other hand, one of the two reasons I use 2.6 on my other computer is that with 2.6 I dont' have to reboot between watching a DVD and burning a CD-R.
&lt;P&gt;
&lt;I&gt;Stability has improved. Wireless support has improved. Udev makes things easier for me&lt;/I&gt;
&lt;P&gt;
Again your mileage may vary, but my computer locks up hard with every single 2.6 if I make a larger I/O operation while watching TV with xawtv - and this wouldn't make a useful bug report. I don't have wireless cards and never felt the need for dynamic /dev, so these features do not make me happy.
&lt;P&gt;
&lt;I&gt;WHY 2.6.15, 2.6.16, 2.6.17 series kernels are unusable&lt;/I&gt;
&lt;P&gt;
Recording audio from TV doesn't work with mplayer. I've reported the bug and it's supposed to be in mplayer and supposed to be fixed, yet it still didn't work when I tried last time. So I stick with 2.6.14.
&lt;P&gt;
&lt;CENTER&gt;Bye,NAR&lt;/CENTER&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192485/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192485/rss</link>
      <dc:date>2006-07-24T06:42:24+00:00</dc:date>
      <dc:creator>drag</dc:creator>
      <description>
      Each kernel gets better for me. 2.4 series was better then 2.2. 2.6 is better for me then 2.4&lt;br&gt;
&lt;p&gt;
Lower latencies, more usable desktop. Better responsiveness. My hardware is supported out of the box on new kernels, which is wasn't for older. ALSA sound drivers are a huge improvement over OSS for me.  With dmix I can have, get this, more the _one_sound_ at a time and it doesn't sound like crap. Multimedia performance has improved.&lt;br&gt;
&lt;p&gt;
(of course I am still taking about the kernel here.. it's desktop scedualing options makes life better)&lt;br&gt;
&lt;p&gt;
Stability has improved. Wireless support has improved. Udev makes things easier for me now that I just tell the computer what /dev files I want vs having to dig around and finding the stupid major minor numbers for everything.&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
Maybe if the other person was to post WHY 2.6.15, 2.6.16, 2.6.17 series kernels are unusable maybe they would have receive more sympathy.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192467/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192467/rss</link>
      <dc:date>2006-07-23T18:00:17+00:00</dc:date>
      <dc:creator>cventers</dc:creator>
      <description>
      If 'cheap' is a function including n (the rate of change) rather than a &lt;br&gt;
constant, then I think the kernel is about as 'cheap' as you can get.&lt;br&gt;
&lt;p&gt;
It's unfortunate that you've had problems since 2.6.14. What sort of &lt;br&gt;
problems are you having?&lt;br&gt;
&lt;p&gt;
After having seen the survey conducted here on kernel quality, it would &lt;br&gt;
seem like most users are pleased (I'm one of them).&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192465/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192465/rss</link>
      <dc:date>2006-07-23T17:55:49+00:00</dc:date>
      <dc:creator>NAR</dc:creator>
      <description>
      &lt;I&gt;Look at the Linux 2.6 process - I would call that &quot;Fast, cheap, good&quot;. It's not perfect, but it's damn fast, it's still F/OSS and it's still /very/ good.&lt;/I&gt;
&lt;P&gt;
I wouldn't call the 2.6 process &quot;fast, cheap and good&quot;. It might be fast, but it's certainly not good (the last usable kernel for me was 2.6.14) and definitely not cheap - I'd like to know how many kernel developers are funded for their work on the kernel. I think it's not a particulary low number.
&lt;P&gt;
&lt;CENTER&gt;Bye,NAR&lt;/CENTER&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192466/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192466/rss</link>
      <dc:date>2006-07-23T17:55:06+00:00</dc:date>
      <dc:creator>cventers</dc:creator>
      <description>
      True, but this is something that should be part of the desktop &lt;br&gt;
infrastructure, not a part of every application. Most application &lt;br&gt;
programmers wouldn't have a lot of fun with Xlib either, but someone's got &lt;br&gt;
to do it...&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192464/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192464/rss</link>
      <dc:date>2006-07-23T17:51:27+00:00</dc:date>
      <dc:creator>NAR</dc:creator>
      <description>
      &lt;I&gt;in practice you must build something which tests for inotify at runtime and falls back to dnotify or even polling.[...]However, this is perfectly doable.&lt;/I&gt;
&lt;P&gt;
Yes, but I'm afraid this is way above the avarage application programmer's level.
&lt;P&gt;
&lt;CENTER&gt;Bye,NAR&lt;/CENTER&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192460/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192460/rss</link>
      <dc:date>2006-07-23T17:10:56+00:00</dc:date>
      <dc:creator>cventers</dc:creator>
      <description>
      Most of what you say about &quot;Fast, cheap, good. Pick two&quot; is fine and good. &lt;br&gt;
But all I'm really trying to say is that we, the F/OSS community, have the &lt;br&gt;
capacity to do better. Look at the Linux 2.6 process - I would call &lt;br&gt;
that &quot;Fast, cheap, good&quot;. It's not perfect, but it's damn fast, it's still &lt;br&gt;
F/OSS and it's still /very/ good.&lt;br&gt;
&lt;p&gt;
You could twist the definition of fast, cheap, and good enough to make &lt;br&gt;
the &quot;Pick two&quot; argument apply to any project. The problem I have &lt;br&gt;
with &quot;Pick two&quot; and the earlier optimization quote is simply that most of &lt;br&gt;
the time I've heard an engineer saying one, it's being invoked as an &lt;br&gt;
excuse for shoddy design. And I've personally witnessed that when you &lt;br&gt;
simply let a passion for your art drive your work, and sprinkle on a &lt;br&gt;
little bit of experience in the environment you're working in, you can &lt;br&gt;
deliver &quot;fast, cheap, good&quot; all at once.&lt;br&gt;
&lt;p&gt;
F/OSS is getting more and more industrialized, but depending on the &lt;br&gt;
project, the majority of the code still comes from people with that &lt;br&gt;
passion -- people just scratching their itch. I hope our projects don't &lt;br&gt;
erode into the same corporately-managed disasters as are so commonplace to &lt;br&gt;
the proprietary software engineer. But since engineers have the power in &lt;br&gt;
F/OSS, I think if we focus on passion and rejecting ideas like &quot;fast, &lt;br&gt;
cheap, good -- pick two,&quot; we'll be entirely successful in breaking the &lt;br&gt;
traditional rules of development once again.&lt;br&gt;
&lt;p&gt;
This is free software. The traditional rules of corporate development &lt;br&gt;
don't apply; please leave them at the door.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192450/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192450/rss</link>
      <dc:date>2006-07-23T13:08:22+00:00</dc:date>
      <dc:creator>pizza</dc:creator>
      <description>
      &quot;Fast, cheap, good.  Pick two&quot; is a reflection of the reality that nothing is without cost.&lt;br&gt;
&lt;p&gt;
If you want your software to be developed &quot;good and fast&quot;, then it's not going to be cheap.  If you want it &quot;fast and cheap&quot; then it's not going to be all that good.  If you want it &quot;good and cheap&quot; then it won't happen particularly quicky. &lt;br&gt;
&lt;p&gt;
&quot;fast and cheap&quot; is usually where software ends up when someone is directly footing the bill (and hence, there is an upper bound on cost, aka budgets/deadlines, and &quot;good&quot; tends to suffer).  &quot;Good and cheap&quot; is where F/OSS software traditionally lies, where the &quot;it'll be done when it's done&quot; attitude is the norm.  Then we end up with the likes of NASA (or other life-critical situtations), where the requirement of &quot;good&quot; is so important that it happens neither quicly nor cheaply.&lt;br&gt;
&lt;p&gt;
The problem with the above generalization is that many larger F/OSS projects (including Gnome) actually fall into the first category, as the majority of the &quot;work&quot; is done by people required to do so, with formal goals, deadlines and budgets.  F/OSS has gone up and been corporatized!&lt;br&gt;
&lt;p&gt;
(Another glaring hole in this generalization is that &quot;good&quot; means different things to everyone -- In the end, only the one who is footing the bill gets to make that call -- but that is the nature of generalizations..)&lt;br&gt;
 &lt;br&gt;
And finally, I would agree with you and chalk up the problems that Dave raised to (A) and (B), although they both are symptoms of (C) -- which is usually due to inexperience, not idiocy.  Subsequently, with better awareness of (A) and (B), (C) is lessened as the programmer presumably will learn from their mistakes.&lt;br&gt;
&lt;p&gt;
Dave's (&quot;spot on&quot;, as you put it) paper was a direct result of the idea embodied by the &quot;no premature optimization&quot; blurb that you took so much of an issue with.  Without that instrumentation, this handful of bugs/mistakes wouldn't have likely come to light, and we wouldn't have been able to learn from them.&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192433/rss">
      <title>Some more observations: xfce4-panel, firefox</title>
      <link>http://lwn.net/Articles/192433/rss</link>
      <dc:date>2006-07-23T00:09:08+00:00</dc:date>
      <dc:creator>hein.zelle</dc:creator>
      <description>
      Inspired by the above article, I went to check the first programs in the cpu ordered top-list on my system.  Although I realize the point of the article was more generic, it may be an interesting excercise to try this on your own system.  My system is running a recently updated debian unstable with kernel 2.6.17-1-k7.&lt;br&gt;
&lt;p&gt;
xfce4-panel: average 2% cpu usage. A strace of approximately 10 seconds shows 267 function calls to gettimeofday, and 141 to ioctl and poll.&lt;br&gt;
&lt;p&gt;
firefox: average just over 2% cpu usage.  A strace of approximately 10 seconds shows 594 calls to gettimeofday, 151 calls to poll, read and ioctl, 282 calls to futex.  I have no idea why it calls gettimeofday 4 times in a row in every cycle.&lt;br&gt;
&lt;p&gt;
Apparently cpu-unintensive polling is a more common problem than I thought it would be. Is using gettimeofday, ioctl and poll the common way to do this?&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192395/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192395/rss</link>
      <dc:date>2006-07-22T09:51:44+00:00</dc:date>
      <dc:creator>drag</dc:creator>
      <description>
      I am sure that it's worth complaining about... but it's a lot better then the 'famd' it replaced!&lt;br&gt;
&lt;p&gt;
For instance with famd if I had mount point or something like that in my home directory then it would crap out if I tried to go more then 2 directories deep. And basicly cause anything to do with gnome that concernes files (nautilus mostly)&lt;br&gt;
&lt;p&gt;
With gamin there is no problem. &lt;br&gt;
&lt;p&gt;
I think that a huge part of the problem we have with performance on Linux desktop nowadays is that everybody was scrambling to get just the basics in place and everything more or less working.&lt;br&gt;
&lt;p&gt;
Hal/Dbus/X.org/inotify(and it's userspace helpers)/desktop search stuff/udev.. etc etc. All of it is thrown together and made to 'make it just work'.&lt;br&gt;
&lt;p&gt;
Now it seems that the push is going towards making 'make it work well'. Filling out the blanks, improving performance. That sort of thing.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192392/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192392/rss</link>
      <dc:date>2006-07-22T06:07:23+00:00</dc:date>
      <dc:creator>dvdeug</dc:creator>
      <description>
      As far as I know, none of the modern distros build for a stock i386. You can't; the C++ libraries depend on i486 opcodes to properly implement threading, and while there are i386 alternatives, they're slow and unreliable.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192371/rss">
      <title>Pointers to the relevant bugs filed</title>
      <link>http://lwn.net/Articles/192371/rss</link>
      <dc:date>2006-07-21T21:39:48+00:00</dc:date>
      <dc:creator>davej</dc:creator>
      <description>
      I don't have pointers to bugs, because in a lot of cases, I just mailed/IRC'd the relevant developers.&lt;br&gt;
&lt;p&gt;
Lots of the examples I covered are already fixed, but there are still a number of outstanding issues.  I'll be rerunning the tests some time soon, and see what's left that sticks out, but based on data I collected not so long back, we're now doing a *lot* better than we used to.&lt;br&gt;
&lt;p&gt;
The initial tests the paper was based on were done on Fedora Core 5 test1 iirc, and I did some quick stats on an FC5 final release, and the amount of reads/stats/exec's were pretty much halved, even though we had added more functionality, and a few extra daemons etc.&lt;br&gt;
&lt;p&gt;
I'll be looking at this stuff again as we get closer to FC6.&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192356/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192356/rss</link>
      <dc:date>2006-07-21T20:14:15+00:00</dc:date>
      <dc:creator>cventers</dc:creator>
      <description>
      &lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; Most of your response is tangental to the argument I submitted.&lt;/font&gt;&lt;br&gt;
&lt;p&gt;
Really? I'm not sure I see how. It seems to me like you were listing &lt;br&gt;
counterpoints to my complaint about programming to the least common &lt;br&gt;
denominator, and I was systematically addressing them (including your &lt;br&gt;
quote about optimization)&lt;br&gt;
&lt;p&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; Here's the bottom line -- we're not all &quot;above average&quot; programmers.&lt;/font&gt;&lt;br&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; Even when we know what &quot;the right way&quot; is, we usually don't have that&lt;/font&gt;&lt;br&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; luxury due to externally-imposed constraints.&lt;/font&gt;&lt;br&gt;
&lt;p&gt;
What does &quot;average&quot; have to do with it? It doesn't take oodles of talent &lt;br&gt;
to build a model capable of using different implementations. Sometimes, &lt;br&gt;
it's even more trouble to try and come up with something generic!&lt;br&gt;
&lt;p&gt;
You allude to constraints but never mention what some of them might be.&lt;br&gt;
&lt;p&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; &quot;Cheap, fast, good. Pick two&quot;&lt;/font&gt;&lt;br&gt;
&lt;p&gt;
Why pick just two? One of the greatest things about free software &lt;br&gt;
development is that it's usually not the requirements-driven, &lt;br&gt;
oh-my-the-deadline-is-yesterday-and-the-customer-is-complaining-style &lt;br&gt;
development uncomfortably familiar to programmers working in the &lt;br&gt;
corporate world. And if our projects are being run that way (which I &lt;br&gt;
don't think they are), we should move further up the chain and ask why &lt;br&gt;
we're adopting policies and procedures that impose external constraints &lt;br&gt;
on our code quality.&lt;br&gt;
&lt;p&gt;
This stuff isn't actually all that complicated. The problem is either&lt;br&gt;
&lt;p&gt;
*A) No one had pointed out ways in which apps misbehave, so no one knew &lt;br&gt;
there was a problem (glad we have this paper to enumerate some examples!)&lt;br&gt;
*B) Developers did what they thought was 'good enough' and just didn't &lt;br&gt;
realize that their implementation didn't make their expectation&lt;br&gt;
*C) We're less than average programmers and we can't figure this stuff &lt;br&gt;
out for the life of us (doubt that, there's oodles of awesome free &lt;br&gt;
software from all of the major projects out there, which demonstrates &lt;br&gt;
competency)&lt;br&gt;
&lt;p&gt;
So I think Dave's paper was spot-on. We should skip the 'apologizing' &lt;br&gt;
step and move on to 'making it better'.&lt;br&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192344/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192344/rss</link>
      <dc:date>2006-07-21T19:18:58+00:00</dc:date>
      <dc:creator>pizza</dc:creator>
      <description>
      Most of your response is tangental to the argument I submitted.&lt;br&gt;
&lt;p&gt;
Here's the bottom line -- we're not all &quot;above average&quot; programmers.  Even when we know what &quot;the right way&quot; is, we usually don't have that luxury due to externally-imposed constraints.&lt;br&gt;
&lt;p&gt;
&quot;Cheap, fast, good.  Pick two&quot;&lt;br&gt;
&lt;p&gt;
      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/192347/rss">
      <title>inotify</title>
      <link>http://lwn.net/Articles/192347/rss</link>
      <dc:date>2006-07-21T18:31:40+00:00</dc:date>
      <dc:creator>nix</dc:creator>
      <description>
      fam 2.7.0 uses dnotify in any case, if it's available. It may not be as nice as inotify but it's a hell of a lot better than polling.&lt;br&gt;
&lt;p&gt;
&lt;p&gt;
Hm. Looking at the sources, gamin has had an inotify backend since v0.0.8, Aug 26 2004, *long* before inotify hit the kernel proper. It is enabled by default.&lt;br&gt;
&lt;p&gt;
Looks like this might be an out-and-out bug. I'll have a look this weekend and see if I can reproduce and fix it.&lt;br&gt;
      
      </description>
    </item>
</rdf:RDF>

