]> git.decadent.org.uk Git - kernel-news-talk.git/blob - index.html
a21b55937a74646cf9df22bd99ae3aae81b93803
[kernel-news-talk.git] / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
2         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
4 <html xmlns="http://www.w3.org/1999/xhtml">
5
6 <head>
7 <title>What's new in the Linux kernel - DebConf 2014</title>
8 <!-- metadata -->
9 <meta name="generator" content="S5" />
10 <meta name="version" content="S5 1.1" />
11 <meta name="author" content="Ben Hutchings" />
12 <!-- configuration parameters -->
13 <meta name="defaultView" content="slideshow" />
14 <meta name="controlVis" content="hidden" />
15 <!-- style sheet links -->
16 <link rel="stylesheet" href="s5-blank/ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
17 <link rel="stylesheet" href="s5-blank/ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
18 <link rel="stylesheet" href="s5-blank/ui/default/print.css" type="text/css" media="print" id="slidePrint" />
19 <link rel="stylesheet" href="s5-blank/ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
20 <style type="text/css">
21   .logo { position: absolute; right: 0; top: 0; height: 100% }
22   table { border-collapse: collapse }
23   th { border-bottom: 2pt solid black }
24   th, td { padding: 0 6pt }
25   .package { font-family: monospace }
26   var { font-family: sans }
27 </style>
28 <style type="text/css" media="print">
29   .slide { page-break-after: always }
30 </style>
31 <!-- S5 JS -->
32 <script src="s5-blank/ui/default/slides.js" type="text/javascript"></script>
33 </head>
34 <body>
35
36 <div class="layout">
37 <div id="controls"><!-- DO NOT EDIT --></div>
38 <div id="currentSlide"><!-- DO NOT EDIT --></div>
39 <div id="header">
40 </div>
41 <div id="footer">
42 <h1>DebConf 2014</h1>
43 <h2>What's new in the Linux kernel</h2>
44 </div>
45
46 </div>
47
48 <div class="presentation">
49
50 <div class="slide">
51 <h1>What's new in the Linux kernel</h1>
52 <object data="tux-debian.svg" width="35%" align="right"></object>
53 <h2>and what's missing in Debian</h2>
54 <h3>Ben&nbsp;Hutchings</h3>
55 </div>
56
57 <div class="slide">
58   <h1>Ben Hutchings</h1>
59   <ul>
60     <li>
61       Professional software engineer by day, Debian developer by night
62       (or sometimes the other way round)
63     </li>
64     <li>
65       Regular Linux contributor in both roles since 2008
66     </li>
67     <li>
68       Working on various drivers and kernel code in my day job
69     </li>
70     <li>
71       Debian kernel team member, now doing most of the unstable
72       maintenance aside from ports
73     </li>
74     <li>
75       Maintaining Linux 3.2.<var>y</var> stable update series on
76       kernel.org
77     </li>
78   </ul>
79 </div>
80
81 <div class="slide">
82   <h1>Linux releases early and often</h1>
83   <ul class="incremental">
84     <li>
85       Linux is released about 5 times a year (plus stable updates
86       every week or two)
87       <ul>
88         <li>
89           ...though some features aren't ready to use when they first
90           appear in a release
91         </li>
92       </ul>
93     </li>
94     <li>
95       Since my talk last year, Linus has made 6 releases (3.11-3.16)
96     </li>
97     <li>
98       Good news: we have lots of new kernel features in testing/unstable
99     </li>
100     <li>
101       Bad news: some of them won't really work without new userland
102     </li>
103   </ul>
104 </div>
105
106 <div class="slide">
107   <h1>Recap of last year's features (1)</h1>
108   <ul class="incremental">
109     <li>
110       Team device driver: userland package (libteam) was uploaded in
111       October
112     </li>
113     <li>
114       Transcendent memory: frontswap, zswap and Xen tmem will be
115       enabled in next kernel upload
116     </li>
117     <li>
118       New KMS drivers: should all work with current Xorg drivers
119     </li>
120     <li>
121       Module signing: still not enabled, but probably will be if we
122       do Secure Boot
123     </li>
124   </ul>
125 </div>
126
127 <div class="slide">
128   <h1>Recap of last year's features (2)</h1>
129   <ul class="incremental">
130     <li>
131       More support for discard: still not enabled at install time
132       (<a href="https://bugs.debian.org/690977">#690977</a>)
133     </li>
134     <li>
135       More support for containers: XFS was fixed, and user namespaces
136       have been enabled
137     </li>
138     <li>
139       bcache: userland package (bcache-tools) still not quite ready
140       (<a href="https://bugs.debian.org/708132">#708132</a>)
141     </li>
142     <li>
143       ARMv7 multiplatform: d-i works on <em>some</em> platforms but
144       I'm still not sure which.  Some progress on GPU drivers, but not
145       in Debian yet.
146     </li>
147   </ul>
148 </div>
149
150 <div class="slide">
151   <h1>Unnamed temporary files [3.11]</h1>
152   <ul>
153     <li>
154       Open directory with option <tt>O_TMPFILE</tt> to create an
155       unnamed temporary file on that filesystem
156     </li>
157     <li>
158       As with <tt>tmpfile()</tt>, the file disappears on
159       last <tt>close()</tt>
160     </li>
161     <li>
162       File can be linked into the filesystem using
163       <tt>linkat(..., AT_EMPTY_PATH)</tt>, allowing for 'atomic'
164       creation of file with complete contents and metadata
165     </li>
166     <li>
167       Not supported on all filesystem types, so you will usually need
168       a fallback
169     </li>
170   </ul>
171 </div>
172
173 <div class="slide">
174   <h1>Network busy-polling [3.11] (1)</h1>
175   <p>A conventional network request/response process looks like:</p>
176   <small><!-- ew -->
177     <ol class="incremental">
178       <li>
179         Task calls <tt>send()</tt>; network stack constructs a
180         packet; driver adds it to hardware Tx queue
181       </li>
182       <li>
183         Task calls <tt>poll()</tt> or <tt>recv()</tt>, which blocks;
184         kernel puts it to sleep and possibly idles the CPU
185       </li>
186       <li>
187         Network adapter receives response and generates IRQ, waking
188         up CPU
189       </li>
190       <li>
191         Driver's IRQ handler schedules polling of the hardware Rx
192         queue (NAPI)
193       </li>
194       <li>
195         Kernel runs the driver's NAPI poll function, which passes
196         the response packet into the network stack
197       </li>
198       <li>
199         Network stack decodes packet headers and adds packet to
200         the task's socket
201       </li>
202       <li>
203         Network stack wakes up sleeping task; scheduler switches
204         to it and the socket call returns
205       </li>
206     </ol>
207   </small>
208 </div>
209
210 <div class="slide">
211   <h1>Network busy-polling [3.11] (2)</h1>
212   <ul class="incremental">
213     <li>
214       If driver supports busy-polling, it tags each packet with
215       the receiving NAPI context, and kernel tags sockets
216     </li>
217     <li>
218       When busy-polling is enabled, <tt>poll()</tt>
219       and <tt>recv()</tt> call the driver's busy poll function to
220       check for packets synchronously (up to some time limit)
221     </li>
222     <li>
223       If the response usually arrives quickly, this reduces overall
224       request/response latency as there are no context switches and
225       power transitions
226     </li>
227     <li>
228       Time limit set by sysctl (<tt>net.busy_poll</tt>,
229       <tt>net.busy_read</tt>) or socket option (<tt>SOL_SOCKET,
230       SO_BUSY_POLL</tt>); requires tuning
231     </li>
232   </ul>
233 </div>
234
235 <div class="slide">
236   <h1>Lustre filesystem [3.12]</h1>
237   <ul>
238     <li>
239       A distributed filesystem, popular for cluster computing
240       applications
241     </li>
242     <li>
243       Developed out-of-tree since 1999, but now added to Linux staging
244       directory
245     </li>
246     <li>
247       Was included in squeeze but dropped from wheezy as it didn't
248       support Linux 3.2
249     </li>
250     <li>
251       Userland is now missing from Debian
252     </li>
253   </ul>
254 </div>
255
256 <div class="slide">
257   <h1>Btrfs offline dedupe [3.12]</h1>
258   <ul class="incremental">
259     <li>
260       Btrfs generally does COW rather than updating in-place, allowing
261       snapshots and file copies to defer the actual copying and save
262       space
263     </li>
264     <li>
265       Filesystems may still end up with multiple copies of the same
266       file content
267     </li>
268     <li>
269       Btrfs doesn't actively merge these duplicates, but userland can
270       tell it to do so
271     </li>
272     <li>
273       Many file dedupe tools are packaged for Debian, but not one that
274       works with this Btrfs feature, e.g. bedup
275     </li>
276   </ul>
277 </div>
278
279 <div class="slide">
280   <h1>nftables [3.13]</h1>
281   <ul class="incremental">
282     <li>
283       Linux has several firewall APIs - iptables, ip6tables, arptables
284       and ebtables
285     </li>
286     <li>
287       All limited to single protocol, and need a kernel module for
288       each match type and each action
289     </li>
290     <li>
291       Kernel's internal netfilter API is more flexible
292     </li>
293     <li>
294       nftables exposes more of this flexibility, allowing userland
295       to provide firewall code for a specialised VM (similar to BPF)
296     </li>
297     <li>
298       nftables userland tool uses this API and is already packaged
299     </li>
300     <li>
301       Eventually, old APIs will be removed and old userland
302       tools must be ported to use nftables
303     </li>
304   </ul>
305 </div>
306
307 <div class="slide">
308   <h1>User-space lockdep [3.14]</h1>
309   <ul>
310     <li>
311       Kernel threads and interrupts all run in same address space,
312       using several different synchronisation mechanisms
313     </li>
314     <li>
315       Easy to introduce bugs that can result in deadlock, but hard to
316       reproduce them
317     </li>
318     <li>
319       Kernel's 'lockdep' system dynamically tracks locking operations
320       and detects <em>potential</em> deadlocks
321     </li>
322     <li>
323       Now available as a userland library!  Except we need to package
324       it (build from linux-tools source package)
325     </li>
326   </ul>
327 </div>
328
329 <div class="slide">
330   <h1>arm64 and ppc64el ports</h1>
331   <ul class="incremental">
332     <li>
333       'arm64' architecture was added in Linux 3.7, but was not yet
334       usable, and no real hardware was available at the time
335     </li>
336     <li>
337       Upstream Linux arm64 kernel, and Debian packages, should now run
338       on emulators and real hardware
339     </li>
340     <li>
341       'powerpc' architecture has been available for many years,
342       but didn't support kernel running little-endian
343     </li>
344     <li>
345       Linux 3.13 added little-endian kernel support, along with new
346       userland ELF ABI variant - we call it ppc64el
347     </li>
348     <li>
349       Both ports now being bootstrapped in unstable and are candidates
350       for jessie release
351     </li>
352   </ul>
353 </div>
354
355 <div class="slide">
356   <h1>File-private locking [3.15]</h1>
357   <ul class="incremental">
358     <li>
359       POSIX says that closing a file descriptor removes
360       the <em>process</em>'s locks on that file
361     </li>
362     <li>
363       What if process has multiple file descriptors for the same
364       file?  It loses all locks obtained through any descriptor!
365     </li>
366     <li>
367       Multithreaded processes may require serialisation around
368       file open/close to ensure they open each file exactly once
369     </li>
370     <li>
371       Hard and symbolic links can hide that two files are really the
372       same
373     </li>
374     <li>
375       Linux now provides file-private locks, associated with a
376       specific open file and removed when last descriptor for the
377       open file is closed
378     </li>
379   </ul>
380 </div>
381
382 <div class="slide">
383   <h1>Multiqueue block devices [3.16]</h1>
384   <ul class="incremental">
385     <li>
386       Each block device has a command queue (possibly shared with
387       other devices)
388     </li>
389     <li>
390       Queue may be partly implemented by hardware (NCQ) or only
391       in software
392     </li>
393     <li>
394       A single queue means initiation is serialised and completion
395       involves IPI - can be bottleneck for fast devices
396     </li>
397     <li>
398       High-end SSDs support multiple queues, but kernel needed changes
399       to use them
400     </li>
401     <li>
402       <tt>mtip32xx</tt> driver now supports multiqueue, but SCSI
403       drivers don't yet - may be backport-able?
404     </li>
405   </ul>
406 </div>
407
408 <div class="slide">
409   <h1>Questions?</h1>
410 </div>
411
412 <div class="slide">
413   <h1>Credits</h1>
414   <ul>
415     <li>
416       Linux 'Tux' logo &copy; Larry Ewing, Simon Budig.
417       <!--
418 Redistribution is free but has to include this notice.
419       -->
420       <ul>
421         <li>Modified by Ben to add Debian open-ND logo</li>
422       </ul>
423     </li>
424     <li>
425       Debian open-ND logo &copy; Software in the Public Interest, Inc.
426       <!--
427 Permission is hereby granted, free of charge, to any person obtaining
428 a copy of this software and associated documentation files (the
429 "Software"), to deal in the Software without restriction, including
430 without limitation the rights to use, copy, modify, merge, publish,
431 distribute, sublicense, and/or sell copies of the Software, and to
432 permit persons to whom the Software is furnished to do so, subject to
433 the following conditions:
434
435 The above copyright notice and this permission notice shall be
436 included in all copies or substantial portions of the Software.
437
438 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
439 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
440 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
441 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
442 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
443 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
444 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
445       -->
446     </li>
447   </ul>
448 </div>
449
450 </body>
451 </html>