Link: What has your microcode done for you lately?
What has your microcode done for you lately? ( via )starts out being about the low-level performance of scattered writeson x86 machines but develops into a story where, well, I'll justquote from the summary:
Where the microcode comes in, and what might make this moreinteresting than usual, is that performance on a purely CPU-boundbenchmark can vary dramatically depending on microcode version . Inparticular, we will show that the most recent Intel microcode versioncan significantly slow down a store
A bit more on ZFS's per-pool performance statistics
In my entry on ZFS's per-pool stats , I said:
In terms of Linux disk IO stats , the
*timestats are the equivalent of theusestat, and the*lentimestats are the equivalent of theaveqfield. Thereis no equivalent of the Linuxruseorwusefields, ie nofield that gives you the total time taken by all completed 'wait' or'run' IO. I think that there's ways to calculate much of the sameinformation you can get for
Prometheus's delta() function can be inferior to subtraction with offset
The PromQL delta() function is used on gauges to, well, let's quota its help text:
delta(v range-vector)calculates the difference between the firstand last value of each time series element in a range vectorv,returning an instant vector with the given deltas and equivalentlabels. The delta is extrapolated to cover the full time range asspecified in the range vector selector, so that it is possible to geta non-integer result even if the sample values are all integers.
Sometimes the simplest version of a graph is a text table
In the past, I've written about learning that sometimes the bestway to show information is in a simple graph ,for example a basic bar graph of total change instead of a linegraph over time. As a co-worker gently encouraged me recently, wecan take this further; sometimes the simplest and most accessibleform of information is in the form of a plain table of text orsometime similar to it (eg, as a list).
(The specific situation that prompted this was wanting a simple
What sorts of good email attachments our users get (March 2019 edition)
Yesterday I looked at the types of attachments we see in malwareemail . Of course if we're consideringblocking some of them, it's not enough to consider just what typeswe see in malware; we also care about what types we see in legitimateemail (or at least in email that is as close to legitimate as wecan manage). I did some stats for this a year ago, in the April2018 edition , but this time aroundI'm going to be doing
The types of attachments we see in malware email (March 2019 edition)
Back in mid 2017 I wrote about the types of attachments we sawthen in malware-laden email . Today, forreasons beyond the scope of this entry, I feel like looking at ourcurrent numbers on this, based on the previous ten weeks of activity.This does not include the slowly but steadily growing collectionof attachment types we reject immediately ,but it does include 'malware' that is a phish spam in an actualattachment, because that's what our commercial anti-spam systemdoes
ZFS Encryption is still under development (as of March 2019)
One of the big upcoming features that a bunch of people are lookingforward to in ZFS is natively encrypted filesystems. This is alreadyin the main development tree of ZFS On Linux ,will likely propagate to FreeBSD ( since FreeBSD ZFS will be basedon ZoL ), and will make it toIllumos if the Illumos people want to pull it in. People are lookingforward to native encryption so much, in fact, that some of themhave started using it in ZFS On Linux already, using either thedevelopment tip or
Prometheus subqueries pick time points in a surprising way
Up until today, I would have confidently told you that I understoodhow Prometheus subqueries pickedthe time points that they evaluated your expression at; it was theobvious combination of a range vector with a query step . Given a subquery rangesuch as ' [5h:1m] ' and assuming an instant query evaluated at'now', Prometheus would first go back exactly five hours in seconds,as it would for a range vector of ' [5h] ', and then step forwardfrom that starting
Going from a bound instance method to its class instance in Python
In response to yesterday's entry on how I feel callable classesare better than closures , a commentatorsuggested:
If you need something callable, why not use a bound method? They havea reference to the parent too.
This raises a question: how easy and reliable is it to go from a boundmethod on an instance to the instance itself?
In both Python 2 and Python 3, a bound method is an instance of aspecial type (how this happens is described in my entry on howfunctions become
Callable class instances versus closures in Python
Recently I read Don't Make It Callable ( via ), which advocatesavoiding having your class instances be callable (by __call__ on your classes). Let me quote its fundamental thesis on using __call__ :
At first, like every operator overload, this seems like a niftyidea. And then, like most operator overload cases, we need to ask:why? Why is this better than a named method?
I wholeheartedly agree with this, and in the beginning I agreed