How I try out and test new versions of Grafana

For much of the time that we've been running our Prometheusand Grafana setup , upgradingour Grafana to keep up with the latest version has beenunexciting. Then Grafana embarked on a steady process ofdeprecating and eventually removing old panel types, replacingthem with new and only theoretically equivalent and fullyfunctional new implementations. I've generally not been a fan , even beforeGrafana 8.0 ( also ), andso this created a need to actually try out and test new versions ofGrafana so I would have


Go multi-module workspace mode, a forthcoming feature in Go 1.18

I watch commits to the Go development repository for various reasons, and some timesI see interesting changes fly by. One recent one was a merger ofa long-running branch called 'dev.cmdgo' ,which made me curious what this branch was for. It turns out it wasfor a new feature called multi-module workspaces, which has a proposal document and an open issue with discussions . Although nothing issure until Go 1.18 is released, it's very likely that this featurewill


Large Unix programs were historically not all that portable between Unixes

I recently read Ruben Schade's I’m not sure that UNIXwon ( via ) and had a numberof reactions to it. One of them is about the portability of programsamong Unixes, which is one of the issues that Schade sees as a problemtoday. Unfortunately, I have bad news for people who are yearning forthe (good) old days. The reality is that significant Unix programshave never been really portable between Unix variants, and if anythingtoday is at an all-time high for


Go doesn't have a stack the way that some other languages do

Go often looks like a relatively low level language, both throughits syntax similarity to C and because it has things like explicitpointers. However in some ways this appearance can be deceptive andintuitions from languages like C can be incorrect (although notusually dangerous). One of those intuitions is about the role ofthe stack. This is because Go (the language) doesn't really have astack (you can search the specification to see this; there's no mention of one). Go implementations will


How ZFS stores symbolic links on disk

After writing about ZFS's new 'draid' vdev topology ,I wound up curious about how ZFS actually stores the target ofsymbolic links on disk (which matters for draid, because draid hasa relatively large minimum block size). The answer turns out to tieback to another ZFS concept, System Attributes .As a quick summary, ZFS system attributes (SAs) are a way for ZFSto pack a more or less arbitrary collection of additional information,such as the parent directory of things , into ZFS dnodes


In Go, pointers (mostly) don't go with slices in practice

When I wrote about why it matters that map values are unaddressablein Go , there were a set of Twitter repliesfrom Sean Barrett :

Knowing none of the details & not being a go programmer, I wouldhave guessed that map values aren't addressable because they're in adynamically-sized hash table so they need to get relocated behind theuser's back; getting the address of a value slot would break that.

But I'd also have assumed Go has dynamically-extensible arrays, andthe


Some notes on OpenZFS's new 'draid' vdev redundancy type

One piece of recent ZFS news is that OpenZFS 2.1.0 contains a new type of vdev redundancy called 'dRAID', which isshort for 'distributed RAID'. OpenZFS has a dRAID HOWTO that starts with this summary:

dRAID is a variant of raidz that provides integrated distributed hot spareswhich allows for faster resilvering while retaining the benefits ofraidz. A dRAID vdev is constructed from multiple internal raidzgroups, each with D data devices and P parity devices. These groupsare distributed over all of the children


What my first Linux was, and its context

Over on Twitter, there was a meme going around about your firstLinux .As I sometimes do, I rose to the bait :

My first Linux was a version of Red Hat in 1999, as we refreshed someundergraduate labs from SGI Indys and X terminals to x86 machinesrunning Linux. Why Red Hat? It's what the university book store had instock.

We were moving from the SGI/X terminal setup to x86 Linux because in1999 no Unix


Using our metrics system when I test systems before deployment

Years ago I wrote that I should document my test plans for oursystems and their results , and I've somewhatmanaged to actually do that (and then the documentation's been usedlater, for example ). Recently itstruck me that our metrics system has a role to play in this.

To start with, if I add my test system to our metrics system ( evenwith a hack ), our system will faithfullycapture all sorts of performance information for it over the testperiod. This information isn


I'm turning off dnf-makecache on my Fedora machines

Back when I was in a situation where I wanted to use minimalbandwidth , one of the surprisebandwidth uses was from Fedora's dnf-makecache service and itsassociated systemd timer. This services runs ' dnf makecache--timer ', which will, to quote the manpage:

Downloads and caches metadata for enabled repositories. Tries to avoiddownloading whenever possible (e.g. when the local metadata datahasn't expired yet or when the metadata timestamp hasn't changed).

However, if a DNF