<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

<author contact="mailto:zbrown@tumblerings.org">Zack Brown</author>

<issue num="77" date="24 Jul 2000 00:00:00 -0800" />

<intro>

<p>Thanks go to Richard Dawe, who reported a broken link in the <a
href="../news.html">Cousin News</a> page. Thanks!</p>

<p>Thanks also go to all the people who wrote to me about important threads on
'linux-kernel'. Special thanks go to Dylan Griffiths, who really went above
and beyond to get me some cool information. Thanks also go to Arjan van de
Ven and the other folks on #kernelnewbies for pointing me to the VM threads
on 'linux-mm'.</p>

<p>For folks wanting to let me know about important threads, the most important
thing to include is the 'Subject:' line! If you want to add your take on the
thread as well, that would be excellent, and more than I'd hope for.</p>

</intro>

<stats posts="1229" size="5339" contrib="460" multiples="192" lastweek="132">

<person posts="53" size="241" who="Andrea Arcangeli " />
<person posts="39" size="112" who="Alan Cox " />
<person posts="32" size="116" who="Rik van Riel " />
<person posts="24" size="146" who="Andrew Morton " />
<person posts="21" size="112" who="&quot;Khimenko Victor&quot; " />
<person posts="21" size="96" who="&quot;Jeff V. Merkey&quot; " />
<person posts="21" size="85" who="Marcelo Tosatti " />
<person posts="19" size="96" who="&quot;Mike A. Harris&quot; " />
<person posts="16" size="66" who="&quot;Richard B. Johnson&quot; " />
<person posts="16" size="58" who="Richard Gooch " />
<person posts="16" size="51" who="David Woodhouse " />
<person posts="15" size="65" who="&quot;Stephen C. Tweedie&quot; " />
<person posts="15" size="58" who="Linus Torvalds " />
<person posts="14" size="89" who="Roger Larsson " />
<person posts="13" size="49" who="&quot;H. Peter Anvin&quot; " />
<person posts="12" size="47" who="&quot;H. Peter Anvin&quot; " />
<person posts="10" size="35" who="&quot;Juan J. Quintela&quot; " />
<person posts="10" size="34" who="Jens Axboe " />
<person posts="9" size="35" who="Derek Martin " />
<person posts="9" size="34" who="Andre Hedrick " />
<person posts="9" size="33" who="Andries Brouwer " />
<person posts="9" size="32" who="&quot;Andi Kleen&quot; " />
<person posts="9" size="27" who="Dave " />
<person posts="8" size="29" who="Russell King " />
<person posts="8" size="29" who="&quot;Dunlap, Randy&quot; " />
<person posts="8" size="28" who="Tim Waugh " />
<person posts="8" size="26" who="Jes Sorensen " />
<person posts="7" size="27" who="Pavel Machek " />
<person posts="7" size="25" who="" />
<person posts="7" size="24" who="Horst von Brand " />
<person posts="7" size="22" who="Igmar Palsenberg " />
<person posts="7" size="21" who="Manfred Spraul " />
<person posts="7" size="20" who="Chris Mason " />
<person posts="7" size="18" who="" />
<person posts="6" size="58" who="Lawrence Manning " />
<person posts="6" size="29" who="&quot;Adam J. Richter&quot; " />
<person posts="6" size="28" who="Jesse Pollard " />
<person posts="6" size="24" who="Andrzej Krzysztofowicz " />
<person posts="6" size="24" who="Juhana Sadeharju " />
<person posts="6" size="24" who="David Ford " />
<person posts="6" size="22" who="Miles Lane " />
<person posts="6" size="20" who="Keith Owens " />
<person posts="6" size="20" who="&quot;Andrew van der Stock&quot; " />
<person posts="6" size="18" who="Gerhard Mack " />
<person posts="6" size="18" who="" />
<person posts="6" size="17" who="I Lee Hetherington " />
<person posts="5" size="96" who="" />
<person posts="5" size="55" who="&quot;Soeren Sonnenburg&quot; " />
<person posts="5" size="29" who="Michael Meding " />
<person posts="5" size="29" who="Anton Altaparmakov " />
<person posts="5" size="19" who="Claudio Martins " />
<person posts="5" size="19" who="Rusty Russell " />
<person posts="5" size="18" who="Andreas Dilger " />
<person posts="5" size="17" who="Cesar Eduardo Barros " />
<person posts="5" size="16" who="Agust Karlsson " />
<person posts="5" size="16" who="Warren Young " />
<person posts="5" size="15" who="Tony Hoyle " />
<person posts="5" size="15" who=" (Michael Borrelli)" />
<person posts="5" size="14" who="Mohamed Sridi " />
<person posts="5" size="14" who="&quot;Barry K. Nathan&quot; " />
<person posts="4" size="39" who="Mike Galbraith " />
<person posts="4" size="32" who="David Olofson " />
<person posts="4" size="25" who="&quot;Petr Soucek&quot; " />
<person posts="4" size="17" who="&quot;Michael H. Warfield&quot; " />
<person posts="4" size="17" who="Dennis Bjorklund " />
<person posts="4" size="14" who="Alexander Viro " />
<person posts="4" size="14" who="&quot;Henning P. Schmiedehausen&quot; " />
<person posts="4" size="14" who="Andreas Schwab " />
<person posts="4" size="13" who="&quot;Rafael E. Herrera&quot; " />
<person posts="4" size="13" who="Chris Meadors " />
<person posts="4" size="12" who="Mikael Vidstedt " />
<person posts="4" size="12" who="Olivier Galibert " />
<person posts="4" size="12" who="&quot;Theodore Y. Ts'o&quot; " />
<person posts="4" size="11" who="Gregory Maxwell " />
<person posts="4" size="11" who="&quot;David S. Miller&quot; " />
<person posts="3" size="28" who="Ralf Baechle " />
<person posts="3" size="26" who="Tom Holroyd " />
<person posts="3" size="20" who="&quot;Vladimir B. Savkin&quot; " />
<person posts="3" size="19" who="Trever Adams " />
<person posts="3" size="15" who="" />
<person posts="3" size="12" who="&quot;Christopher E. Brown&quot; " />
<person posts="3" size="11" who="Marc Lehmann " />
<person posts="3" size="11" who="Hans Reiser " />
<person posts="3" size="10" who="Donald Becker " />
<person posts="3" size="10" who="Steve Dodd " />
<person posts="3" size="10" who="OKUJI Yoshinori " />
<person posts="3" size="10" who="&quot;Alexander V. Nikolaev&quot; " />
<person posts="3" size="10" who="kmb " />
<person posts="3" size="10" who="&quot;Anssi Kolehmainen&quot; " />
<person posts="3" size="10" who="Mario Mikocevic " />
<person posts="3" size="10" who="David Weinehall " />
<person posts="3" size="10" who="Reinhold Huber " />
<person posts="3" size="10" who="Mathieu Chouquet-Stringer " />
<person posts="3" size="10" who="James Simmons " />
<person posts="3" size="9" who="Jakub Jelinek " />
<person posts="3" size="9" who="Evan Langlois " />
<person posts="3" size="9" who="Matthew Wilcox " />
<person posts="3" size="9" who="Tigran Aivazian " />
<person posts="3" size="9" who="&quot;Robert M. Love&quot; " />
<person posts="3" size="9" who="Stephen Torri " />
<person posts="3" size="8" who="Claudius Link " />
<person posts="3" size="8" who=" (Simon Cozens)" />
<person posts="3" size="8" who="" />
<person posts="3" size="8" who="Olaf Titz " />
<person posts="3" size="7" who="Suvani Kaura " />
<person posts="3" size="7" who="Andrey Savochkin " />
<person posts="3" size="7" who="Aaron Macks " />
<person posts="2" size="46" who="Urban Widmark " />
<person posts="2" size="35" who="Pug Fantus " />
<person posts="2" size="35" who="Scott A Crosby " />
<person posts="2" size="33" who="Rasmus Andersen " />
<person posts="2" size="21" who="" />
<person posts="2" size="21" who="Manfred " />
<person posts="2" size="20" who="Jim Lynch " />
<person posts="2" size="15" who="&quot;Barrett G. Lyon&quot; " />
<person posts="2" size="13" who="Ookhoi " />
<person posts="2" size="12" who=" (John Alvord)" />
<person posts="2" size="11" who="Michael Poole " />
<person posts="2" size="10" who="Andreas Steinmetz " />
<person posts="2" size="9" who="Christian Ehrhardt " />
<person posts="2" size="9" who="Brian Poole " />
<person posts="2" size="9" who="Uncle George " />
<person posts="2" size="9" who="Phillip Ezolt " />
<person posts="2" size="9" who="&quot;Anthony Barbachan&quot; " />
<person posts="2" size="8" who="" />
<person posts="2" size="8" who=" (Rogier Wolff)" />
<person posts="2" size="8" who="Kent Hunt " />
<person posts="2" size="8" who="pramodh mallipatna " />
<person posts="2" size="8" who="Simon Kirby " />
<person posts="2" size="8" who="Dori Seliskar " />
<person posts="2" size="8" who="Pauline Middelink " />
<person posts="2" size="7" who=" (Linus Torvalds)" />
<person posts="2" size="7" who="Francis Galiegue " />
<person posts="2" size="7" who="Ingo Oeser " />
<person posts="2" size="7" who="Thomas Zehetbauer " />
<person posts="2" size="7" who="Daniel Kobras " />
<person posts="2" size="7" who="Mads Bondo Dydensborg " />
<person posts="2" size="7" who="Dan Kegel " />
<person posts="2" size="7" who="Ivan Kokshaysky " />
<person posts="2" size="7" who="Jeff Garzik " />
<person posts="2" size="7" who="Adam Sampson " />
<person posts="2" size="7" who="ANOQ of the Sun " />
<person posts="2" size="7" who="Mark Mokryn " />
<person posts="2" size="7" who="James Bottomley " />
<person posts="2" size="7" who="Jan-Benedict Glaw " />
<person posts="2" size="6" who="Mike Castle " />
<person posts="2" size="6" who="Helge Hafting " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Andrey Panin " />
<person posts="2" size="6" who="&quot;Robert L. Harris&quot; " />
<person posts="2" size="6" who="Roman Zippel " />
<person posts="2" size="6" who="&quot;Rask Ingemann Lambertsen&quot; " />
<person posts="2" size="6" who="Roman Zippel " />
<person posts="2" size="6" who="Martin Josefsson " />
<person posts="2" size="6" who="&quot;James H. Cloos Jr.&quot; " />
<person posts="2" size="6" who="Tom Leete " />
<person posts="2" size="6" who="Ulrich Drepper " />
<person posts="2" size="6" who=" (Robert Broughton)" />
<person posts="2" size="6" who="Chris Wedgwood " />
<person posts="2" size="6" who="&quot;Roeland Th. Jansen&quot; " />
<person posts="2" size="6" who="Torben Mathiasen " />
<person posts="2" size="6" who=" (Timothy D. Webster)" />
<person posts="2" size="6" who="Robert Dale " />
<person posts="2" size="6" who="Ruth Ivimey-Cook " />
<person posts="2" size="6" who="Juan Casero " />
<person posts="2" size="6" who="Henner Eisen " />
<person posts="2" size="6" who="Pablo Baena " />
<person posts="2" size="6" who="=?iso-8859-1?Q?Henrik_St=F8rner?= " />
<person posts="2" size="6" who="Martin Frey " />
<person posts="2" size="6" who="Bjarne Blichfeldt " />
<person posts="2" size="6" who="&quot;Dr. Michael Ferber&quot; " />
<person posts="2" size="6" who="John Covici " />
<person posts="2" size="6" who="Richard Zidlicky " />
<person posts="2" size="6" who="&quot;Matthias Urlichs&quot; " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Erik Andersen " />
<person posts="2" size="6" who="&quot;MWP&quot; " />
<person posts="2" size="6" who="Alan Cox " />
<person posts="2" size="5" who="Ron Flory " />
<person posts="2" size="5" who="Kernel Related Emails " />
<person posts="2" size="5" who="Hariharan L Thantry " />
<person posts="2" size="5" who="Anton Blanchard " />
<person posts="2" size="5" who="Vojtech Pavlik " />
<person posts="2" size="5" who="Hiu Fung Eric Tse " />
<person posts="2" size="5" who="&quot;David Feuer&quot; " />
<person posts="2" size="5" who="&quot;Eric S. Raymond&quot; " />
<person posts="2" size="5" who="Frank Davis " />
<person posts="2" size="5" who="Jeff Epler " />
<person posts="2" size="5" who="Robert Dinse " />
<person posts="2" size="5" who="=?euc-kr?q?Kim=20DaeHo?= " />
<person posts="2" size="5" who="Chris Evans " />
<person posts="1" size="52" who="Brian Gerst " />
<person posts="1" size="49" who="&quot;Joe Pranevich&quot; " />
<person posts="1" size="42" who="&quot;denics&quot; " />
<person posts="1" size="19" who="Lawrence Walton " />
<person posts="1" size="18" who="Ankur Jain " />
<person posts="1" size="18" who="&quot;Julio Lopez&quot; " />
<person posts="1" size="15" who="JSC " />
<person posts="1" size="14" who="Patrick van de Lageweg " />
<person posts="1" size="13" who="" />
<person posts="1" size="11" who="Benjamin Close " />
<person posts="1" size="10" who="Mircea Damian " />
<person posts="1" size="10" who="Stephen Rothwell " />
<person posts="1" size="9" who="Anton Altaparmakov " />
<person posts="1" size="9" who="&quot;Conrad Heiney&quot; " />
<person posts="1" size="9" who="Brian Marsden " />
<person posts="1" size="8" who="&quot;Jon Morby&quot; " />
<person posts="1" size="8" who="Tom Pincince " />
<person posts="1" size="8" who="Michael W Zappe " />
<person posts="1" size="7" who="David Mosberger " />
<person posts="1" size="7" who="&quot;Rich Baum&quot; " />
<person posts="1" size="7" who="Spadix " />
<person posts="1" size="7" who="Jeff McNeil " />
<person posts="1" size="7" who="Guido Trentalancia " />
<person posts="1" size="7" who="Enrico Scholz " />
<person posts="1" size="6" who="Robert Holmberg " />
<person posts="1" size="6" who="Jeff Epler " />
<person posts="1" size="6" who="Claus Fischer " />
<person posts="1" size="6" who="Alexander Demenshin " />
<person posts="1" size="6" who="Wojciech Purczynski " />
<person posts="1" size="6" who="Nick Marouf " />
<person posts="1" size="6" who="Terje Malmedal " />
<person posts="1" size="6" who="Rodrigo Barbosa " />
<person posts="1" size="6" who="Jean-Francois Landry " />
<person posts="1" size="6" who="Douglas Gilbert " />
<person posts="1" size="5" who="Valentijn Sessink " />
<person posts="1" size="5" who="=?iso-8859-1?Q?Jakob_=D8stergaard?= " />
<person posts="1" size="5" who="Heinz Diehl " />
<person posts="1" size="5" who="David Lang " />
<person posts="1" size="5" who="&quot;Vinay Vernekar&quot; " />
<person posts="1" size="5" who="Alasdair Campbell " />
<person posts="1" size="5" who="&quot;Sheldon Easterbrook&quot; " />
<person posts="1" size="5" who=" (Ruud de Rooij)" />
<person posts="1" size="5" who="&quot;Vitezslav T. Sem&quot; " />
<person posts="1" size="5" who="Mike Touloumtzis " />
<person posts="1" size="4" who="Steven Walter " />
<person posts="1" size="4" who="=?iso-8859-1?Q?J=F6rn?= Nettingsmeier " />
<person posts="1" size="4" who="Khimenko Victor " />
<person posts="1" size="4" who="&quot;Jeffrey E. Hundstad&quot; " />
<person posts="1" size="4" who="Erik Verbruggen " />
<person posts="1" size="4" who="Lukas Dobrek " />
<person posts="1" size="4" who="Gabriel Krabbe " />
<person posts="1" size="4" who="Daniel Stone " />
<person posts="1" size="4" who=" (Don)" />
<person posts="1" size="4" who="Jean-Christian de Rivaz " />
<person posts="1" size="4" who="Horst von Brand " />
<person posts="1" size="4" who="&quot;Boerner, Brian&quot; " />
<person posts="1" size="4" who="Shane Nay " />
<person posts="1" size="4" who="Matthijs Melchior " />
<person posts="1" size="4" who="Adrian Reyer " />
<person posts="1" size="4" who="Kimball Thurston " />
<person posts="1" size="4" who="&quot;Khimenko Victor&quot; " />
<person posts="1" size="4" who="Nimrod Zimerman " />
<person posts="1" size="4" who="&quot;Theo E. Schlossnagle&quot; " />
<person posts="1" size="4" who="Jesse Pollard " />
<person posts="1" size="4" who="Doug Ledford " />
<person posts="1" size="4" who="Kay Diederichs " />
<person posts="1" size="4" who="Martin Mares " />
<person posts="1" size="4" who="&quot;Bruce A. Locke&quot; " />
<person posts="1" size="4" who="Erik McKee " />
<person posts="1" size="4" who="Reed Meyer " />
<person posts="1" size="4" who="&quot;Mark Kroot&quot; " />
<person posts="1" size="4" who="Roger Gammans " />
<person posts="1" size="4" who="Erik Andersen " />
<person posts="1" size="4" who="Jay Ts " />
<person posts="1" size="4" who=" (Kai Henningsen)" />
<person posts="1" size="4" who="=?ISO-2022-JP?B?GyRCM3Q8MDJxPFIlLyVtJTklXSUkJXMlSBsoQg==?= " />
<person posts="1" size="4" who="Jamie Lokier " />
<person posts="1" size="4" who="Martin Teichmann " />
<person posts="1" size="4" who="Paul Campbell " />
<person posts="1" size="4" who="Wayne Pascoe " />
<person posts="1" size="3" who="J J Sloan " />
<person posts="1" size="3" who="Michael Mess " />
<person posts="1" size="3" who="Happy " />
<person posts="1" size="3" who="Shawn Starr " />
<person posts="1" size="3" who="Jan-Simon Pendry " />
<person posts="1" size="3" who="&quot;Steve Grubb&quot; " />
<person posts="1" size="3" who="Chip Salzenberg " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Tony Nugent " />
<person posts="1" size="3" who="Torsten Duwe " />
<person posts="1" size="3" who="&quot;Matt D. Robinson&quot; " />
<person posts="1" size="3" who="Stanislav Meduna " />
<person posts="1" size="3" who="&quot;Sherif Abou Seda&quot; " />
<person posts="1" size="3" who="Christopher Thompson " />
<person posts="1" size="3" who="Tobias =?iso-8859-1?Q?Ringstr=F6m?= " />
<person posts="1" size="3" who="David Richardson " />
<person posts="1" size="3" who="&quot;Ralston, Steve&quot; " />
<person posts="1" size="3" who="George Anzinger " />
<person posts="1" size="3" who="Allan Duncan " />
<person posts="1" size="3" who="Linda Walsh " />
<person posts="1" size="3" who="&quot;Christopher C. Chimelis&quot; " />
<person posts="1" size="3" who="Greg KH " />
<person posts="1" size="3" who=" (Arjan van de Ven)" />
<person posts="1" size="3" who="Kai Vehmanen " />
<person posts="1" size="3" who="Marco Colombo " />
<person posts="1" size="3" who="Rick Stevens " />
<person posts="1" size="3" who="&quot;S.Toms&quot; " />
<person posts="1" size="3" who="&quot;SEED1&quot; " />
<person posts="1" size="3" who="Phil " />
<person posts="1" size="3" who="John Levon " />
<person posts="1" size="3" who="&quot;Craig Whitmore&quot; " />
<person posts="1" size="3" who="Marcio Gomes " />
<person posts="1" size="3" who="&quot;White, Charles&quot; " />
<person posts="1" size="3" who="Reto Baettig " />
<person posts="1" size="3" who="&quot;Ulrich Windl&quot; " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;Robert J.Dunlop&quot; " />
<person posts="1" size="3" who="Jens Taprogge " />
<person posts="1" size="3" who="Marc Zyngier " />
<person posts="1" size="3" who="Borislav Deianov " />
<person posts="1" size="3" who="Vincent Oberle " />
<person posts="1" size="3" who="Pau Aliagas " />
<person posts="1" size="3" who="Andrew Clausen " />
<person posts="1" size="3" who="Oliver Feiler " />
<person posts="1" size="3" who="Pollywog " />
<person posts="1" size="3" who="Frank Elsner " />
<person posts="1" size="3" who="David Whysong " />
<person posts="1" size="3" who="Andreas Roedl " />
<person posts="1" size="3" who="John Appleby " />
<person posts="1" size="3" who="Philipp Rumpf " />
<person posts="1" size="3" who=" (Graham Stoney)" />
<person posts="1" size="3" who="Hannes Reinecke " />
<person posts="1" size="3" who="William Stearns " />
<person posts="1" size="3" who="Chuck Radcliff " />
<person posts="1" size="3" who="Erik Mouw " />
<person posts="1" size="3" who=" (Arjan van de Ven)" />
<person posts="1" size="3" who="Kev " />
<person posts="1" size="3" who="Aaron Lehmann " />
<person posts="1" size="3" who="&quot;Thomas S. Iversen&quot; " />
<person posts="1" size="3" who="Kingshuk Mandal " />
<person posts="1" size="3" who="Bryan -TheBS- Smith " />
<person posts="1" size="3" who="James A Simmons " />
<person posts="1" size="3" who="Thierry Vignaud " />
<person posts="1" size="3" who="Peter Svensson " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Gary Lawrence Murphy " />
<person posts="1" size="3" who="gis88564 " />
<person posts="1" size="3" who="Darin Smith " />
<person posts="1" size="3" who="&quot;Anders K. Pedersen&quot; " />
<person posts="1" size="3" who="Drew Bertola " />
<person posts="1" size="3" who="Petr Vandrovec " />
<person posts="1" size="3" who="Andreas Tobler " />
<person posts="1" size="3" who="Val Henson " />
<person posts="1" size="3" who="Chris Noe " />
<person posts="1" size="3" who="Roger Gammans " />
<person posts="1" size="3" who="=?iso-8859-1?Q?Andr=E9_Dahlqvist?= " />
<person posts="1" size="3" who="Keith Duthie " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="David Bronaugh " />
<person posts="1" size="3" who="Felix Maibaum " />
<person posts="1" size="3" who="&quot;Johan Kullstam&quot; " />
<person posts="1" size="3" who="Martin Douda " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Joel Sloan " />
<person posts="1" size="3" who="Thomas Dodd " />
<person posts="1" size="3" who="Douglas Gilbert " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;David Schwartz&quot; " />
<person posts="1" size="3" who="Ben Greear " />
<person posts="1" size="3" who="&quot;Ronny Adsetts&quot; " />
<person posts="1" size="3" who="&quot;Gabor Z. Papp&quot; " />
<person posts="1" size="3" who=" (goingware.com)" />
<person posts="1" size="3" who="Harald Dunkel " />
<person posts="1" size="3" who="Pug Fantus " />
<person posts="1" size="3" who="Pavel Roskin " />
<person posts="1" size="3" who="Pete Zaitcev " />
<person posts="1" size="3" who="Geert Uytterhoeven " />
<person posts="1" size="3" who=" (Nick Holloway)" />
<person posts="1" size="3" who="Angelo Rossi " />
<person posts="1" size="3" who="Ragnar Hojland Espinosa " />
<person posts="1" size="3" who="OKUJI Yoshinori " />
<person posts="1" size="3" who="Peter Enderborg " />
<person posts="1" size="3" who="Dimitris Michailidis " />
<person posts="1" size="3" who="Chris Kloiber " />
<person posts="1" size="2" who="Deepak Saxena " />
<person posts="1" size="2" who="Rui Sousa " />
<person posts="1" size="2" who="William Astle " />
<person posts="1" size="2" who="Norbert Federa " />
<person posts="1" size="2" who="Sam Tregar " />
<person posts="1" size="2" who="Andrzej Krzysztofowicz " />
<person posts="1" size="2" who=" (Dave Jones)" />
<person posts="1" size="2" who="Gabor Lenart " />
<person posts="1" size="2" who="Tom Sightler " />
<person posts="1" size="2" who="Hirling Endre " />
<person posts="1" size="2" who="David Lombard " />
<person posts="1" size="2" who="Rob Landley " />
<person posts="1" size="2" who="Pontus Fuchs " />
<person posts="1" size="2" who="Eli Carter " />
<person posts="1" size="2" who="Andreas Malataras " />
<person posts="1" size="2" who="&quot;Lee Ho&quot; " />
<person posts="1" size="2" who=" (Naohiko Shimizu)" />
<person posts="1" size="2" who="Scott Long " />
<person posts="1" size="2" who="&quot;Kevin Winchester&quot; " />
<person posts="1" size="2" who="Brian Hall " />
<person posts="1" size="2" who="Sivaram N B " />
<person posts="1" size="2" who="Bernd Kischnick " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Udo Held " />
<person posts="1" size="2" who="bert hubert " />
<person posts="1" size="2" who="mohd zamri " />
<person posts="1" size="2" who="Chris Freeze " />
<person posts="1" size="2" who="Rainer Wiener " />
<person posts="1" size="2" who="&quot;Mr. James W. Laferriere&quot; " />
<person posts="1" size="2" who="Pawel Krawczyk " />
<person posts="1" size="2" who="&quot;Yahoo Account&quot; " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;Rob Taylor&quot; " />
<person posts="1" size="2" who="Artur Skawina " />
<person posts="1" size="2" who="Chester Carey " />
<person posts="1" size="2" who="Farrell Woods " />
<person posts="1" size="2" who="&quot;AVl&quot; " />
<person posts="1" size="2" who="=?iso-8859-1?q?Declan=20O'Shanahan?= " />
<person posts="1" size="2" who="Tom Daniels " />
<person posts="1" size="2" who="&quot;John D. Rowell&quot; " />
<person posts="1" size="2" who="&quot;Albert D. Cahalan&quot; " />
<person posts="1" size="2" who="Coy A Hile " />
<person posts="1" size="2" who="Ari Pollak " />
<person posts="1" size="2" who="Laurence Sanford " />
<person posts="1" size="2" who="&quot;Steven N. Hirsch&quot; " />
<person posts="1" size="2" who="Jeff Dike " />
<person posts="1" size="2" who="Alex Buell " />
<person posts="1" size="2" who="kevin " />
<person posts="1" size="2" who="Andrew Park " />
<person posts="1" size="2" who="&quot;Krisztian Flautner&quot; " />
<person posts="1" size="2" who="Matthew Kirkwood " />
<person posts="1" size="2" who="Alexander Kotelnikov " />
<person posts="1" size="2" who="Eric Buddington " />
<person posts="1" size="2" who="Sebastian Kuzminsky " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Roberto Fichera " />
<person posts="1" size="2" who="Wakko Warner " />
<person posts="1" size="2" who="Markus Pfeiffer " />
<person posts="1" size="2" who="Alejandro Conty " />
<person posts="1" size="2" who="Meelis Roos " />
<person posts="1" size="2" who="Kent Whitten " />
<person posts="1" size="2" who="&quot;Sid Kas&quot; " />
<person posts="1" size="2" who="&quot;hiroaki yamamoto&quot; " />
<person posts="1" size="2" who="Jarno Paananen " />
<person posts="1" size="2" who="Mike Panetta " />
<person posts="1" size="2" who="Benoit BENARD " />
<person posts="1" size="2" who="&quot;Robinson, Daniel&quot; " />
<person posts="1" size="2" who="&quot;Benjamin C.R. LaHaise&quot; " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Matthew Jacob " />
<person posts="1" size="2" who="Patrick Lerda " />
<person posts="1" size="2" who=" (Robert Wilhelm)" />
<person posts="1" size="2" who="Kui Gao " />
<person posts="1" size="2" who="&quot;Aaron Tiensivu&quot; " />
<person posts="1" size="2" who="&quot;Chen Chen&quot; " />
<person posts="1" size="2" who="Pete Clements " />
<person posts="1" size="2" who="Abhishek Khaitan " />
<person posts="1" size="2" who="Yukari " />
<person posts="1" size="2" who="David Howells " />
<person posts="1" size="2" who="Pau " />
<person posts="1" size="2" who="" />

</stats>

<section
  title="New Plans For the Virtual Memory Subsystem"
  subject="2.4 / 2.5 VM plans"
  archive="http://mail.nl.linux.org/linux-mm/2000-06/msg00343.html"
  posts="6"
  startdate="25 Jun 2000 00:00:00 -0800"
  enddate="29 Jun 2000 00:00:00 -0800"
>
<topic>Big Memory Support</topic>
<topic>Clustering</topic>
<topic>FS: XFS</topic>
<topic>Virtual Memory</topic>

<p>In the 'linux-mm' mailing list, Rik van Riel proposed:</p>

<quote who="Rik van Riel">

<p>since I've heard some rumours of you folks having
come up with nice VM ideas at USENIX and since I've been working on various
VM things (and experimental 2.5 things) for the last months, maybe it's a
good idea to see which of your ideas have already been put into code and to
see which ideas fit together or are mutually exclusive. :)</p>

<p>To start the discussion, here's my flameba^Wlist of ideas:</p>

<p>2.4:</p>

<p>

<ol>

<li>re-introduce page aging, my small and simple experiments seem to
indicate that page aging takes *less* cpu time than copying pages to/from
highmem all the time (let alone making your applications wait for disk
because we replaced the wrong page last time)</li>

<li>fix the latency problems of applications calling shrink_mmap and
flushing infinite amounts of pages (mostly fixed)</li>

<li>

<p>separate page replacement (page aging) and page flushing, currently
we'll happily free a referenced clean page just because the unreferenced
pages haven't been flushed to disk yet ... this is very bad since the
unreferenced pages often turn out to be things like executable code</p>

<p>we could achieve this by augmenting the current MM subsystem with an
inactive and scavenge list, in the process splitting shrink_mmap() into
three better readable functions ... I have this mostly done</p>

</li>

<li>fix balance_dirty() to include inactive pages and have kflushd help
kswapd by proactively flushing some of the inactive pages _before_ we run
into trouble</li>

<li>implement some form of write throttling for VMAs so it'll be impossible
for big mmap()s, etc, to competely fill memory with dirty pages</li>

</ol>

</p>

</quote>

<p>Stephen C. Tweedie replied to each of these items, remarking, <quote
who="Stephen C. Tweedie">Right. :-) The following includes a lot of the
stuff that Ben and I bashed out at Usenix. I don't count this as new feature
stuff --- most of what follows is just identifying places where the current
VM is plain broken!</quote></p>

<p>First, he agreed with the idea of reintroducing page aging. To item 2,
Stephen felt it should be possible to get really aggressive about which
cached pages to flush. He figured the cache didn't change all that much
between times it was checked, so it shouldn't be necessary to walk all the
lists of least-recently-used pages each time. To item 3, he was vehemently
in agreement with separate page replacement and page flushing.</p>

<p>However, to item 4, he disagreed. He felt Rik was trying to yoke two
different animals, and it wouldn't work.</p>

<p>To item 5 he was back in agreement, though he added that this was orthogonal
to the other problems, and he felt that some of the solutions already
discussed would also go a long way toward minimizing these problems as well.
Finally, he introduced:</p>

<quote who="Stephen C. Tweedie">Other things to consider:

<p>

<ol>

<li>The page aging loops need to have early break-out when the number of
free pages suddenly increases (exit, munmap, whatever);</li>

<li>The page stealer shouldn't block just because kswapd is blocked on
synchronous swapping (this comes for free if we have separate page
flushing)</li>

<li>shrink_dentry should probably skip inodes which have still got pages
attached, as otherwise we get a lot of unnecessary cache flushes</li>

<li>We MUST quantify the current VM pressure as a way of controlling page
aging. That way aging can be proactive under load, but we don't necessarily
have to evict pages from memory too early (we can age pages without flushing
them).</li>

<li>RSS accounting needs to be audited.  Right now, the per-mm rss isn't an
atomic type, and it doesn't seem to be consistently protected by the page
table locks.</li>

</ol>

</p>

<p>A few other ideas Ben and I threw about are much more long-term.  </p>

<p>

<ol>

<li>We think it should be possible to share page tables for large shared
mmaps (think of libc and big sysv shm segments).</li>

<li>We can do reverse pte maps pretty cheaply by the following:

<ol>

<li>Reverse maps for shared mmaps are easy enough by following the per-inode
vma list</li>

<li>The pte for unshared anon pages can be encoded in the page struct
easily.</li>

<li>Shared anon pages are the tricky ones; but it's simple to maintain a
hash list of all such ptes, and there aren't many in a typical system.
Fork() is, of course, the one place where lots of these occur, but we can
minimise the number of shared anon pages over fork by implementing COW on
page tables (that way, we share the page tables but NOT the pages!)</li>

</ol>

</li>

<li>Think about having a list of all page tables in memory.  With that, we
can do aging in the VM without *EVER* having to walk through vmas at all: we
can walk through the ptes in the system performing atomic bitops on the ptes
and age counts without caring about the higher level layers until a given
page's age reaches zero. Only at that point do we care about invoking the
swapper for that page's vma.</li>

</ol>

</p>

<p>Food for thought.  3) in particular seems to open up a whole new set of
possibilities, but it's definitely something for an experimental post-2.4
branch. :-)</p>

</quote>

<p>There was no reply, but Juan J. Quintela replied to Rik's initial list. At
the end of the list, he added a sixth item for 2.4, <quote who="Juan J.
Quintela">Integrate the shm code in the page cache, to evict having Yet
another Cache to balance.</quote> He also listed a new set of items for 2.5:</p>

<quote who="Juan J. Quintela">

<p>

<ol>

<li>Make a -&gt;flush method in the address_space operations, Rik mentioned
it in some previous mail, it should return the number of pages that it has
flushed. That would make shrink_mmap code (or its successor) more readable,
as we don't have to add new code each time that we add a new type of page to
the page cache.</li>

<li>This one is related with the FS, not MM specific, but FS people want to
be able to allocate MultiPage buffers (see pagebuf from XFS) and people want
similar functionality for other things. Perhaps we need to find some
solution/who to do that in a clean way. For instance, if the FS told us that
he wants a buffer of 4 pages, it is quite obvious how to do write clustering
for a page in that buffer, we can use that information.</li>

<li>We need also to implement write clustering for fs/page cache/swap. Just
now we have _not_ limit in the amount of IO that we start, that means that
if we have all the memory full of dirty pages, we can have a _big_ stall
while we wait for all the pages to be written to disk, and yes that happens
with the actual code.</li>

</ol>

</p>

</quote>

</section>

<section
  title="Status Of NTFS Support"
  subject="Want to help with NTFS"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_01/msg00860.html"
  posts="22"
  startdate="06 Jul 2000 00:00:00 -0800"
  enddate="15 Jul 2000 00:00:00 -0800"
>
<topic>FS: NTFS</topic>
<topic>Microsoft</topic>

<mention>Alan Cox</mention>

<p>Timothy D. Webster volunteered to help any existing NTFS effort, and Jeff V.
Merkey replied, <quote who="Jeff V. Merkey">There are several folks working
on it. Anton (I cannot spell his last name)</quote> [it is Altaparmakov
--Ed] <quote who="Jeff V. Merkey">and Steve Dodd are currently doing most of
the work. When NWFS is completed and finally checked in, I was planning to
clean it up and correct the on-disk structures and put in the real NTFS
journal. The person to ask would be Alan Cox.</quote></p>

<p>Steve Dodd summed up his status with the project, saying, <quote who="Steve
Dodd">I'll have to confess here: I haven't managed to do much at all in over
a year :-( The last thing I was looking at in the current driver was the
directory handling, and after a while all the NTFS_PUTU32(foo+0x&lt;magic
number&gt;, ...) stuff really fried my brain. I did start some new code a while
back which actually used structs to represent the on-disk structures ;-) and
was supposed to play nicely with the page cache. But I never got very far
with it.</quote></p>

<p>Anton Altaparmakov also said he was too busy to do much coding on it at the
moment, but invited Timothy to hack on the numerous 'fixme's in the source.
To Jeff's plans to clean up the code himself, Anton replied, <quote
who="Anton Altaparmakov">That would be great. More so since you seem to be
the only person who actually has the ms ntfs specs and hence the only person
who actually knows what the on-disk structures are... - The information I
have at least is gathered from various books and sources and is not quite
complete or may very well be wrong in places.</quote> Timothy rose to the
challenge and asked Anton for some pointers to any NTFS docs that might be
available, and Anton listed:</p>

<p>

<ul>

<li><a href="http://www.fsys.demon.nl/fsinfo.htm">http://www.fsys.demon.nl/fsinfo.htm</a></li>
<li><a href="http://metalab.unc.edu/filesystems/howto/Filesystems-HOWTO-5.html">http://metalab.unc.edu/filesystems/howto/Filesystems-HOWTO-5.html</a></li>
<li><a href="http://www.informatik.hu-berlin.de/~loewis/ntfs/">http://www.informatik.hu-berlin.de/~loewis/ntfs/</a></li>
<li><a href="http://eia.udg.es/~coma/imweb/pagina.html">http://eia.udg.es/~coma/imweb/pagina.html</a></li>
<li><a href="http://msdn.microsoft.com/library/periodic/period99/journal2.htm">http://msdn.microsoft.com/library/periodic/period99/journal2.htm</a></li>
<li><a href="http://www.esiea.fr/public_html/Christophe.GRENIER/">http://www.esiea.fr/public_html/Christophe.GRENIER/</a></li>

</ul>

</p>

<p>He added:</p>

<quote who="Anton Altaparmakov">

<p>The following books contain some information
on NTFS but this is not their primary focus:</p>

<p>Windows NT/2000 Native API Reference<br />
by Gary Nebbett<br />
Macmillan Technical Publishing USA<br />
ISBN 1-57870-199-6</p>

<p>Inside Windows NT Second Edition<br />
by David A. Solomon<br />
Microsoft Press<br />
ISBN 1-57231-677-2</p>

<p>The macmillan book is quite a handy reference if you are doing NT/2000
programming. The microsoft book is not too deeply technically involved but
it is a good overview of how NTFS works.</p>

</quote>

</section>

<section
  title="Per-User Resource Limits Planned For 2.5"
  subject="Kernel 2.2.14 OOM killer strikes."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_01/msg00871.html"
  posts="40"
  startdate="06 Jul 2000 00:00:00 -0800"
  enddate="12 Jul 2000 00:00:00 -0800"
>
<topic>OOM Killer</topic>
<topic>Virtual Memory</topic>

<mention>Derek Martin</mention>
<mention>Rik van Riel</mention>

<p>Mike A. Harris reported his first Out Of Memory event in a long, long time.
He'd used Midnight Commander to view a really big file in hexadecimal
format, and 'mc' had apparently decided to load the entire 143M file into
RAM. This triggered Linux's 'OOM Killer' algorithm, which attempts to
intelligently guess which processes to kill under those circumstances. In
this case, it killed netscape and the window manager, leaving 'mc' still
running. This trashed his work and forced a reboot. He stated:</p>

<quote who="Mike A. Harris">

<p>The kernel OOM killing issue is never going to
be solved properly because it would have to be sentient to do so. So no
amount of argument/debate will yield the omnipotent killing algorithm, and
as such it will always suffer from doing the wrong thing, and pissing people
off.</p>

<p>Therefore, since some people WANT OOM killing to be done, and others such as
myself do NOT want it to be done, could someone in the know of doing so,
please make it a compile time or run time tunable option? I'd like to tell
my kernel "If an OOM condition occurs, under absolutely *NO* circumstances
are you to EVER kill a running process".</p>

<p>I am *NOT* asking for this to be the default option, nor am I asking that
everyone else use it. I *FULLY* understand the need to have a system like we
have right now FOR SOME SYSTEMS, however my system does not need it, and I
suspect many other desktop systems do not either. I'd rather have the
application that is hogging memory DIE than everything on my system by some
"smart" algorithm.</p>

</quote>

<p>Claudio Martins posted an exploit:</p>

<quote who="Claudio Martins">

<p>It's trivial for any user to bring the system
to an unusable state:</p>

<p>for(;;) malloc(1);</p>

<p>...and boom! In 15 seconds there's no more inetd, logins, http, etc
:(</p>

</quote>

<p>But Marcelo Tosatti explained:</p>

<quote who="Marcelo Tosatti">

<p>Per-user resource limits will avoid monkeys
from doing that stuff.</p>

<p>Unfortunately only 2.6 kernel will have this feature, but distribution
vendors will probably use a backported version for 2.4.</p>

<p>Linux per-user resource limits are called "user beancounters", and you can
find a development version at <a
href="http://www.asplinux.com.sg/install/ubpatch.html">http://www.asplinux.com.sg/install/ubpatch.html</a>.
Currently there is only kernel-level code.</p>

<p>A userlevel PAM module is needed to make it usable for real systems.</p>

<p>SGI's CSA (<a
href="http://oss.sgi.com/projects/csa">http://oss.sgi.com/projects/csa</a>,
no code available yet) is a similar, but more complete per-user resource
accouting scheme which will be ported to Linux in the future.</p>

</quote>

<p>Elsewhere, Marcelo suggested Mike try other 'OOM Killer' algorithms, and
suggested searching for "oom" on <a
href="http://www.surriel.com/patches/">Rik van Riel's kernel patches</a>
page.</p>

<p>Elsewhere, Olaf Titz suggested:</p>

<quote who="Olaf Titz">

<p>I wonder what happened of the AIX approach: define a
new signal (they called it SIGDANGER AFAIK), ignored by default, and send
this signal to _all_ processes a few seconds before starting to SIGKILL
processes.</p>

<p>This moves the policy completely to user space (i.e. The Right Thing). You
can either have a daemon listening to this signal and deciding by
configuration what and how to kill, or you can implement a handler for
graceful exit in suitable applications, or both. Make the "few seconds"
tunable by sysctl and all is perfect. You can even implement the following:
when a process explicitly ignores the special signal (and has an appropriate
capability?), cause it to never be killed. That would be for X servers and
session managers.</p>

</quote>

<p>Claudio Martins objected that this would cause the programs of one user to
be killed when another user used up all RAM. He felt Olaf's solution merely
disguised the problem, and reiterated the need for per-user resource
accounting.</p>

<p>Derek Martin suggested just killing the process that caused the OOM. This
turned out to be more than a simple proposition, and Warren Young explained:</p>

<quote who="Warren Young">

<p>The first time your program asks for a little bit
of memory, malloc() goes and asks the kernel for a bunch of memory: tens of
K at least, maybe more. This is because it wants to minimize the number of
memory blocks, the number of syscalls, and the amount of memory
fragmentation.</p>

<p>Now when malloc() asks for that memory, the kernel doesn't mark it as
in-use, and it doesn't assign it a place in real storage. Instead, it maps
it into the VM tables as unwritable memory. When someone writes to the
memory (first storage into the new memory), the kernel traps; it realizes
that the memory is now _really_ in use, so it marks it as such. This
optimization lets my piggy program ask for a megabyte of memory, only use a
few bytes of it, and not waste a bunch of real RAM. (I do waste some VM, but
that doesn't matter unless your system has real memory for all or nearly all
of the addressable memory: 4 GB on ia32.)</p>

<p>Now imagine a running system: each program has a bunch of memory
overcommitted. Right before the OOM event, RAM and swap are full with in-use
pages. Now one program tries to access one of its allocated but unused
pages. The kernel traps, tries to map the page into memory, and fails.</p>

<p>Now what process should the kernel kill?  The naive answer is the one that
caused the trap. But what if you've got a process with a memory leak that
happens to eat all the memory, then just before it grabs the last bit of
memory, the kernel schedules another process which touches one of its
overcommitted pages. What if that unfortunate process is, say, syslogd or
something critical like that?</p>

<p>System fall down go boom.</p>

<p>The right solution is resource accounting, which is coming to a kernel near
you sometime next year.</p>

</quote>

</section>

<section
  title="Status Of Intel 82802 RNG Support"
  subject="Intel 82802 RNG"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_02/msg00262.html"
  posts="6"
  startdate="10 Jul 2000 00:00:00 -0800"
  enddate="12 Jul 2000 00:00:00 -0800"
>
<topic>Random Number Generation</topic>

<mention>Pavel Machek</mention>
<mention>Jeff Garzik</mention>

<p>Robert M. Love grepped through the sources for the Intel 82802 RNG Random
Number Generator. He couldn't find a 'CONFIG_INTEL_RNG' config option, and
volunteered to write and maintain the driver himself. A couple people
pointed out that Jeff Garzik had already written this driver (Robert took a
look and remarked, <quote who="Robert M. Love">looking over the source, its
everything i dreamed of.</quote>); but Pavel Machek added that Jeff
apparently didn't own the relevant hardware, and might be willing to pass
maintainership over to Robert.</p>

</section>

<section
  title="Some Discussion Of The SMP Booting Code"
  subject="why is trampoline.S code copied for each cpu?"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_02/msg00332.html"
  posts="6"
  startdate="11 Jul 2000 00:00:00 -0800"
  enddate="13 Jul 2000 00:00:00 -0800"
>
<topic>SMP</topic>

<mention>Philipp Rumpf</mention>
<mention>Tigran Aivazian</mention>

<p>Tigran Aivazian had some trouble understanding the '<a
href="http://lxr.linux.no/source/arch/i386/kernel/trampoline.S?v=2.4.0-test2">trampoline.S</a>'
code. In particular, 'arch/i386/kernel/smpboot.c:do_boot_cpu()' used
'setup_trampoline()' to copy the 'trampoline.S' code once for each CPU. It
seemed to him that all CPU's could be pointed to the same copy, which would
save space, instead of making identical copies for each CPU. After examining
the file, he found that the reason for this (which he could see but not
understand) was that each instance wrote a magic number "a5a5a5a5" into its
code. He asked if anyone could explain why this was.</p>

<p>James Bottomley replied that actually all CPU's did use the same memory
locations, which were just refreshed each time. So there was no wasted RAM.
Regarding the magic number, James explained:</p>

<quote who="James Bottomley">

<p>If you look lower down in do_boot_cpu(), this
is used as a diagnosis of a boot failure (the check at phys_to_virt(8192)).
If we don't find the signature, we know the CPU failed to start, if we do
find it, we know it started but got stuck somewhere after the switch to
protected mode.</p>

<p>In the latter case, the CPU could happily have trashed the trampoline code
before disappearing off into hyperspace, so it makes sense to set it up anew
each time.</p>

</quote>

<p>Philipp Rumpf objected to this behavior, saying that if this ever happened
in practice, it would mean that a random CPU was executing random code. But
James clarified, <quote who="James Bottomley">It doesn't happen in the
normal course of events. For those of us who play with SMP HAL's, having
this type of information can be invaluable. Also, getting the machine to
boot so you can try to find out what happened to the errant CPU is useful.
Usually it is just stuck somewhere like the message implies.</quote> At this
point Tigran felt his question had been answered, and thanked James and
Philipp. EOT.</p>

</section>

<section
  title="Smaller Timeslices And New Algorithm For 2.4"
  subject="Report: Big Improvement in -test3"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_02/msg00651.html"
  posts="10"
  startdate="12 Jul 2000 00:00:00 -0800"
  enddate="13 Jul 2000 00:00:00 -0800"
>

<mention>Richard Gooch</mention>

<p>Joel Sloan noticed much smoother and faster interactive performance under
load in 2.4.0test3. Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>This was actually almost certainly due to a
_really_ simple improvement.</p>

<p>As of test4-pre4, the default time-slice for a normal process is just 50ms,
while it used to be 200ms.</p>

<p>200ms is way too long a timeslice when working with interactive things: it's
easily noticeable. 50ms should be much better.</p>

</quote>

<p>Linus seems to have been referring to a kernel that came out <i>after</i>
the one Joel had praised, so this may not be the whole story. That didn't
come out in the thread though...</p>

<p>Richard Gooch replied to Linus, asking if the change was possible because
the number of ticks was no longer derived from the priority level. Linus
confirmed, and explained:</p>

<quote who="Linus Torvalds">

<p>If people wondered why the "-&gt;priority" -&gt;
"-&gt;nice" change was done, now you know. "-&gt;priority" used to be a
tick-based nice level, and it just wasn't able to handle UNIX semantics when
the resolution of ticks dropped to just a few ticks.</p>

<p>Simple vulcan mind-trick. Switch them around, and instead of calculating
"nice" from the number of ticks, we calculate ticks from the virtual nice
value, making the problem go away and allowing for a shorter timeslice
without having to do major surgery.</p>

</quote>

<p>Richard Gooch asked how many ticks e.g. 'nice 10' and 'nice 11' got, and
Andrew Morton listed:</p>

<quote who="Andrew Morton">

<p>if (HZ &lt; 200):</p>

<p>nice -20: 11 ticks<br />
nice -19: 10 ticks<br />
nice -18: 10 ticks<br />
nice -17: 10 ticks<br />
nice -16: 10 ticks<br />
nice -15: 9 ticks<br />
nice -14: 9 ticks<br />
nice -13: 9 ticks<br />
nice -12: 9 ticks<br />
nice -11: 8 ticks<br />
nice -10: 8 ticks<br />
nice -9: 8 ticks<br />
nice -8: 8 ticks<br />
nice -7: 7 ticks<br />
nice -6: 7 ticks<br />
nice -5: 7 ticks<br />
nice -4: 7 ticks<br />
nice -3: 6 ticks<br />
nice -2: 6 ticks<br />
nice -1: 6 ticks<br />
nice 0: 6 ticks<br />
nice 1: 5 ticks<br />
nice 2: 5 ticks<br />
nice 3: 5 ticks<br />
nice 4: 5 ticks<br />
nice 5: 4 ticks<br />
nice 6: 4 ticks<br />
nice 7: 4 ticks<br />
nice 8: 4 ticks<br />
nice 9: 3 ticks<br />
nice 10: 3 ticks<br />
nice 11: 3 ticks<br />
nice 12: 3 ticks<br />
nice 13: 2 ticks<br />
nice 14: 2 ticks<br />
nice 15: 2 ticks<br />
nice 16: 2 ticks<br />
nice 17: 1 ticks<br />
nice 18: 1 ticks<br />
nice 19: 1 ticks</p>

</quote>

<p>Linus also replied to Richard:</p>

<quote who="Linus Torvalds">

<p>Same number of ticks. The nice 10 one gets
scheduled more eagerly, though (ie the "nice" level does more than just
determine the number of ticks: it is also used to determine relative
priorities if two processes have the same number of ticks to run).</p>

<p>In 2.5.x we'll probably make the timer run at a higher rate, making this
issue go away, but for 2.4.x this was the expedient way to maintain UNIX
semantics and get good interactive behaviour.</p>

</quote>

</section>

<section
  title="Improving The Kernel Release Schedule"
  subject="[Announce] BKL shifting into drivers and filesystems - beware"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_02/msg00674.html"
  posts="82"
  startdate="13 Jul 2000 00:00:00 -0800"
  enddate="16 Jul 2000 00:00:00 -0800"
>
<topic>BSD</topic>
<topic>FS: ReiserFS</topic>
<topic>Microkernels</topic>
<topic>Virtual Memory</topic>

<mention>Andrea Arcangeli</mention>
<mention>Hans Reiser</mention>
<mention>Alexander Viro</mention>
<mention>Rik van Riel</mention>

<p>This one got started when Alexander Viro announced serious changes to the
Virtual Filesystem that would require code changes to third-party drivers.
There was a lot of resistance to this, and Alan Cox said, <quote who="Alan
Cox">This continual VFS redesign creep is going to far now. We'll never get
a 2.4 if we keep moving all the locking around.</quote> Elsewhere, he added:
<quote who="Alan Cox">This kind of lock shifting is a major upheaval. It
invalidates any device driver testing done in the past weeks when we have
been slowly moving towards more stability. Im just hoping Linus refuses the
changes</quote></p>

<p>Hans Reiser also pointed out that it was thanks to things like Alexander's
VFS redesign so late in the game, that made him wonder why ReiserFS would
have to wait until 2.5; Elsewhere, there was also some discussion of the
Virtual Memory situation, which Rik van Riel had still not stablized (Rik
and Andrea Arcangeli also had another small flame skirmish in their ongoing
war over classzone).</p>

<p>At one point Linus addressed the VFS changes, saying he was not totally
opposed to the redesign, but he wanted to avoid breaking third-party
drivers. He approved Alexander's patch, but Richard Gooch objected, <quote
who="Richard Gooch">But at some point you need to cut a new kernel version
and live with it,</quote> and added that the changes would <quote
who="Richard Gooch">cost us time and stability. Where do you draw the
line?</quote> Theodore Y. Ts'o replied:</p>

<quote who="Theodore Y. Ts'o">

<p>I have to agree with Richard here.  If we do
this, it'll set back 2.4 by at least month (and I may be conservative here).
There will *always* be more places where we can do more/better fine-grained
locking. Where indeed do we draw the line, and do we really want to be doing
this while we're at 2.4.0-test*?!?</p>

<p>If we were still accepting stuff like this, we shouldn't have moved the
verison number to 2.3.99 or 2.4.0testn.</p>

</quote>

<p>Linus explained that he didn't want to require driver writers to sprinkle
'#ifdef's in their code, testing for kernel versions. He explained:</p>

<quote who="Linus Torvalds">

<p>We'll end up living with 2.4.x for two years or
more, judging by past performance, and we'll have especially driver writers
that concentrate on the 2.4.x stuff for a long time.</p>

<p>Having driver interface inconsistencies like that is nasty, and the ones we
_know_ that we'll have should be minimized.</p>

<p>This is another reason why the open/read/write/close series is particularly
important to get done first: it's the stuff every driver tends to do. Things
like "fasync" is less critical because even if it is used a lot by drivers,
it tends to use the helper routines (so drivers often do not need to worry
over-much about locking).</p>

<p>This shoul dhave been the last locking issue, though. We scale too well for
words.</p>

</quote>

<p>Richard suggested shortening the development cycle to 6 or 9 months, and
Linus replied:</p>

<quote who="Linus Torvalds">

<p>I agree.</p>

<p>This was what I wanted for the 2.2 -&gt; 2.4 change too, and a much shorter
development cycle would be wonderful. It obviously was not to be: 2.4 is
already about 18 months out. We're not as bad as the 2.0 -&gt; 2.2 cycle
was, but it's painful.</p>

<p>It seems to be a lot harder than it should be to keep short development
releases. I certainly haven't found the magic combination yet. 2.4.x is
definitely all I hoped for (the big goal for me was to make sure that the
mindcraft-like web-performance scalability problems would be gone, and we
definitely fixed that), but it took much too long.</p>

<p>What would help would be more modular releases: smaller pieces of the kernel
getting released independently, allowing for smaller and shorter release
cycles. In Linux at least we don't have the "whole world" release issue that
most other OS people have (including the free ones: I think the BSD "world"
approach is horrible partly because of the release issues), but even just
the kernel is so big that it would be nice to be able to see it as multiple
independent projects.</p>

<p>At the same time it's obviously not true that there are independent
projects, and especially drivers (which _sound_ independent) are very likely
to be impacted quite a lot by infrastructure changes. There are no really
clear lines to split development up by, and the cures are worse than the
disease ("microkernels", I hear somebody shout. But that approach would just
make it impossible to do the kinds of improvements we _have_ done and
probably will continue to do).</p>

</quote>

<p>Later, he went on:</p>

<quote who="Linus Torvalds">

<p>a central kernel repository is so nice: most of
the time when something changes, we can fix everything in one go, and people
don't have to be all that aware of the changes. It's not always true: some
of the VFS changes (namely the page cache write-through etc) were _so_
intrusive that it was hard to make the fix-ups available, and as a result a
number of filesystems were left in a broken state.</p>

<p>And quite often the "grep for places to change" approach misses a few (this,
btw, is why I've grown to love the new syntax for structure initializers:
it's a h*ll of a lot easier to do a "grep 'release:' *.c" than it is to try
to figure out where the different "release" entries are initialized).</p>

<p>But the fact that we need a big kernel repository right now does not
necessarily mean that we'll need one forever. With good enough interfaces
that people can truly feel happy about, it would be possible to split stuff
up one day. That is, after all, how the system call interfaces work, and is
what allows us to split the kernel from everything else.</p>

<p>Of course, usually what is "good enough" one day ends up being "really bad"
the next when some clever bastard came up with the really good way of doing
something..</p>

</quote>

<p>Elsewhere, in the same vein he added:</p>

<quote who="Linus Torvalds">

<p>In another five or ten years, we may be at the
point where the fundamental interfaces _really_ don't change, and that we've
handled all the scalability issues and that we have no need to add new
interfaces. At THAT point we can just say "ok, drivers are truly
independent".</p>

<p>It's not true today.</p>

<p>Basically, the thing that allows 2.4.x to scale as well as it does (and it
does really well: look at the current SpecWeb99 world record numbers, and
compare it to the also-ran second place), is exactly because we had all the
source in one place, and we _could_ make fundamental changes. Claiming
anything else is silly - if we had broken-up device drivers, we'd have been
up shit creek without a paddle. End of story.</p>

<p>This is the thing that people don't understand. In theory it is wonderful to
have modularization. It's the best thing on earth. But if that
modularization means that you can't fix the module interfaces, then you're
going to remain broken for all time.</p>

<p>This is why I rather fix module interfaces early and often. Make sure that
we (a) have good interfaces that matches what the different parts of the
kernel want to have and (b) make people used to the fact that a driver or a
filesystem is not a static thing, and keep them aware of the fact that it
depends on the kernel underneath it.</p>

<p>We're certainly getting closer to a good interface in many areas. The
current VFS interfaces, for example, are pretty good - although many of the
less important ones still depend on the kernel lock etc. But we're _not_ at
the stage yet where we could just say "ok, a driver is a driver, and we
don't need to worry about it".</p>

</quote>

<p>Later, he added, <quote who="Linus Torvalds">Don't get me wrong. To some
degree I would _love_ to not have a large kernel archive. It's big, and it
makes releases harder. No question about that. But the monolithic approach
definitely has a lot of advantages.</quote></p>

</section>

<section
  title="One Way To Hunt For Bugs"
  subject="Result of compiling with `-W'"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_02/msg00744.html"
  posts="13"
  startdate="13 Jul 2000 00:00:00 -0800"
  enddate="14 Jul 2000 00:00:00 -0800"
>

<p>Andrew Morton posted a patch and reported, <quote who="Andrew
Morton">Building the kernel with `gcc -W' generates about nine megs of
warnings. It also catches a _lot_ of bugs, some quite serious. The attached
patch fixes about fifty of them. Ten or so others have been sent to
maintainers.</quote> Some folks criticized various aspects of the patch, and
Andrew posted a corrected one.</p>

</section>

<section
  title="'gcc-2.91.66' Recommended For Kernel Compilation"
  subject="gcc-2.7.2.3 warnings [PATCH]"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_02/msg01016.html"
  posts="8"
  startdate="14 Jul 2000 00:00:00 -0800"
  enddate="17 Jul 2000 00:00:00 -0800"
>

<mention>Randy Dunlap</mention>
<mention>Alan Cox</mention>
<mention>Linus Torvalds</mention>

<p>In the course of discussion, Linus Torvalds mentioned that he used
'gcc-2.91.66', and that 'gcc-2.7.2' was "compiler non-grata". Richard Gooch
replied, <quote who="Richard Gooch">Aha! Now I know what compiler you're
using. Is there general agreement in the cabal that gcc-2.91.66 is
Good[tm]?</quote> Alan Cox and Randy Dunlap confirmed this, and the thread
ended.</p>

</section>

<section
  title="Band-Aids On Virtual Memory While New Design Coalesces"
  subject="[patch] 2.4.0-test4 filemap.c"
  archive="http://mail.nl.linux.org/linux-mm/2000-07/msg00117.html"
  posts="2"
  startdate="15 Jul 2000 00:00:00 -0800"
  enddate="15 Jul 2000 00:00:00 -0800"
>
<topic>Virtual Memory</topic>

<p>In the 'linux-mm' mailing list, Rik van Riel posted a brief patch and summed
up his general attitude to the existing VM structure, saying, <quote
who="Rik van Riel">this stuff is untested and since I don't really care
about tweaks to the old VM you shouldn't bother me about it...</quote> Arjan
van de Ven reported good success with this and another patch, and remarked,
<quote who="Arjan van de Ven">I hope these patches make it into the kernel,
at least until the new VM is ready...</quote></p>

<p>Elsewhere under the Subject: <a
href="http://mail.nl.linux.org/linux-mm/2000-07/msg00119.html">[PATCH]
test5-1 vm fix</a>, in the course of discussion, Rik said, <quote who="Rik
van Riel">There's nothing wrong with the current VM that wasn't fixed in one
of my patches the last 8 weeks. (except for the fundamental design flaws,
which I will fix in the *next* N+1 weeks).</quote></p>

</section>

<section
  title="Joe Pranevich's Latest Summary Of Kernel Changes For 2.4"
  subject="Linux 2.4 Changes - Wonderful World of Linux 2.4 Final Draft"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_03/msg00127.html"
  posts="4"
  startdate="16 Jul 2000 00:00:00 -0800"
  enddate="17 Jul 2000 00:00:00 -0800"
>
<topic>Disks: SCSI</topic>
<topic>FS: devfs</topic>

<mention>Douglas Gilbert</mention>
<mention>Joe Pranevich</mention>

<p>Joe Pranevich posted the latest draft of <a
href="http://kernelnotes.org/lnxlists/linux-kernel/lk_0007_03/msg00127.html">The
Wonderful World Of Linux 2.4</a>, and asked for feedback. H. Peter Anvin
replied with a correction to Joe's comments about 'devfs'. In the document,
Joe had said that the traditional '/dev' naming scheme wouldn't work if one
had, say, more than 26 hard drives, because that would use up all the
letters of the alphabet for '/dev/hda' through '/dev/hdz'. H. Peter replied
that the 27th drive would simply be called '/dev/hdaa' in the traditional
naming scheme. He also remarked bitterly, <quote who="H. Peter Anvin">The
bottom line is that devfs takes things that belong in user space, forces
them into kernel space, and then expects user space to clean up the
resulting mess.</quote> Douglas Gilbert replied with a pointer to a doc on
<a href="http://www.torque.net/scsi/linux_scsi_24/">device naming in the
SCSI subsystem</a>.</p>

<p>Joe told me recently he's still looking for feedback (and he probably will
be for awhile). Check out his summary and contact him with your comments at
<a href="mailto:jpranevich@lycos.com">jpranevich@lycos.com</a>.</p>

</section>

</kc>

