LJ Archive


diff -u: What's New in Kernel Development

Zack Brown

Issue #265, May 2016

Michal Hocko has submitted some code to rework the detection of out-of-memory conditions. Earlier versions were “requests for comments”, but with no major objections, Michal now is asking that the code be added to linux-next to widen its testing base.

The current patch was just an incremental update, but Michal said that the goal of the larger project:

...is an attempt to make the OOM detection more deterministic and easier to follow because each reclaimer basically tracks its own progress which is implemented at the page allocator layer rather [than] spread out between the allocator and the reclaim.

He asked folks to come up with new testing scenarios, because the OOM killer is notoriously hard to get right. Ideally, it works properly under “standard load”, but how can there be a standard load when Linux is used throughout the world for every conceivable purpose?

Hugh Dickins reported a problem with the new code: it would kill his TmpFS instance during heavy swap, whereas the old OOM killer would let it run forever. But, he did acknowledge that “tmpfs is and always has been a problem for OOM-killing, given that it takes up memory.”

Various other folks posted the results of their tests as well, mostly showing success, though there were some long discussions of particular technical details and a bunch of code revisions as Michal addressed people's concerns.

Balbir Singh posted patches to allow updating a running Linux kernel on PowerPC. This kind of “live patching” is one of the holy grails of operating system development. In order to do it, you have to transfer all the running infrastructure from the existing kernel to the new one. This involves changing stored memory locations, replacing functions at the proper time and other strange things, all of which must be done individually. It's the kind of feature that, before it was possible, people said never would work. Even now, Torsten Duwe replied to Balbir's post, saying, “Have you tested this patch? Replacing a function in the kernel? Replacing a function in a module? For local calls? For global calls? I strongly doubt so because it does not work this way.”

In fact, Torsten wasn't saying that the whole thing didn't work that way, only that the particular approach was problematic and needed further discussion. Meanwhile, Petr Mladek tested the patch and reported failure. He described the test results as, “!!! KABOOM !!!” Balbir replied, “Very good test case”, and proceeded to investigate fixes.

After some further effort, Balbir said:

The previous revision was nacked by Torsten, but compared to the alternatives at hand I think we should test this approach. Ideally we want all the complexity of live-patching in the live-patching code and not in the [user's] patch. The other option is to accept v4 and document the limitation to patch writers of not patching functions [that have more than] 8 arguments.

He posted a new patch, which Torsten nacked again, saying, “I nacked it because I was confident it couldn't work. Same goes for this one, sorry. My good intention was to save us all some work.” Commenting on some of the technical problems, he added, “Using heuristics to determine whether the call was local or global makes me feel highly uncomfortable; one day it will break and nobody will remember why.”

Referring to Balbir's earlier comment, Michael Ellerman said it was unlikely that anyone would want to live patch a function with more than eight arguments, but he added:

With the current proposals, we have no way of preventing them from doing so. Which means the first sign they'll get that it doesn't work is when they've applied the patch and their production system goes down. And not even when they insert the patch, only when the patched function is called, possibly some time later.

He also remarked, “perhaps in reality most people are only applying live patches from their distro, in which case the distro should have tested it. But I don't know for sure.”

And in spite of these remaining problems, Michael added that he wanted to see these patches go into the kernel and continue testing and developing. He said, “I think we can probably come up with a fully robust solution. But not tonight, and not this week.”

Throughout all of this, Balbir affirmed that there were plenty of problems to solve. He said:

I've been working with the constraints we have to get a solution that does not put the burden on the patch writer. That is why this is marked experimental as it needs a lot of testing. I think we should mark live patching on PPC as experimental to begin with.

And added, “I am keen on getting live-patching working. I think v4 with the documented limitation is fine.”

And, the quest for the grail continues. Everyone involved in this discussion, in spite of their sometimes dire predictions and warnings, were all enthusiastic to get some form of this code into the kernel, even with the heavy set of caveats that currently exist. One day, live patching on PowerPC will just be normal, but for now, it remains the insane upside-down province of these lunatic visionaries.

Android Candy: Snapchat, for Hoarders!

Shawn Powers

Issue #265, May 2016

I like Snapchat, but if I'm being totally honest, it's not something I use every day. I like it because my kids send me goofy pictures and videos, and it makes me happy that they think to include me in their Snapchatty world.

The thing is, Snapchat is designed with the notion that photos and videos should be ephemeral, and once they're viewed, they disappear. I don't share that particular sentiment, and I tend to err the other way. Namely, I not only keep photos and videos, but I also generally back them up in three different places, geographically separated in case of failure. Also, I'm old, and I forget things.

(Photo from casper.io)

Thankfully, there's a non-official Snapchat client made for folks like me. It's called Casper (casper.io), and it's not available in the Google Play store. Installing it is fairly simple, but because it allows you to save photos and videos, it's not allowed to be distributed in the Play store. Also, I'm sure the folks at Snapchat don't really like the app, since it goes against one of the app's core “features”, but if you're okay with all those issues, I highly recommend it. The app is free, and you can use it as your Snapchat client, even if you don't intend to save the photos or videos your kids send you. But, if your kids are as interesting as mine, you'll probably want to!

Non-Linux FOSS: Chrome, for One

Shawn Powers

Issue #265, May 2016

When I use OS X, I really like the Fluid app for making standalone Web applications. The problem is, Fluid isn't free unless you want the basic version. I don't mind paying for an application (and I did pay for Fluid), but it seems like something as simple as a single site browser shouldn't be something that costs money.

Thankfully, the folks at Epichrome feel the same way. They've created an open-source project at https://github.com/dmarmor/epichrome that allows you to create standalone OS X applications that use Chrome in order to provide a single site browser.

You can customize the way the app looks, give it a custom app icon and even register it as a browser on the system, so you can have it open when clicking on a specific Web site from inside your Web browser. I personally use it for my BirdCam, but it's a great way to turn any Web site into an “app” that you can launch from your dock.

Glass Padding?

Shawn Powers

Issue #265, May 2016

When it comes to covering my cell phone, I tend toward minimalism. I like to buy the smallest (although still powerful) phone possible, so the thought of adding a bulky case seems wrong. I also don't like screen protectors, because they generally get cloudy, and they don't feel as nice when using the screen. That said, I still usually buy them, because I've forgotten about my phone when getting out of the car and dropped it screen first on gravel far too many times.

While ordering a screen protector after damaging mine on pavement recently, I noticed that “glass” screen protectors are becoming quite popular. Glass. To protect the glass. Isn't that like making a helmet out of eggshells? The notion of protecting a glass screen with more glass just seems absurd. And yet, the screen “protectors” get great reviews. So I tried one.

First off, even with the thinnest tempered glass screen protector, they are noticeably thicker than plastic film-based protectors. They're also a little more challenging to apply. The truth is, however, that even with the extra thickness, a tempered glass screen protector is amazing to use! The screen is just as responsive, the surface feels just like glass (duh!), and it doesn't get cloudy with regular use. In fact, it's by far the best “covered screen” experience I've ever had on a cell phone. But still, it's a piece of glass adhered to a piece of glass. I'm not sure how that is really protection.

Except that apparently it is. I've gone through two tempered glass screen protectors in the past few months. Both times I dropped the phone, it landed right on the glass, and both times it was on rough gravel. The first time, the screen protector completely shattered. The second time it cracked, but didn't shatter. Both times, the glass underneath wasn't harmed even a little.

I'll be honest, I don't understand the physics behind protecting a layer of glass with another layer of glass. Somehow it seems to work though. If you wrapped an egg in a second eggshell, I don't think it would endure a fall to the ground, but the glass screen protector apparently uses physics in ways I don't comprehend. And for that reason, I'm giving “tempered glass screen protectors” this month's Editors' Choice Award. If you've been hesitant to try them, I urge you to reconsider!

Bitcoin on Amazon! Sort of...

Shawn Powers

Issue #265, May 2016

I was a Bitcoin fan before it was popular. That means I had thousands of Bitcoins. It also means I sold my thousands of Bitcoins for less than $1 each. Still, the technology fascinates me, and although cryptocurrencies have risen and fallen, I'm still a fan.

There are several places to use Bitcoin on a regular basis. One of my favorites, which I've mentioned before, is the Humble Bundle (www.humblebundle.com). I've also ordered from Overstock.com using Bitcoin. I often look for places I can spend Bitcoin and try to shop at them when possible. Like most people, however, I usually end up buying things on Amazon.

Thankfully, with the help of Purse.IO (www.purse.io), you can indirectly purchase items from Amazon using Bitcoin! I've been using Purse.IO for more than a year, but it seemed too good to be true, so I hesitated writing about it. The premise is this: some people have Amazon gift cards but would rather have Bitcoin. I have Bitcoin and want to buy stuff from Amazon. Using wish lists and an escrow system with Purse.IO, we trade. In fact, people are willing to give a discount in order to get Bitcoin for their gift cards, and so I can order items from Amazon and get a large percentage (sometimes more than 25%) off the retail price. I usually agree to around 13% off, and there are folks willing to send me things from Amazon. Once the items from my wish list arrive, Purse.IO releases the Bitcoin from escrow, and both parties are happy.

(Photo via purse.io)

I'm sure there are people who try to scam others by ordering items with bad credit cards and so on, but since you release the escrow only when the item actually arrives, the risk is pretty low. I don't think I'd want to spend vast amounts of Bitcoin via Purse.IO, but since I don't have vast amounts of Bitcoin, it works out quite well for me. If you have some Bitcoin and wonder what to do with it, check out Purse.IO. It's pretty cool!

They Said It

If you don't risk anything you risk even more.

—Erica Jong

Life is a great big canvas; throw all the paint on it you can.

—Danny Kaye

Bite off more than you can chew, then chew it. Plan more than you can do, then do it.


A man travels the world over in search of what he needs and returns home to find it.

—George Moore

In terms of being late or not starting at all, then it's never too late.

—Alison Headley

LJ Archive