Log in

No account? Create an account

Previous Entry | Next Entry

OLS: Day Two

I seem to be fairly consistently a day behind in my write-ups; here's Day Two, yesterday, of the Ottawa Linux Symposium:

First up is a tutorial I was really looking forward to: Write a Real, Working Linux Driver. One of the prerequisites for this tutorial was a laptop running the latest version of the 2.6 kernel from kernel.org. Being a total slacker, I didn't compile that kernel until yesterday morning, about 100 minutes before the tutorial began. On the good side, my laptop was able to compile it in time. On the bad side, I didn't entirely know which files to copy over to /boot and how to specify where root is in the new grub.conf entry (copying the existing Fedora examples didn't work). So I ran the 2.6.11-1.1369_FC4 kernel instead.

The device for which we were writing—or, perhaps, simulating writing—the driver is the Go!Temp thermometer. Each of us got one, along with various iterations of the code we were supposedly writing. Before looked at the code, we got a lesson in how USB works, which is more complicated than I'd imagined. We explored the kernel's device model by poking around in /sys. Things got over my head pretty quickly. But I had no problem compiling our developmental driver as it evolved toward something functional. Where I couldn't keep up was with the module load process; sometimes our kernel driver module loaded for me, and sometimes it didn't. After two-and-a-half hours, I didn't manage to reach the goal of having a little temperature output. It is unclear to me whether that's related to my running a (Fedora Core 4) kernel that was neither the latest nor one that I had the source code for.

I eventually did get the kernel that I'd compiled installed and running, and I plan to use that to try to get that driver working. I'll keep you updated.

Kernel driver writing is hard work, so I was hungry. In the adjacent mall's food court, a Québecois navy officer struck up a conversation with me as we ate. We talked about different places we'd each visited; he recommended the historic neighborhoods of Gatineau. I'll have to see if I have time to get over there on Sunday.

After lunch, I attended Building Murphy-Compatible Embedded Linux Systems. The speaker's contribution to this goal is "a framework for safe remote configuration and software upgrade of a Linux system that supports atomic transactions, parallel, interactive and programmed updates and multiple software versions with roll back." I could understand this framework—which he'd implemented too—only shallowly, but it sounds really clever. One part of the framework involves mounting a storage device "into a mount point in [a] temporary mount point of the version image." I can't help but think of Aaron in Primer taking a folded-up box with him into a box.

Next I went to Networking Driver Performance and Measurement - e1000 A Case Study [sic]. The speaker went over the history of e1000 driver development, and there was some discussion of, I think, a rarely-manifested flaw in TCP Segmention Offload that is popping up now that e1000 devices are handling massive amounts of traffic. Linux support for I/O Acceleration Technology reportedly "is just around the corner."

Following that was a talk on Enhancements to Linux I/O Scheduling. The speaker went over the four canonical types of I/O scheduling in Linux: anticipatory (AS), deadline, completely fair queueing (CFQ), and no-op. He had experienced problems with AS, the default, exhibiting a behavior he called deceptive idleness. So he came up with a cooperative anticipatory scheduler (CAS) that detects cooperative processes and anticipates accordingly. My understanding is that this scheduler thus includes both per-process and process group anticipation. He tested CAS using the Flexible Filesystem Benchmark, and CAS looked superior to AS. But the larger conclusion was that different situations call for different scheduling algorithms. His current work is toward selecting the best scheduler dynamically and automatically. It doesn't sound promising, though; last year I attended an I/O scheduler performance talk in which the researcher concluded that scheduler selection is a complicated issue at best, and not worth performing in many cases.

My day of talks over, I enjoyed a very nice dinner party hosted by sfllaw, who brought together some of the finest kernel hackers and their significant others, and me, for a delicious meal and conversation. This event was smaller than last year's party, but I ended up with the same dilemma of feeling sleepy at what this crowd considers an early hour at the same time that I can't tear myself away from the fascinating stories. I guess I can't complain, can I?



( 4 comments — Leave a comment )
Jul. 23rd, 2005 06:19 am (UTC)
I have two "l"s in my user name.
Jul. 23rd, 2005 06:21 am (UTC)
As well, I am glad you made it. I hope you had fun!
Jul. 23rd, 2005 12:00 pm (UTC)
Fixed—sorry about that. I'd wondered why LJ put a satelite dish icon next to your username, but it didn't occur to me that's because it wasn't your username but rather a syndicated account addressing legal issues that differs by one character from your username.
Jul. 23rd, 2005 01:17 pm (UTC)
My last name has always tempted me to go into the legal field and open "Law Law Associates".

Alas, my love of bad puns has never outruled my common sense.
( 4 comments — Leave a comment )