

Linux 3.5 Kernel Released - moonboots
http://kernelnewbies.org/Linux_3.5

======
esolyt
It is worth nothing that Android is now closer to the mainline than ever. With
this release, the kernel incorporates a functionality called autosleep which
is similar to Android's wakelock, which was the main controversy between
kernel developers and Google. Android team will now probably be able to switch
to the new Linux infrastructure, if they wish so.

~~~
stingraycharles
Here is a nice discussion on LWN about wakelock / autosleep:
<http://lwn.net/Articles/479841/>

------
runningdogx
A very nice networking feature has landed in 3.5: CODEL AQM packet scheduler
to fight bufferbloat. It is mainly relevant for routers.

<http://queue.acm.org/detail.cfm?id=2209336>

~~~
Peaker
Some of the buffer bloat problem is due to SO_SENDBUF being statically set to
some value, which also results in hiding the actual bytes-in-flight from the
application.

I think it would be much better to allow the auto-detected TCP window to be
exposed to the application level as the "send-buf" size (with perhaps some 10%
buffer bloat to allow filling in the gaps when the window grows or acks return
prematurely).

Also, it would be good for high-bandwidth-high-latency situations, where the
default Linux 0.5MB send-buf size is not enough. Allow the send-buf to grow if
the TCP window needs to grow beyond 0.5MB.

~~~
natermer
Well exposing it per application kinda defeats a bit of the purpose behind it.
The point is that you get rid of the buffer so you get packet loss when the
link to the other peer(s) is(are) saturated and allow the TCP congestion
algorithms to work properly.

Even in a high latency high bandwidth situation having huge buffers is self-
defeating. Anybody that has used Bittorrent and assumed their ISP was doing
some sort of throttling were you have weird latency spikes and reduced
performance... this is a direct result of buffer bloat in the majority of
cases.

Large buffers only help in the case of a single TCP connection using up as
much as the bandwidth as possible, which helps network routers and such things
look good in benchmarks.

What you are talking about is some sort of Quality of Service type thing.
Probably most usefully expressed at the edge of networks for prioritizing
traffic and at the ISP level so they can route traffic through different
internet links based on requirements.

ISPs have to deal with choosing different links to other networks and what it
costs. They can do choose stuff like use main backbones versus secondary links
and you get different trade-offs based cost versus latency and things of that
nature. So ideally there should be some sort of flag you can set in the TCP
packet that would indicate latency importance or some such thing. Or just
making internet routing equipment application-protocol-aware.

~~~
Peaker
By "expose it to the application", I mean in the flow-control sense. That
send() (or select/epoll/etc) will block until there is room in the TCP window,
rather than in the pre-determined buffer which will always be too small or too
big.

The way it works now, the kernel is basically forcing applications to have
buffer-bloat (fill a 0.5MB socket buffer), or auto-detect RTT or manually
select a proper buffer size. All are bad options.

Also, in high-latency-high-bandwidth situations, the default 0.5MB buffer will
simply fail to make use of the available bandwidth, so increasing the buffer
size does not defeat the purpose. Latency spikes are a different situation,
there are cases of constant high latency (e.g: inter-continental 1Gbps links).

------
gnyman
Surely the Linux-kernel must by now be the worlds most advanced and most
bloated kernel? Then again, the kernel is not the thousands of high quality
modules (which I guess could be called drivers) which allow you access to the
hardware.

Anybody know how the central kernel (the parts that are on all hardware) has
evolved speed/size-wise?

Also, is the drivers in linux of higher quality than the ones for example
windows? I have gotten the impression that it is so.

~~~
simcop2387
As far as quality goes, it varies largely depending on the hardware. Some
stuff is easy to figure out (or has specs published) and results in good
quality stuff being available. Other things don't tend to fair so well, like
the graphics drivers, and I believe many broadcom wifi adapters. However if
you have something headless with a wired network you're generally not going to
be able to ever be unhappy.

~~~
natermer
You get best bang for your buck by purchasing hardware that is made by
companies that support Linux with open source drivers.

Example:

Purchasing random laptop off the internet that runs other OS because it is
cool and then trying to install Linux on it is not going yield good results
unless you are willing to spend a lot of time researching and making sure you
bought something that will work well, as well as spend some time fiddling
around with drivers a bit and filing a couple bug reports. This would be
because your using hardware that no Linux developer has direct access too.
Essentially you are the primary means of support for that particular
OS/Hardware combination.

Or you can purchase laptop from a company that provides support for your
particular Linux/hardware configuration (ie: they sell Linux pre-installed)
and then you will likely get close to a 'Apple-like' experience with it 'just
working' out of the box.

~~~
Inufu
Yes. Especially ThinkPads seem to be very well supported (typing this on a
X220), with everything working out of the box, amazing battery life (up to 12
hours on mine) and a very stable system in general.

~~~
wpietri
I'm using the X220 as well and love it. There are minor quirks on Ubuntu
12.04; are you on 12.10?

Also, did you buy direct or get from a company that does the Linux install? I
did the latter and was very disappointed with Emperor Linux; I've gotten
basically zero support.

~~~
dfc
If you are a power linux user why pay for someone to install linux? What is
emperor linux?

~~~
wpietri
At the time I needed a new laptop, but didn't want to spend the many hours
previously necessary to get all the devices working properly, and I didn't
want to take the risk of device incompatibility. So my theory was that I was
paying them to do all the fucking around. Or, alternately, to have the same
sort of out-of-the-box experience I would with, say, a Mac or the same laptop
running Windows. Except with my OS of choice.

Emperor Linux is one of the companies that offers pre-installed Linux laptops
and guarantees compatibility and offers support. The box was indeed compatible
(even the touch-screen), but their support was poor.

