On Thu, Oct 25, 2018 at 8:44 PM diego righi <[email protected]> wrote:

> So why openbsd 6.4 i386 and amd64 bootloaders (not biosboot, boot!)
> express different behavior? Wasn't openbsd about correctness? :/
>
If I'm wrong and it is documented that I can't do this fine, but so also
> i386 should not work, this behavior is just strange for me, that's it.
>

This is something that most people, perhaps even most software developers,
are not strongly aware of: that resource requirements are often both
fine-grained and sharp-edged.  That is: the exact requirements can vary in
many fine-steps between systems, but there can be a sharp edge at which
performance plummets badly or the system totally fails.  This is true of
*many* systems (including lots of cloud services) which work just fine
until they *suddenly* fail, because the memory straw broke the available
RAM camel's back, or the micro-service is now taking just _longer_ to
service one request than the inter-request arrival interval so the queue so
the queue grows in latency past the user/system tolerance.

Case in point: the memory resources required by the biosboot code depend
many factors including:
* the size of the root partition
* the block size of the root partition (which is affected by the size)
* the inode number of the kernel being booted
* the exact disk block numbers which the booted kernel was put in

We all, the developers and the community of user who actively test -current
kernel (THANK YOU!) exercise various combinations of those, the *vast*
majority of which use the recommended system layout.  That recommend layout
doesn't push the first two of those items at all, and keeps the third and
fourth in sane ranges.

Meanwhile, those using monster root partitions have unknowingly been
pushing the memory usage by biosboot, but below its limits.

So, some change was made during the 6.3->6.4 dev cycle which requires
_slightly_ more memory in biosboot.  Maybe it was something about the
compiler upgrades, or the maybe it was the SoftRaid crypto passphrase-retry
change.  Or maybe it was the tiny tweak of making biosboot default the
console to com0 @ 115200 on VMs.    Something made biosboot take more
memory...and now those systems with monster root partitions were pushed
over the edge of how much memory biosboot has available.

Rule of thumb: the costs must be worth the gain.
So:
 * enhancements and fixes break systems that don't get actively tested
 * we are are not going to block enhancements/fixes because of that
 * we test what we recommend, on many systems
 * if a change breaks the recommended config, then it'll get reverted/fixed
 * ...this is more likely the more quickly the problem is reported
 * ...and even then the recommendation for the future might change
 * we also test some systems that go beyond those recommendations...
 * ...but not all
 * if a system that doesn't follow the recommendations breaks as the result
of a change, the developers will make a judgement about whether the gain of
the change is worth the costs.  We don't like breaking any config, even
unusual ones, but if we think the setup is inadvisable, we'll say so and
move on.

In this particular case:
 * the changes to biosboot where in snapshots for MONTHS, but no one
reported problems
 * if you aren't following recommendations, and aren't testing snapshots,
then you should be 100% willing to change your configuration on upgrade,
'cause you ain't giving the feedback necessary to keep your unusual config
alive
 * SINGLE PARTITION CONFIGS ARE DUMB, DON'T DO THAT; DON'T BOTHER
COMPLAINING, JUST FIX THEM.


Philip Guenther

Reply via email to