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

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title type="text">diary of a window system hacker</title>
<subtitle type="html"><![CDATA[
can't think of a clever byline
]]></subtitle>
<id>http://www.fooishbar.org/blog/tech/ubuntu</id>
<link rel="alternate" type="text/html" href="http://www.fooishbar.org/blog" />
<link rel="self" type="text/xml" href="http://www.fooishbar.org/blog/tech/ubuntu" />

<author>
<name>Daniel Stone</name>
<uri>http://www.fooishbar.org/blog/tech/ubuntu</uri>
<email>daniel@fooishbar.org</email>
</author>
<rights>Copyright 2004-2009 Daniel Stone, licensed under Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License</rights>
<generator uri="http://pyblosxom.sourceforge.net/" version="1.3.2 2/13/2006">
PyBlosxom http://pyblosxom.sourceforge.net/ 1.3.2 2/13/2006
</generator>

<updated>2009-04-20T14:27:00Z</updated>
<!-- icon?  logo?  -->

<entry>
<title type="html">do you now?</title>
<category term="" />
<id>http://www.fooishbar.org/blog/2009/04/20/idoitwithubuntu-2009-04-20-15-27</id>
<updated>2009-04-20T14:27:00Z</updated>
<published>2009-04-20T14:27:00Z</published>
<link rel="alternate" type="text/html" href="http://www.fooishbar.org/blog/tech/ubuntu/idoitwithubuntu-2009-04-20-15-27" />
<content type="html">Received in an SMS from a friend: &apos;I just walked past a bloke with pasty
white skin and a ponytail wearing a t-shirt that said &apos;I do it with
Ubuntu&apos;.&apos;
</content>
</entry>

<entry>
<title type="html">thirty?  hmm.</title>
<category term="" />
<id>http://www.fooishbar.org/blog/2005/03/15/ubuntuNumbers-2005-03-15-23-04</id>
<updated>2005-03-15T23:04:00Z</updated>
<published>2005-03-15T23:04:00Z</published>
<link rel="alternate" type="text/html" href="http://www.fooishbar.org/blog/tech/ubuntu/ubuntuNumbers-2005-03-15-23-04" />
<content type="html">Wouter asserts that &lt;a
href=&quot;http://www.grep.be/blog/2005/03/15#release_meeting_retort&quot;&gt;Ubuntu has
more than 30 full-time employees&lt;/a&gt;.  I know it wasn&apos;t his number (Scott came
up with it and should&apos;ve been a bit more clear), but it&apos;s badly wrong, anyway.
Canonical has more than 30 employees, but Ubuntu ... the full-time distribution
team hardly breaks double figures.  That&apos;s pretty comparable to the number of
people working on the m68k port (albeit the latter are not funded full-time).
But it&apos;s an interesting point nonetheless, and thanks to the assumption that
Canonical does nothing other than Ubuntu, people seem to assume that Ubuntu was
produced by a team of 30, 40, whatever; not even close.  That team was barely
ten.
</content>
</entry>

<entry>
<title type="html">optimise me harder</title>
<category term="" />
<id>http://www.fooishbar.org/blog/2004/12/09/fastBootMiniBoF-2004-12-09-13-45</id>
<updated>2004-12-09T13:45:00Z</updated>
<published>2004-12-09T13:45:00Z</published>
<link rel="alternate" type="text/html" href="http://www.fooishbar.org/blog/tech/ubuntu/fastBootMiniBoF-2004-12-09-13-45" />
<content type="html">(Note: Some of the graphs in here aren&apos;t entirely in step with the text -- we
didn&apos;t really think about blogging it until very late in the game, so the
graphs linked to are more a rough idea of where we were at the time, not
exhaustive.)&lt;br /&gt;&lt;br /&gt;
There&apos;s nothing like a &lt;a
href=&quot;http://www.redhat.com/archives/fedora-devel-list/2004-November/msg01374.html&quot;&gt;challenge&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;
Along with the rest of &lt;a href=&quot;http://www.canonical.com&quot;&gt;Canonical&lt;/a&gt; and a
whole bunch of excellent community guys, Thom May and I have been at the Ubuntu
conference at Mataro since last Sunday.  While imbibing large amounts of Coke,
Thom decided that boot was probably too slow, with an eye on the promised
forty-second desktop.  He put bootchart on his laptop, and there the madness
started.
&lt;br /&gt;&lt;br /&gt;
Originally, we believed our boot was &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041208-1215.png&quot;&gt;around
20 seconds&lt;/a&gt; without readahead, and felt pretty good about ourselves.  But
once we moved bootchart into the right place (starting at the top of rc2 is
not a useful metric), we had a &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041208-1230.png&quot;&gt;more
realistic view&lt;/a&gt; -- around 1min for a boot to the gdm login screen -- and set
to work.  One thing we found was that gdm slept.  A lot.  After I took to the
gdm source with a very large axe, we &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041208-1340.png&quot;&gt;no
longer had a huge gulf&lt;/a&gt; in our boot process with time elapsing, but no disk
or CPU usage.
&lt;br /&gt;&lt;br /&gt;
We had already replaced large swathes of the massive shell horror that is known
as hotplug with grepmap, so it was time to look at other things.  cupsys in
particular was a huge disk hog, so some fine-tuning from Scott James Remnant
soon &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041209-0940.png&quot;&gt;set
that in order&lt;/a&gt;.  But we had kicked the more obnoxious sleeps out of gdm,
and we were still looking at well over fifteen seconds from X starting through
to gdm actually prompting you for your login, which sucked.  I stopped laughing
at Thom when he told me the X server startup &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041208-1808.png&quot;&gt;really
was too slow&lt;/a&gt;.  So I straced it.
&lt;br /&gt;&lt;br /&gt;
Output of strace -e file (i.e. show all file accesses) when starting X:
&lt;br /&gt;
&lt;code&gt;5702 xorg-trace-file&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;
In July, I got very frustrated with the old, crufty, and generally horrid
MetroLink loader in XFree86/X.Org, which was also used in Debrix (being a fork
of X.Org), and threw it away.
&lt;br /&gt;
&lt;code&gt;
daniels@catsby:~/x/xorg/xc/programs/Xserver/hw/xfree86/loader% wc -l *.[ch] | tail -1&lt;br /&gt;
 13540 total&lt;br /&gt;
daniels@catsby:~/x/debrix/debrix--devel/hw/xorg/loader% wc -l *.[ch] | tail -1&lt;br /&gt;
  897 total&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
It seemed like some major surgery was needed on the loader, or at least to beat
the more obnoxious parts out of it.  For instance, stat()ing the Radeon driver
forty-one times.  I don&apos;t even have a Radeon in this machine; it&apos;s i855-based.
Turns out that the loader was running a regular expression over every single
file in /usr/X11R6/lib/modules, and then stat()ing them, for every module load.
It is now &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041208-2219.png&quot;&gt;no
longer doing so&lt;/a&gt;:&lt;br /&gt;
&lt;code&gt;
daniels@catsby:~/public_html% wc -l xorg.trace-1040&lt;br /&gt;
1904 xorg.trace-1040&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
With a lazy 3798 file accesses gone, there was no longer a massive disk I/O hit
as X started, but it was still not enormously quick.  Further beating of gdm
ensued, and we discovered that scaling a 1600x1200 pixmap down and then
overlaying a transparent PNG really, really hurt.  Enabling autologin let us fly
through the process, but this was far too much of a security risk to consider,
so we went back to measuring gdm proper.
&lt;br /&gt;&lt;br /&gt;
While we were at it, in an inspired move, Scott James Remnant set to work on
cupsd, which really was a horrific disk hog, so soon &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041209-0940.png&quot;&gt;set
that in order&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;
Hotplug was still doing a lot of work (but no disk I/O) for a very long time, so
we decided to parallelise hotplug and readahead, so we could have pure CPU grunt
work interleaved with smashing the disk.  This seems to have worked very
effectively, and has shaved quite some time off our accesses.  Starting some
parts of rc2 in parallel seems to have worked very well, also; gdm starts at 14
(before most services that you don&apos;t need for a desktop).
&lt;br /&gt;&lt;br /&gt;
At present, the biggest bottleneck we have is hotplug; &lt;a
href=&quot;http://www.netsplit.com/blog&quot;&gt;Scott&lt;/a&gt; is working on replacing the
hotplug init script with moving through udevd, and replacing many of our init
scripts with hotplug triggers, so we can more effectively parallelise most of
our boot process.  Thom is, at present, working on moving all the readahead
files somewhere where they can be streamed quickly; at the moment, we are
getting flayed by seek()s.  Beyond this, gdm looks like it needs some serious
work, but we believe we are at a very strong position, especially after &lt;a
href=&quot;http://www.planetarytramp.net/bootchart/bootchart-20041209-1150.png&quot;&gt;beating
more file accesses out of X&lt;/a&gt; (this is our current bootchart, at time of
writing).
&lt;br /&gt;&lt;br /&gt;
These tests were done (by both myself and Thom) on IBM ThinkPad X40s, with
Pentium M 1.2GHz CPus and low-speed hard drives.  One of the larger blockers is
i855, which takes forever to initialise through VBE: &apos;profiling&apos; the X server by
throwing in time information with all the logs showed us nothing was usefully
slow (in terms of low-hanging fruit), but video initialisation still takes a
good four or so seconds.  It&apos;ll be interesting to measure the results on
standard desktop disks (not 15kRPM SCSI or such) and a chipset we have the full
video BIOS information for.  However, everything we have done thus far is
totally applicable to other systems -- hotplug still runs in full, so you can
dump the exact same stuff we&apos;re using on a totally different system (even
PowerPC, if you like), and it will still work perfectly fine, with no
modification.
&lt;br /&gt;&lt;br /&gt;
Current statistics: booting through a full, typical startup to GDM login screen,
including hotplug -- 42 seconds (warty: 90 or more); file accesses when starting
the X server -- 1093 (warty: at least 5700); files read in by readahead: 1000
(total size: 58M).
&lt;br /&gt;&lt;br /&gt;
(Update: X is now down to 538 opens.)
</content>
</entry>

<entry>
<title type="html">new, from hoary-changes@lists.ubuntu.com ...</title>
<category term="" />
<id>http://www.fooishbar.org/blog/2004/11/09/wow-2004-11-09-16-41</id>
<updated>2004-11-09T16:41:00Z</updated>
<published>2004-11-09T16:41:00Z</published>
<link rel="alternate" type="text/html" href="http://www.fooishbar.org/blog/tech/ubuntu/wow-2004-11-09-16-41" />
<content type="html">&lt;cite&gt;71  S  Nov 09 Fabio M. Di Nit (   0) Accepted xorg 6.8.1-0ubuntu1 (source)&lt;/cite&gt;
</content>
</entry>

<entry>
<title type="html">hello azeem!</title>
<category term="" />
<id>http://www.fooishbar.org/blog/2004/10/17/replyToAzeem-2004-10-17-01-35</id>
<updated>2004-10-17T00:35:00Z</updated>
<published>2004-10-17T00:35:00Z</published>
<link rel="alternate" type="text/html" href="http://www.fooishbar.org/blog/tech/ubuntu/replyToAzeem-2004-10-17-01-35" />
<content type="html">Michael Banck &lt;a
href=&quot;http://www.advogato.org/person/mbanck/diary.html?start=24&quot;&gt;wonders about
the Ubuntu development model&lt;/a&gt;.  Two things I can provide constructive answers
to are:
&lt;ul&gt;
&lt;li&gt;NMUs: no, we don&apos;t have maintainership as such.  However, we do have
    unofficial areas -- for example, myself and Fabio take care of X, I do most
    of the stuff relating to ppp and also discover1 (including the data list), et
    al.  Doing pppoe without a PPPoE setup has been interesting, but oh well.
&lt;/li&gt;
&lt;li&gt;Debian: for most all of us, Debian was an after-work thing anyway (or, at
    least, a small part of work).  Nothing&apos;s changed here; the only thing that&apos;s
    changed for me is that I haven&apos;t gotten around to setting up a chroot yet
    (only got DSL bumped up to unlimited recently), so I don&apos;t have a Debian
    machine to build on: I get all my uploads sponsored right now.&lt;/li&gt;
&lt;/ul&gt;
</content>
</entry>

<entry>
<title type="html">ghetto mirror 101</title>
<category term="" />
<id>http://www.fooishbar.org/blog/2004/10/08/ghettoMirror-2004-10-08-03-05</id>
<updated>2004-10-08T02:05:00Z</updated>
<published>2004-10-08T02:05:00Z</published>
<link rel="alternate" type="text/html" href="http://www.fooishbar.org/blog/tech/ubuntu/ghettoMirror-2004-10-08-03-05" />
<content type="html">... in which our hero performs an install without a CD-ROM drive, seeded
almost entirely from /var/cache/apt/archives.
&lt;br /&gt;&lt;br /&gt;
I last installed my desktop ages ago, and since then I&apos;ve dist-upgraded almost
every package that&apos;s installed.  Installing my X40 has been fun: our bandwidth
is incredibly limited by transfer, so instead of grabbing an ISO (not like it
has a CD-ROM drive anyway), I decided to attempt a netboot install from
/var/cache/apt/archives.
&lt;br /&gt;&lt;br /&gt;
First, I set up apt-move to move /var/cache/apt/archives to a mirror directory,
and to mirror something replicating the standard Ubuntu archive.  Secondly,
I set up dhcpd3 to netboot the contents of pxeboot.tar.gz (found on
http://archive.ubuntu.com/ubuntu/dists/warty/main/daily-installer-i386), to
the trusty laptop.
&lt;br /&gt;&lt;br /&gt;
Now, here comes the fun.  Once this was done, I needed to wget the
main/debian-installer/binary-i386 Packages{,.gz,.bz2} file, and manually drop
the sums/sizes into the Release file, which needed to be altered to specify
the right component/suite.  Once this file was there, a small for script
got every single udeb specified in the d-i Packages file, and dropped it into
the pool structure.  Once all these things were satisfied, I was on my way to a
netboot install, with minimal bandwidth consumed; thanks to Colin Watson for
patiently putting up with my stupid questions.
</content>
</entry>
</feed>
