What NFSv3 operations can be in the Linux nfsd reply cache
The Linux kernel NFS server (nfsd) provides a number of statisticsin /proc/net/rpc/nfsd , which are often then exposed by metricsagents such as the Prometheus host agent . One guide to of whatoverall information is in this rpc/nfsd file is SvennD's nfsdstats explained . Thefirst line is for the "reply cache", which caches replies to NFSrequests so they can be immediately sent back if a duplicate requestcomes in. The three numbers provided for the reply cache are
Why NFS servers generally have a 'reply cache'
In the beginning, NFS operated over UDP, with each NFS request andeach NFS reply in a separate UDP packet (possibly fragmented). UDPhas the charming property that it can randomly drop arbitrary packets(and also reorder them). If UDP drops a NFS client's request to theserver, the NFS client will resent resend it (a'retransmit' in the jargon of NFS). If UDP drops the server's replyto a client's request, the client will also resend the request
Rust's rustup tool is surprisingly nice and well behaved
I don't code in Rust ( it's not my thing ), but I doperiodically look into other people's Rust code, most recently Julia Evans ' dnspeep . When I had reason to poke intodnspeep, I decided it was time I got a LSP-enabled GNU Emacs Rustenvironment. Following Robert Krahn's guide , one partof this rust-analyzer ,which you can either download a binary of or build it yourself,which is the option I chose. On my Fedora 3
Modern Linux can require a link signal before it configures IP addresses
I recently had an interesting troubleshooting experience when anUbuntu 18.04 Dell server would boot but not talk to the network,or in fact even configure its IP address and other networking. Iwas putting it into production in place of a 16.04 server, whichmeant I had changed its netplan configurationand recabled it (to reuse the 16.04 server's network wire). I spentsome time examining the netplan configurationand trawling logs before I took a second look at
A stable Unix updating its version of Go isn't straightforward
Recently, I was implicitly grumpy at Ubuntu 18.04 LTS for notupdating its Go version from Go 1.10 . Thereason to want an update is straightforward; Go 1.10 doesn't supportmodules and you need module support . However,after thinking about it more I had the realization that a stableLinux or Unix distribution updating Go versions within a singlerelease isn't as straightforward as it looks. In fact, Go 1.10 isa particularly awkward version to
You need a version of Go with module support (ideally good support)
Linux distributions and other Unixes often package versions oflanguages for you. This has good bits, such as easy installationand someone else worrying about the packaging, and bad bits, suchas the versions potentially being out of date. For many languages(C being a great example), the exact version doesn't matter toomuch, and most any version installed by a Linux distribution willbe fine for most people. Unfortunately Go's current strongtransition to modules makes it not one ofthose languages; you now
Some uses for Prometheus's resets() function
One of the functions available in Prometheus's PromQL query language is resets() , which is described this way in thedocumentation :
For each input time series,
resets(v range-vector)returns thenumber of counter resets within the provided time range as an instantvector. Any decrease in the value between two consecutive samples isinterpreted as a counter reset.
resetsshould only be used with counters.
Up until recently I've ignored resets() because knowing when acounter had reset didn't seem
Programs that read IPMI sensors tell you subtly different things
In my first installment , I talkedabout how I had started out reading IPMI sensors using ipmitool ,or more specifically the command ' ipmitool sensor ', which tooktoo long on some of our machines. I then discovered that ipmi-sensors 'ran quite fast on all our machines and appeared to give us the sameinformation, so I was going to switch to it. Unfortunately it turnedout that ipmi-sensors doesn't give us all of the information thatipmitool does. Fortunately I was able to find an
ZFS on Linux is improving the handling of disk names on import
Back in 2017 I wrote up how ZFS on Linux names disks in ZFS pools . One of the important parts of this is that ZFS on Linux only stored a single namefor each disk (the full path to it), and if the path wasn't therewhen you tried to import the pool (including the import duringboot using a cachefile ), you had a problem. Thegood news is that ZFS on Linux (well, OpenZFS) has recently landeda change that significantly improves this
Systemd's NSS myhostname module surprised me recently
The other day I did a plain traceroute from my Fedora 33 officeworkstation (instead of my usual' traceroute -n ') and happened to notice that the first hop wasbeing reported as ' _gateway '. This is very much not the nameassociated with that IP address, so I was rather surprised andannoyed .Although I initially suspected systemd-resolved because of a Fedora 33 change to use it , theactual cause turned out to be the myhostname NSS module ,which was listed relatively early in