Planet Linux Plumbers Conf

June 03, 2009

Darrick Wong


/me rounded up a bunch of (old) panoramas and put them into the high-definition panorama viewer. Be sure to check out the (huge spike in memory cache when you load the) panorama previewer (click the "See All" button).

June 03, 2009 02:27 AM

August 27, 2008

Stephen Hemminger

Exploring transactional filesystems

In order to implement router style semantics, Vyatta allows setting many different configuration variables and then applying them all at once with a commit command. Currently, this is implemented by a combination of shell magic and unionfs. The problem is that keeping unionfs up to date and fixing the resulting crashes is major pain.

There must be better alternatives, current options include:
  • Replace unionfs with aufs which has less users yelling at it and more developers.
  • Use a filesystem like btrfs which has snapshots. This changes the model and makes api's like "what changed?" hard to implement.
  • Move to a pure userspace model using git. The problem here is that git as currently written is meant for users not transactions.
  • Use combination of copy, bind mount, and rsync.
  • Use a database for configuration. This is easier for general queries but is the most work. Conversion from existing format would be a pain.
Looks like a fun/hard problem. Don't expect any resolution soon.

by Linux Network Plumber ( at August 27, 2008 10:20 PM

August 25, 2016

Paul E. McKenney

Coherent Accelerators, FPGAs, and PLD Microconference Accepted into 2016 Linux Plumbers Conference

It has been more than a decade since CPU core clock frequencies stopped doubling every 18 months, which has shifted the search for performance from the "hardware free lunch" to concurrency and, more recently, hardware accelerators. Beyond accelerating computational offload, field-programmable gate arrays (FPGAs) and programmable logic devices (PLDs) have long been used in the embedded space to provide ways to offload I/O or to implement timing-sensitive algorithms as close as possible to the pin.

Regardless of how they are used, however, there exists a common class of problems which accompany the use of FPGAs, accelerators, and PLDs on Linux. Perhaps most important are the probing, discovery, and enumeration of these devices, which can be a challenge given the wide variety of interconnects to which they may be attached.

The purpose of this microconference is to discuss these problems, and figure out what it would take to make these devices first-class citizens on Linux. We will be looking at important use cases, including the much-maligned network-offload case as well as the more general topic of workload acceleration.

For more details on coherent accelerators, FPGAs, and PLDs, please see this microconference's wiki page.

We hope to see you there!

August 25, 2016 11:32 AM

August 08, 2016

Paul E. McKenney

Refereed Talk Deadline Approaching for Linux Plumbers Conference

The refereed talk deadline for Linux Plumbers Conference is only a few weeks off, September 1, 2016 at 11:59PM CET. So there is still some time to get your proposals in, but time is growing short.

Note that this year's Plumbers is co-located with Linux Kernel Summit rather than LinuxCon, so the refereed track is all Plumbers this year. We are therefore looking forward to seeing your all-Plumbers refereed-track submission!

As you might have noticed, earlybird registration has closed, but normal-rate registration will be opening up on August 27th—however, accepted refereed speaking proposals will receive a free pass.

The conference itself is in Santa Fe, New Mexico on November 1-4, 2016. Looking forward to seeing you there!

August 08, 2016 08:53 PM

April 06, 2009

Darrick Wong

September 27, 2015

Sri Ramkrishna

Making the case for Free Software at Universities

I was encouraged to make a blog post about this. I thought the idea had merit. I thought I would write my thoughts down on a recent presentation I made to college freshman at Purdue University.

I was made aware of a program at my alma mater, Purdue University called Learning Beyond the Classroom which encourages students to learn beyond what is taught in a classroom. My father is still a professor at Purdue, so I come back fairly often. I offered to talk about Open Source / Free Software. This is an account of that experience for others who might be interested in presenting at Universities.

Delivering this talk represented a challenge for me. My audience are freshman, that have been in college for all of three to four weeks. Your regular presentation is not going to work. My audience have left home, making new friends, and enjoying new freedoms, making adult decisions. For most freshman, their journey is just beginning and if I were to use my own experience, constantly evolving. Where you started out might be completely different and that could be said to continue even in your adult life. We are after all works in progress. The other challenge is that perception of Free Software / Open Source is applicable only to computer science. That is of course patently untrue, considering how this concept has now spread to so many other sectors. Creating something requires a wide range of skillsets and its just not about coding.

For two days, I worked on this and finally gave it up. There is no way that I’m going to be able to use slides to make a remotely interesting or compelling talk. I did something I never did before. I didn’t prepare.

Walking into the classroom the next day, I watched the students file in. I could feel that there was trepidation. The description of this talk didn’t really portend anything interesting. I couldn’t really hold back a smirk. Once they filed in and sat down, and introductions made. It was time to go down the rabbit hole. Up to this point, I had no idea what the hell I was going to talk about.

I presented my slides. My three slides. Then.. what?

I made a bet.

I asked a question to each student, 1) Name 2) major 3) why are you here in college and what drives you? The 25 students went around and I nodded, joked, laughed with them as they went around. After they all went around, I said well, I identified three themes that was common amongst all of them – 1) I want to help people 2) I want to figure how things work 3) I want to explore and discover things.

None of this surprised me. Young people are driven by altruistic ideas. It’s only when the daily grind of responsibilities and life’s complexity that builds the cynicism of the modern adult. They were the perfect audience.

Can I build a conversation around that? Damn right I can.

For the next 40 minutes, I talked about Free Software and Open Source, through my personal journey, and how it affected who I am as an adult today. The range of topics went through women in technology, creating something for sake of creation, and the journey of personal discovery. Along the way, I talked about the friendships I made, being part bigger than myself, and how it affected my career.

We can always reach people through our own humanity, sometimes through love, friendship, community and sometimes through hate, intolerence, and bigotry.

During my talk, I saw many of these bright students, nod at the things I was saying. I could see that I had reached them at that core emotional level by sharing my life experiences with them. Ultimately this wasn’t a talk about just about Free Software. It was talk about people and what they can achieve working together. It’s about helping people, figuring how things work, and discovering new things.

I would like to thank, Purdue University, the College of Science, and Learning Beyond the Classroom program for providing me the opportunity to talk the students, the faculty and other organizations at Purdue about Free Software and Open Source. As a Purdue alumni, I’m always thrilled to give back to the university that gave me the skills that I have acquired to be successful today.

by sri at September 27, 2015 06:35 PM

August 15, 2015

Sri Ramkrishna

Garden to nurture and protect

Figure out what song the title came from. :-)

In my community talk I challenged the audience to talk about what in GNOME excites you, and where would you like to see GNOME go? By the second question, I’m really talking about where would you like to see the GNOME stack? I talked about IoT, TVs, and others. The world has become a more complex place in how we consume information and it isn’t just the desktop. The desktop is now just one of many ways we do things and is no longer the most convenient and ubiquitous.

Since this is the 18th anniversary of our project, it seems like a great time to post our feelings. So if the GNOME community is up to challenge post something about GNOME, what excites you and where do you want it to go. I’ll start, since it is my challenge!

I’ve been in GNOME a long time, nearly 18 years, I started contributing on the mailing list after lurking for 3-4 months, and took over a project to start doing the weekly metrics from Uraeus (Christian Schaller). I did that project for like a year, and then turned into the GNOME Journal which morphed into the marketing team and is now the engagement team. But what kept me there? I didn’t really do anything technical. I suppose my greatest contribution was probably that stream of consciousness on IRC. I was entertaining. In the end, I stayed because I loved hanging with these talented people who had so many ideas and energy, trying to come up with something amazing. Working in a corporate job with all its political handcuffs can be aggravating and I think being able to explore a creative side or be able to around people who are exposing you things you never would have on your own is what was rewarding.

I’ve known so many people here for almost 18 years here. That’s a long time to be part of any organization. GUADEC is always a fun time for me when I can actually show up. Today after 18 years, we are still going strong with a lot of us who are still here after a decade. Even former GNOMErs who get re-exposed to GNOME remember the great times even if they have themselves move on. They might even be startled that GNOME still invokes strong passions both good and bad.

Where do I want to see GNOME go? I want to see a couple of things:

* I want to start seeing the other desktops merge under the GNOME banner, once the port to GTK3 happens,we can start implementing their desktops using GNOME technologies and make the GTK+/GLib/Gobject the common layer across all desktops and eliminate the fork modules. I’m looking at you, Mate. The benefit is that GTK+ becomes once again a common toolkit for all desktops and thus becomes more useful across the board. There is support for this in the community and I would love to see GNOME Foundation help fund hackfests to make this happen.

* I want us to solidify the developer story, GNOME Builder can help a competitive developer desktop for many market segments including embedded Linux, HTML5 programming and what not. We need to aggressively start talking about Builder where developers gather. It’s time to take marketshare away from OSX. We can deliver some high class developer tools and workflow tools. I want us to be able to use Yocto as a way for ODMs to make products using GNOME technologies.

* I want us to be THE platform for IoT development. We have Geoclue, DLNA, Bluetooth, and a host of other enabling libraries that we can build a real product.

GNOME has a lot to offer modern computing. Our influence on the Linux stack is extensive and remarkable for a GNU project. It is a rare device that does not have some kind of library whose origin did not come from the GNOME project.

These are achievable goals. We have the influence, talent, and community to make it happen! We are a tour de force. We are GNOME.

by sri at August 15, 2015 07:11 PM

January 15, 2014

Greg KH

kdbus details

Now that is over, there has been a bunch of information running around about the status of kdbus and the integration of it with systemd. So, here’s a short summary of what’s going on at the moment.

Lennart Poettering gave a talk about kdbus at The talk can be viewed here, and the slides are here. Go read the slides and watch the talk, odds are, most of your questions will be answered there already.

For those who don’t want to take the time watching the talk, wrote up a great summary of the talk, and that article is here. For those of you without a subscription, what are you waiting for? You’ll have to wait two weeks before it comes out from behind the paid section of the website before reading it, sorry.

There will be a systemd hack-fest a few days before FOSDEM, where we should hopefully pound out the remaining rough edges on the codebase and get it ready to be merged. Lennart will also be giving his kdbus talk again at FOSDEM if anyone wants to see it in person.

The kdbus code can be found in two places, both on google code, and on github, depending on where you like to browse things. In a few weeks we’ll probably be creating some patches and submitting it for inclusion in the main kernel, but more testing with the latest systemd code needs to be done first.

If you want more information about the kdbus interface, and how it works, please see the kdbus.txt file for details.

Binder vs. kdbus

A lot of people have asked about replacing Android’s binder code with kdbus. I originally thought this could be done, but as time has gone by, I’ve come to the conclusion that this will not happen with the first version of kdbus, and possibly can never happen.

First off, go read that link describing binder that I pointed to above, especially all of the links to different resources from that page. That should give you more than you ever wanted to know about binder.

Short answer

Binder is bound to the CPU, D-Bus (and hence kdbus), is bound to RAM.

Long answer


Binder is an interface that Android uses to provide synchronous calling (CPU) from one task to a thread of another task. There is no queueing involved in these calls, other than the caller process is suspended until the answering process returns. RAM is not interesting besides the fact that it is used to share the data between the different callers. The fact that the caller process gives up its CPU slice to the answering process is key for how Android works with the binder library.

This is just like a syscall, and it behaves a lot like a mutex. The communicating processes are directly connected to each other. There is an upper limit of how many different processes can be using binder at once, and I think it’s around 16 for most systems.


D-Bus is asynchronous, it queues (RAM) messages, keeps the messages in order, and the receiver dequeues the messages. The CPU does not matter at all other than it is used to do the asynchronous work of passing the RAM around between the different processes.

This is a lot like network communication protocols. It is a very “disconnected” communication method between processes. The upper limit of message sizes and numbers is usually around 8Mb per connection and a normal message is around 200-800 bytes.


The model of Binder was created for a microkernel-like device (side note, go read this wonderful article about the history of Danger written by one of the engineers at that company for a glimpse into where the Android internals came from, binder included.) The model of binder is very limited, inflexible in its use-cases, but very powerful and extremely low-overhead and fast. Binder ensures that the same CPU timeslice will go from the calling process into the called process’s thread, and then come back into the caller when finished. There is almost no scheduling involved, and is much like a syscall into the kernel that does work for the calling process. This interface is very well suited for cheap devices with almost no RAM and very low CPU resources.

So, for systems like Android, binder makes total sense, especially given the history of it and where it was designed to be used.


D-Bus is a create-store-forward, compose reply and then create-store-forward messaging model which is more complex than binder, but because of that, it is extremely flexible, versatile, network transparent, much easier to manage, and very easy to let fully untrusted peers take part of the communication model (hint, never let this happen with binder, or bad things will happen…) D-Bus can scale up to huge amounts of data, and with the implementation of kdbus it is possible to pass gigabytes of buffers to every connection on the bus if you really wanted to. CPU-wise, it is not as efficient as binder, but is a much better general-purpose solution for general-purpose machines and workloads.


Yes, it’s an over simplification of a different set of complex IPC methods, but these 3 words should help you explain the differences between binder and D-Bus and why kdbus isn’t going to be able to easily replace binder anytime soon.

Never say never

Ok, before you start to object to the above statements, yes, we could add functionality to kdbus to have some blocking ioctl calls that implement something like: write question -> block for reply and read reply one answer for the request side, and then on the server side do: write answer -> block in read That would get kdbus a tiny bit closer to the binder model, by queueing stuff in RAM instead of relying on a thread pool.

That might work, but would require a lot of work on the binder library side in Android, and as a very limited number of people have write access to that code (they all can be counted on one hand), and it’s a non-trivial amount of work for a core function of Android that is working very well today, I don’t know if it will ever happen.

But anything is possible, it’s just software you know…


Many thanks to Kay Sievers who came up with the CPU vs. RAM description of binder and D-Bus and whose email I pretty much just copied into this post. Also thanks to Kay and Lennart for taking the time and energy to put up with my silly statements about how kdbus could replace binder, and totally proving me wrong, sorry for having you spend so much time on this, but I now know you are right.

Also thanks to Daniel Mack and Kay for doing so much work on the kdbus kernel code, that I don’t think any of my original implementation is even present anymore, which is probably a good thing. Also thanks to Tejun Heo for help with the memfd implementation and cgroups help in kdbus.

January 15, 2014 08:57 PM

September 11, 2013

Greg KH

binary blobs to C structures

Sometimes you don’t have access to vim’s wonderful xxd tool, and you need to use it to generate some .c code based on a binary file. This happened to me recently when packaging up the EFI signing tools for Gentoo. Adding a build requirement of vim for a single autogenerated file was not an option for some users, so I created a perl version of the xxd -i command line tool.

This works because everyone has perl in their build systems, whether they like it or not. Instead of burying it in the efitools package, here’s a copy of it for others to use if they want/need it.

#!/usr/bin/env perl
# - perl implementation of 'xxd -i' mode
# Copyright 2013 Greg Kroah-Hartman <>
# Copyright 2013 Linux Foundation
# Released under the GPLv2.
# Implements the "basic" functionality of 'xxd -i' in perl to keep build
# systems from having to build/install/rely on vim-core, which not all
# distros want to do.  But everyone has perl, so use it instead.

use strict;
use warnings;
use File::Slurp qw(slurp);

my $indata = slurp(@ARGV ? $ARGV[0] : \*STDIN);
my $len_data = length($indata);
my $num_digits_per_line = 12;
my $var_name;
my $outdata;

# Use the variable name of the file we read from, converting '/' and '.
# to '_', or, if this is stdin, just use "stdin" as the name.
if (@ARGV) {
        $var_name = $ARGV[0];
        $var_name =~ s/\//_/g;
        $var_name =~ s/\./_/g;
} else {
        $var_name = "stdin";

$outdata .= "unsigned char $var_name\[] = {";

# trailing ',' is acceptable, so instead of duplicating the logic for
# just the last character, live with the extra ','.
for (my $key= 0; $key < $len_data; $key++) {
        if ($key % $num_digits_per_line == 0) {
                $outdata .= "\n\t";
        $outdata .= sprintf("0x%.2x, ", ord(substr($indata, $key, 1)));

$outdata .= "\n};\nunsigned int $var_name\_len = $len_data;\n";

binmode STDOUT;
print {*STDOUT} $outdata;

Yes, I know I write perl code like a C programmer, that’s not an insult to me.

September 11, 2013 01:22 PM

September 03, 2009

Valerie Aurora


I just read Charlie Stross's rant on reducing his household's carbon footprint. Summary: He and his wife can live a life of monastic discomfort, wearing moldy scratchy 10-year-old bamboo fiber jumpsuits and shivering in their flat - or, they can cut out one transatlantic flight per year and achieve the equivalent carbon footprint reduction.

I did a similar analysis back around 2007 or so and had the same result: I've got a relatively trim carbon footprint compared to your average first-worlder, except for the air travel that turns it into a bloated planet-eating monster too extreme to fall under the delicate term "footprint." Like Charlie, I am too practical, too technophilic, and too hopeful to accept that the only hope of saving the planet is to regress to third world living standards (fucking eco-ascetics!). I decided that I would only make changes that made my life better, not worse - e.g., living in a walkable urban center (downtown Portland, now SF). But the air travel was a stumper. I liked traveling, and flying around the world for conferences is a vital component of saving the world through open source. Isn't it? Isn't it?

Two things happened that made me re-evaluate my air travel philosophy. One, I started a file systems consulting business and didn't have a lot of spare cash to spend on fripperies. Two, I hurt my back and sitting became massively uncomfortable (still recovering from that one). So I cut down on the flying around the world to Linux conferences involuntarily.

You know what I discovered? I LOVE not flying around the world for Linux conferences. I love taking only a few flights a year. I love flying mostly in the same time zone (yay, West coast). I love having the energy to travel for fun because I'm not all dragged out by the conference circuit. I love hanging out with my friends who live in the same city instead of missing out on all the parties because I'm in fucking Venezuela instead.

Save the planet. Burn your frequent flyer card.

September 03, 2009 07:04 AM

March 04, 2013


March 01, 2013


February 18, 2009

Stephen Hemminger

Parallelizing netfilter

The Linux networking receive performance has been mostly single threaded until the advent of MSI-X and multiqueue receive hardware. Now with many cards, it is possible to be processing packets on multiple CPU's and cores at once. All this is great, and improves performance for the simple case.

But most users don't just use simple networking. They use useful features like netfilter to do firewalling, NAT, connection tracking and all other forms of wierd and wonderful things. The netfilter code has been tuned over the years, but there are still several hot locks in the receive path. Most of these are reader-writer locks which are actually the worst kind, much worse than a simple spin lock. The problem with locks on modern CPU's is that even for the uncontested case, a lock operation means a full-stop cache miss.

With the help of Eric Duzmet, Rick Jones, Martin Josefsson and others, it looks like there is a solution to most of these. I am excited to see how it all pans out but it could mean a big performance increase for any kind of netfilter packet intensive processing. Stay tuned.

by Linux Network Plumber ( at February 18, 2009 05:51 AM

September 25, 2010

Andy Grover

Plumbers Down Under

<p>Since the original <a href="">Linux Plumbers Conference</a> drew much inspiration from <a href="">LCA</a>'s continuing success, it's cool to see some of what Plumbers has done be seen as <a href="">worthy of emulating at next year's LCA</a>!</p><p>LCA seems like a great opportunity to specifically try to make progress on cross-project issues. It's quite well-attended so it's likely the people you need in the room to make a decision will be <em>in the room</em>.</p>

by andy.grover at September 25, 2010 01:50 PM

September 10, 2010

Andy Grover

Increasing office presence for remote workers

<p>I work from home. My basement, actually. I recently read an article in the Times about <a href=";pagewanted=1">increasing the office presence of remote employees with robots</a>. Pretty interesting. How much does one of those robo-Beltzners cost? $5k? This is a neat idea but it's still not released so who knows.<br /><br />I've been thinking about other options for establishing a stronger office presence for myself. Recently I bought a webcam. If I used this to broadcast me, sitting at my desk on Ustream or Livestream, that would certainly make it so my coworkers (and the rest of the world) could see what I was up to, every second of the workday. This is actually a lot <i>more</i> exposure than an office worker, even in a cubicle, would expect. If I'm in an office cube, I might have people stop by, but I'll know they're there, and they won't <i>always</i> be there.&nbsp; There is still generally solitude and privacy to concentrate on the code and be productive. I'm currently trying something that I think is closer to the balance of a real office:<br /><ul><li>Take snapshots from webcam every 15 minutes<br /></li><li>Only during normal working hours</li><li>Give 3 second audible warning before capturing</li><li>Upload to an intranet webserver</li></ul>I haven't found this to be too much of an imposition -- in fact, the quarter-hourly beeps are somewhat like a clock chime.<br /><br />In the beginning, it's hard to resist mugging for the camera, but that passes:<br /><img style="max-width: 800px;" src="" alt="whassup???" height="240" width="320" /><br />Think about how this is better than irc or IM, both of which <i>do</i> have activity/presence indicators, but which either aren't used, or poorly implemented and often wrong. How much more likely are you, as a colleague of mine, to IM, email, video chat, or call me if you can see I'm at my desk and working? No more "around?" messages needed. You could even see if I'm looking cheerful, or perhaps otherwise indisposed, heh heh:<br /><img style="max-width: 800px;" src="" alt="hello kitty" height="240" width="320" /><br />On a technical note, although there were many Debian packages that kind-of did what I wanted, it turned out to be surprisingly easy to roll my own in about <a href="">20 lines of Python</a>.<br /><img style="max-width: 800px;" src="" alt="working hard." height="240" width="320" /><br />Anyways, just something I've been playing around with, while I wait for my robo-avatar to be set up down at HQ...</p>

by andy.grover at September 10, 2010 05:20 PM

November 08, 2009

Valerie Aurora

Migrated to WordPress

My LiveJournal blog name - valhenson - was the last major holdover from my old name, Val Henson. I got a new Social Security card, passport, and driver's license with my new name several months ago, but migrating my blog? That's hard! Or something. I finally got around to moving to a brand-spanking-new blog at WordPress:

Valerie Aurora's blog

Update your RSS reader with the above if you still want to read my blog - I won't be republishing my posts to my new blog on this LiveJournal blog.

If you're aware of any other current instances of "Val Henson" or "Valerie Henson," let me know! I obviously can't change my name on historical documents, like research papers or interviews, but if it's vaguely real-time-ish, I'd like to update it.

One web page I'm going to keep as Val Henson for historical reasons is my Val Henson is a Man joke. Several of the pages on my web site were created after the fact as vehicles for amusing pictures or graphics I had lying around. In this case, my friend Dana Sibera created a pretty damn cool picture of me with a full beard and I had to do something with it.

It's doubly wild now that I have such short hair.

November 08, 2009 11:36 PM