Quotes of the week
Posted Jan 8, 2015 19:16 UTC (Thu)
by dlang (guest, #313)
[Link] (12 responses)
https://lkml.org/lkml/2015/1/7/807
On Wed, Jan 7, 2015 at 2:14 PM, Catalin Marinas <catalin.marinas@arm.com> wrote:
Things change. The only thing that is considered "user breakage" is
That has always been the rule. It's not that the kernel ABI (with all
But if it turns out that applications (or hardware) that people use
And the important part there are those weasel-words: "that people use"
For example, a test-suite giving a different result is *not* a
But if that same test-suite result is then used in a production
Similarly, theoretical arguments of "so-and-so wouldn't work after
For an extreme example of this: we can remove support for whole
In this case, pretty much all of /proc/cpuinfo is mainly
cat /proc/cpuinfo
to see what kind of system they are running on. That's the main point
Now *main* point doesn't necessarily mean "only point". There clearly
And quite frankly, I personally think that any program that parses
But the rule for "regression" has never been about sanity, or about
So the kernel regression rules are very strict in that it's the
Changing the bogomips value - even radically - or removing it entirely
And in this case, I do suspect that the *actual* value really almost
The other "good news" in this area is that I suspect that the random
Linus
Posted Jan 9, 2015 1:51 UTC (Fri)
by jschrod (subscriber, #1646)
[Link] (4 responses)
Linus' harsh reactions to Nicolas Pitre's sensible comments (no factual answers from Linus on the named issues that I could detect in this thread) are »interesting«. Is Nicolas Pitre a known trouble-maker? Or is it more the kind of manager reaction »I don't want to hear about that bogomips topic any more«?
Posted Jan 9, 2015 3:20 UTC (Fri)
by dlang (guest, #313)
[Link] (3 responses)
We've had cases where newer, faster hardware reports lower bogomips values than older, slower hardware since about the time the first new hardware was released after bogomips was invented, so complaints that it's not what users expect on their new hardware should be answered with "it's BOGOmips, don't take the value seriously"
And similarly, if anyone actually tries to scale something based on what this value is, the answer needs to be the same (it's known that this value can fluctuate wildly on a given piece of hardware, depending on cpu freq, cache contention, phases of the moon, and various other variables)
So we know software works if it's nonsense, but the fact that software broke when it was removed is justification enough to put it back, as per the long post about "no regressions" above
having bogomips report bogus values may cause people to complain, but it's not a regression.
Posted Jan 9, 2015 13:20 UTC (Fri)
by ayeomans (guest, #1848)
[Link] (1 responses)
Posted Jan 9, 2015 18:33 UTC (Fri)
by vonbrand (subscriber, #4458)
[Link]
Sure enough. Change the people until they complain again. ;-)
Posted Jan 9, 2015 19:45 UTC (Fri)
by rodgerd (guest, #58896)
[Link]
Posted Jan 10, 2015 17:46 UTC (Sat)
by nix (subscriber, #2304)
[Link] (2 responses)
- Looking up the system time for ioperm() support on Alpha and ARM
None of these are exactly crucial (though the last is fairly important) -- but if *glibc* is using these things, they clearly cannot change without great consideration. glibc has fallbacks in all these cases, but often of the variety 'oops, tell the caller that the clock frequency cannot be determined'.
Posted Jan 11, 2015 17:40 UTC (Sun)
by pr1268 (guest, #24648)
[Link] (1 responses)
Is the information glibc needs from those files part of the debate from the QOTW? I don't mean to argue, but it seems that /proc/cpuinfo is a (decently) legitimate source of finding the number of processors, as is /proc/meminfo for querying the amount of memory on a running system. Again, I'm sincerely curious; not trying to stir up a storm... I'll make a general comment about glibc: If they're using /proc/cpuinfo (or similar files) then, if something broke due to kernel ABI changes, someone would complain loudly. I can only imagine (hope) any changes in this area would be well-communicated with glibc prior to implementation.
Posted Jan 11, 2015 23:47 UTC (Sun)
by nix (subscriber, #2304)
[Link]
Posted Jan 20, 2015 3:32 UTC (Tue)
by Baylink (guest, #755)
[Link] (3 responses)
This won't be the first time Linus has been wrong, or that I've said so.
Regression, by its definition, means "*In a version transition of any kind, something which used to work as defined no longer does*".
It *means* that such users as he alludes to cannot upgrade safely anymore without the risk of something breaking.
The *job* of a release manager is to be able to make intelligent judgements about the relative risks of and labor to fix regressions between releases.
Test suites are *designed* to spot your regressions; that's actually why they exist.
Posted Jan 20, 2015 9:16 UTC (Tue)
by dgm (subscriber, #49227)
[Link]
I think this is what Linus is arguing, at least.
Posted Jan 22, 2015 12:32 UTC (Thu)
by FrozenGeek (guest, #96688)
[Link]
Posted Jan 24, 2015 2:03 UTC (Sat)
by mathstuf (subscriber, #69389)
[Link]
Quotes of the week
>
> We need to look back at the point we added timer-based delay about 2.5
> years ago. Prior to commit d0a533b18235d362, platform A reported
> bogomips 300. After that commit, the *same* platform A (not B),
> started reported 6.
>
> Is the above considered user breakage?
when something actually doesn't work any more.
the system calls, all the /proc files, all the ioctl's, etc) is set in
stone and "sacred". Absolutely anything can be changed, wildly.
end up breaking noticeably, then *that* is a regression.
and "noticeably".
regression, although it should obviously be considered a big red flag.
So if somebody tells you that some test-suite shows that some ABI
changed, at the very least you should be very nervous about things.
environment as part of some actual user flow, and it breaks that user
model, then it suddenly becomes a regression. So the very definition
of "regression" is not really about the API changing, but about
breaking peoples existing setups. Of course, if you never change any
API that is visible to user space, you can never create that kind of
regression, so they are _related_, but some people confuse the two.
They are still very different.
this change" are just that - theoretical arguments. It's something to
worry about, but it's not an actual *regression* until it causes
problems.
platforms and architectures, and sometimes we do. It clearly
completely breaks support for the hardware in question - but it only
counts as a regression if anybody notices and cares. There may still
be active users of that platform that provably cannot possibly work at
all any more, but if they never upgrade the kernel, then it's still
not a regression.
"informational". Maybe there are applications that show it, but more
likely you have people who ssh in and just do
of much of /proc, and things like /proc/cpuinfo in particular.
are binaries parsing it. Some do it to figure out how many CPU's the
system has, often simply because using /proc is simple from various
scripting environments, for example. So while most of /proc/cpuinfo is
clearly for human consumption, it's also understandable that some
parts of it might matter for people.
/proc/cpuinfo in order to find the bogomips value and use it for
anything is just clearly insane. Why would you ever do that? It makes
no sense. It's crazy. Apparently the crazy audio library didn't even
do it in a meaningful way, and the use of that value seems to be
pretty much random, and the actual value likely doesn't really even
*matter*.
whether the ABI changes. There are tons of horribly insane user
programs. Parsing /proc to find bogomips may be insane and odd, but
it's certainly not the worst kind of diseased code I've ever heard
about. We have had major programs that literally depended on totally
insane small details that were never intentional, and just happened to
have some particular implementation detail. And then the
implementation changed, and the interface ostensibly did exactly the
same thing, but because it did it with some meaningless difference
that couldn't *possibly* matter in any sane situation, it caused a
regression.
absolute #1 rule in kernel development, but at the same time, they are
about as lax as they can possibly be: an interface change is only a
regression if somebody notices.
isn't a regression in itself.
doesn't matter. It looks more like some internal badly done hint for
some buffer size or other. It is possible that wild fluctuations could
be noticeable, but it's fairly unlikely.
ARM platforms that actually changed 2.5 years ago are not very widely
used any more. So not only does the actual real value probably not
matter much to begin with, but the platforms where it really changed
are probably not a major issue.
Quotes of the week
Quotes of the week
Quotes of the week
Quotes of the week
Quotes of the week
Quotes of the week
- Looking up the number of processors in sysconf() and getconf(1), on *many* platforms (looking up the amount of available memory parses /proc/meminfo)
- Looking up the clock frequency for clock_getres(), clock_gettime() et al, on PowerPC, SPARC64, i386, and IA64
Quotes of the week
Quotes of the week
Quotes of the week
> There may still be active users of that platform that provably cannot possibly work at all any more, but if they never upgrade the kernel, then it's still not a regression.
Quotes of the week
Quotes of the week
Quotes of the week