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 *time stats are the equivalent of the use stat, and the *lentime stats are the equivalent of the aveq field. Thereis no equivalent of the Linux ruse or wuse fields, 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 vector v ,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