Exploring sysctl’s secrets with a new version of Mints
Over the last week or so, I’ve been referring to a command tool that can reveal secrets about what your Mac’s processor can do, sysctl. As it’s not the easiest of tools to use, I thought it might be handier built into my free multifunction utility Mints.
To accommodate this, Mints now has yet another button, at the bottom left, that opens a new window where you can browse all the settings and other information from sysctl. Because Macs return more than a thousand entries, I have sorted these into their top-level categories, such as vm, covering virtual memory, and hw, the most interesting of all as it gives detailed information about the CPU cores inside your Mac, whether Intel or Apple silicon.
Look in the hw section on an M1 Mac, and you’ll see that hw.optional.arm.FEAT_BF16 isn’t supported, although it is on an M3 and, presumably, on an M2.
What’s more puzzling, though, are the differences between features available in virtual machines (VMs). I had expected a VM running on an M1 to have essentially the same features as the M1 itself. But run a VM on an M3 and you don’t get everything you might expect. There aren’t two core types for a VM, only one labelled as Standard. Two undocumented features that aren’t available on the M1 are there in a VM on an M3: hw.optional.arm.FEAT_PAuth2 and hw.optional.arm.FEAT_FPAC. I suspect the first is more security-related, but the latter looks as if it involves floating-point numbers.
Four features that are on the M3 aren’t available to its VMs, though. Two of those are security features, hw.optional.arm.FEAT_ECV and hw.optional.arm.FEAT_BTI, which are perhaps inevitable with virtualisation. But two are extensions to numeric instructions: hw.optional.arm.FEAT_BF16 for bfloat16 support, and hw.optional.arm.FEAT_I8MM for advanced SIMD Int8 matrix multiplication instructions. Given that virtualised code seems to have full access to the floating-point and NEON units in CPU cores, those are puzzling omissions. Could it be that they’re both implemented out-of-core?
Because the documentation for this new feature in Mints needs to be so extensive, rather than try incorporating it into its Help book, which has already reached 39 pages, I have added a new page to this blog documenting as many of the sysctl items as I can, and Mints now has a direct link to that page through a command in its Help menu.
Mints version 1.16 is now available from here: mints116
from Downloads and Freeware in the menus at the top of this page, from its Product Page, and via its auto-update mechanism.
I hope this new addition proves both fascinating and useful.