]> git.decadent.org.uk Git - kernel-news-talk.git/blob - index.html
Add nftables slide
[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 disppears 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>Lustre filesystem [3.12]</h1>
175   <ul>
176     <li>
177       A distributed filesystem, popular for cluster computing
178       applications
179     </li>
180     <li>
181       Developed out-of-tree since 1999, but now added to Linux staging
182       directory
183     </li>
184     <li>
185       Was included in squeeze but dropped from wheezy as it didn't
186       support Linux 3.2
187     </li>
188     <li>
189       Userland is now missing from Debian
190     </li>
191   </ul>
192 </div>
193
194 <div class="slide">
195   <h1>Network busy-polling [3.11] (1)</h1>
196   <p>A conventional network request/response process looks like:</p>
197   <small><!-- ew -->
198     <ol class="incremental">
199       <li>
200         Task calls <tt>send()</tt>; network stack constructs a
201         packet; driver adds it to hardware Tx queue
202       </li>
203       <li>
204         Task calls <tt>poll()</tt> or <tt>recv()</tt>, which blocks;
205         kernel puts it to sleep and possibly idles the CPU
206       </li>
207       <li>
208         Network adapter receives response and generates IRQ, waking
209         up CPU
210       </li>
211       <li>
212         Driver's IRQ handler schedules polling of the hardware Rx
213         queue (NAPI)
214       </li>
215       <li>
216         Kernel runs the driver's NAPI poll function, which passes
217         the response packet into the network stack
218       </li>
219       <li>
220         Network stack decodes packet headers and adds packet to
221         the task's socket
222       </li>
223       <li>
224         Network stack wakes up sleeping task; scheduler switches
225         to it and the socket call returns
226       </li>
227     </ol>
228   </small>
229 </div>
230
231 <div class="slide">
232   <h1>Network busy-polling [3.11] (2)</h1>
233   <ul class="incremental">
234     <li>
235       If driver supports busy-polling, it tags each packet with
236       the receiving NAPI context, and kernel tags sockets
237     </li>
238     <li>
239       When busy-polling is enabled, <tt>poll()</tt>
240       and <tt>recv()</tt> call the driver's busy poll function to
241       check for packets synchronously (up to some time limit)
242     </li>
243     <li>
244       If the response usually arrives quickly, this reduces overall
245       request/response latency as there are no context switches and
246       power transitions
247     </li>
248     <li>
249       Time limit set by sysctl (<tt>net.busy_poll</tt>,
250       <tt>net.busy_read</tt>) or socket option (<tt>SOL_SOCKET,
251       SO_BUSY_POLL</tt>); requires tuning
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 require a specific kernel module for each type of match
288       and each possible action
289     </li>
290     <li>
291       Userland could only use the four protocol-specific APIs,
292       although the internal netfilter API is more flexible
293     </li>
294     <li>
295       nftables exposes more of this flexibility, allowing userland
296       to provide firewall code for a specialised VM (similar to BPF)
297     </li>
298     <li>
299       nftables userland tool uses this API and is already packaged
300     </li>
301     <li>
302       Eventually, the old APIs will be removed and the old userland
303       tools must be ported to use nftables
304     </li>
305   </ul>
306 </div>
307
308 <div class="slide">
309   <h1>Questions?</h1>
310 </div>
311
312 <div class="slide">
313   <h1>Credits</h1>
314   <ul>
315     <li>
316       Linux 'Tux' logo &copy; Larry Ewing, Simon Budig.
317       <!--
318 Redistribution is free but has to include this notice.
319       -->
320       <ul>
321         <li>Modified by Ben to add Debian open-ND logo</li>
322       </ul>
323     </li>
324     <li>
325       Debian open-ND logo &copy; Software in the Public Interest, Inc.
326       <!--
327 Permission is hereby granted, free of charge, to any person obtaining
328 a copy of this software and associated documentation files (the
329 "Software"), to deal in the Software without restriction, including
330 without limitation the rights to use, copy, modify, merge, publish,
331 distribute, sublicense, and/or sell copies of the Software, and to
332 permit persons to whom the Software is furnished to do so, subject to
333 the following conditions:
334
335 The above copyright notice and this permission notice shall be
336 included in all copies or substantial portions of the Software.
337
338 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
339 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
340 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
341 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
342 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
343 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
344 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
345       -->
346     </li>
347   </ul>
348 </div>
349
350 </body>
351 </html>