CERN moves thousands of accelerator control computers to Debian

Sure, but the next sentence narrows the description :wink:
Still not sure if it’s true…

A little more complicated than that- Base packages run at v1 but a lot of the software that actually matters for speed — video players, codecs, browsers doing video decode, image/audio libraries, some math and AI libraries etc… — checks your CPU when it starts up and switches to faster instructions if they’re available. So for example ffmpeg is using v3.

I dont understand how it can do that. … do they compile 3 binaries ( v1,v2,v3) then merge the binaries somehow? … or maybe run a wrapper script that selects which binary to execute?

With pointers to functions.

Thanks. I wonder if I could do that in R. R is not compiled, but it uses C and Fortran functions with various levels of optimisation.

Without knowing any details: Yes, with dynamic linking. The app loads the suitable .so (.dll in win-speech) at runtime. So one app and three .so libraries.

I found this on the web. Seems CERN servers are controlled by a system called Ironic.
I did not read the whole paper but it might be interesting to a few people.

From the article.
“This article will walk you through the server’s life in the
CERN data center, and explain how this enables us to handle a fleet of almost
10,000 nodes in an automated and efficient way and to prepare for the new data
center which is currently being built …”

Thanks. I did not know that. So even tho the baseline in Mint is v1, some software will detect what the CPU is capable of and load the better performing software of v2 or v3.
That is a neat feature of the software.

It’s really quite simple. No need for 60 libraries for all the functions, you just point function pointers to the most optimal function. No need to have a million different libraries installed.

That being said, you could, of course, put functions designed with specific intrinsics (for example SSE, MMX, or AVX) in mind in specific libraries. This would allow the program to load only the relevant functions.

I wonder though, I have an amd64 and when I check my cpuinfo it has loads of flags set for all the instructions it supports.

pu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush
mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc
rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf
rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes
xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a
misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb
bpext perfctr_llc mwaitx cpuid_fault cpb cat_l3 cdp_l3 hw_pstate ssbd mba
perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase tsc_adjust bmi1 avx2
smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq adx smap avx512ifma
clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1
xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk
avx_vnni avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter
pfthreshold avic v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip
pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg
avx512_vpopcntdq rdpid bus_lock_detect movdiri movdir64b overflow_recov
succor smca fsrm avx512_vp2intersect flush_l1d amd_lbr_pmc_freeze

Are all of these actually instructions and/or instruction sets? Or are there also libraries mixed in?

Can you show

cat /proc/cpuinfo

And compare the output of the list you provided. Or did you just do the cat and got that?

Yes, they would not have to load 3 versions of a function.

They seem to be all instruction sets.
These CISC CPU’s are bloated
I dont know how anyone could write assembler for such a thing. … maybe noone writes assembler today? It may be beyond human capability?

They sure are!

Here’s output from aarch64 (Pi4) running Trixie (features = flags) this is RISC not CISC :
Features : fp asimd evtstrm crc32 cpuid
- vs -
CISC (10th gen i5 running Trixie) :

flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d arch_capabilitie

and AMD Ryzen 7 3700x (Zen2) running Ubuntu 24.04 :

flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip rdpid overflow_recov succor smca sev sev_es

I haven’t been able to find a way to get the equivalent of /proc/cpuinfo from MacOS (same on FreeBSD / TrueNAS)… Actually - I think this might be it - Apple’s aarch64 (M1 "Apple Silicon) looks as bloated as x86_64 :

methone:~ root# sysctl hw.optional | tr '\n' ' '
hw.optional.arm.FEAT_CRC32: 1 hw.optional.arm.FEAT_FlagM: 1 hw.optional.arm.FEAT_FlagM2: 1 hw.optional.arm.FEAT_FHM: 1 hw.optional.arm.FEAT_DotProd: 1 hw.optional.arm.FEAT_SHA3: 1 hw.optional.arm.FEAT_RDM: 1 hw.optional.arm.FEAT_LSE: 1 hw.optional.arm.FEAT_SHA256: 1 hw.optional.arm.FEAT_SHA512: 1 hw.optional.arm.FEAT_SHA1: 1 hw.optional.arm.FEAT_AES: 1 hw.optional.arm.FEAT_PMULL: 1 hw.optional.arm.FEAT_SPECRES: 0 hw.optional.arm.FEAT_SPECRES2: 0 hw.optional.arm.FEAT_SB: 1 hw.optional.arm.FEAT_FRINTTS: 1 hw.optional.arm.FEAT_PACIMP: 1 hw.optional.arm.FEAT_LRCPC: 1 hw.optional.arm.FEAT_LRCPC2: 1 hw.optional.arm.FEAT_FCMA: 1 hw.optional.arm.FEAT_JSCVT: 1 hw.optional.arm.FEAT_PAuth: 1 hw.optional.arm.FEAT_PAuth2: 0 hw.optional.arm.FEAT_FPAC: 0 hw.optional.arm.FEAT_FPACCOMBINE: 0 hw.optional.arm.FEAT_DPB: 1 hw.optional.arm.FEAT_DPB2: 1 hw.optional.arm.FEAT_BF16: 0 hw.optional.arm.FEAT_EBF16: 0 hw.optional.arm.FEAT_I8MM: 0 hw.optional.arm.FEAT_WFxT: 0 hw.optional.arm.FEAT_RPRES: 0 hw.optional.arm.FEAT_CSSC: 0 hw.optional.arm.FEAT_HBC: 0 hw.optional.arm.FEAT_ECV: 0 hw.optional.arm.FEAT_AFP: 0 hw.optional.arm.FEAT_LSE2: 1 hw.optional.arm.FEAT_CSV2: 1 hw.optional.arm.FEAT_CSV3: 1 hw.optional.arm.FEAT_DIT: 1 hw.optional.arm.AdvSIMD: 1 hw.optional.arm.AdvSIMD_HPFPCvt: 1 hw.optional.arm.FEAT_FP16: 1 hw.optional.arm.FEAT_SSBS: 1 hw.optional.arm.FEAT_BTI: 0 hw.optional.arm.FEAT_SME: 0 hw.optional.arm.FEAT_SME2: 0 hw.optional.arm.SME_F32F32: 0 hw.optional.arm.SME_BI32I32: 0 hw.optional.arm.SME_B16F32: 0 hw.optional.arm.SME_F16F32: 0 hw.optional.arm.SME_I8I32: 0 hw.optional.arm.SME_I16I32: 0 hw.optional.arm.FEAT_SME_F64F64: 0 hw.optional.arm.FEAT_SME_I16I64: 0 hw.optional.arm.FP_SyncExceptions: 1 hw.optional.arm.caps: 868632120666353663 hw.optional.arm.sme_max_svl_b: 0 hw.optional.floatingpoint: 1 hw.optional.neon: 1 hw.optional.neon_hpfp: 1 hw.optional.neon_fp16: 1 hw.optional.armv8_crc32: 1 hw.optional.armv8_gpi: 1 hw.optional.armv8_1_atomics: 1 hw.optional.armv8_2_fhm: 1 hw.optional.armv8_2_sha512: 1 hw.optional.armv8_2_sha3: 1 hw.optional.armv8_3_compnum: 1 hw.optional.watchpoint: 4 hw.optional.breakpoint: 6 hw.optional.ucnormal_mem: 1 hw.optional.arm64: 1

I did a wordcount / line count - sysctl hw.optional outputs 74 lines.

I’m going to install a QEMU VM in UTM with Debian 12 (aarch64) and see what it reports… Stay tuned…

The compilers/linkers etc would need to be written with some assembler to generate the binaries, the compilers (i.e. “C” and maybe rust?) would have to have been built with some assembler… and if they used blobs/libraries, someone wrote those blobs in assembler…


update : spice-agent on my Bookworm aarch64 VM not sharing clipboard with host O/S (MacOS) and virtual NIC not on my LAN (can’t ssh to it from the host) so have to type this out manually :

grep Features /proc/cpuinfo |uniq 
Features : fp asimd evstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm

I suspect those “Features” are being quasi-emulated via qemu - I thought the UTM store would do native arm/aarch64 for Linux - but it looks like it’s not native - it’s emulated - why emulate aarch64 on aarch64?

I’m going to install Debian Trixie aarch64 from ISO in UTM and take a look…

STAY TUNED


That didn’t go well… elementary, debian 13, Ubuntu 26.04 for arm64 - all hang when I try to use Apple virtualization…

I’m updating UTM to see if that fixes anyway… (so far so good - restarted MacOs and updated UTM - Ubuntu Server arm64 installer didn’t hang like it did before, or on Debian or elementary).

In the meantime - here’s another RISC arm7 (32 bit) - it’s a C.H.I.P. running Debian 8 :

[~]$ grep Features /proc/cpuinfo
Features	: half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32

Seems to have more “Features” than the Pi4!

Stay tuned - I want to see what “near native” Linux on Apple Silicon reports…


OK - Ubuntu 26.04 VM on MacOS UTM using Apple Virtualization :

╭─x@titanii /mnt/BARGEARSE/MPZ  
╰─➤  ssh 10.0.0.111
Welcome to Ubuntu 26.04.1 LTS (GNU/Linux 7.0.0-31-generic aarch64)

 * Documentation:  https://docs.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
Last login: Thu Sep 10 03:53:57 2026 from 10.1.1.162
x@ubu26:~$ fastfetch
                             ....              x@ubu26
              .',:clooo:  .:looooo:.           -------
           .;looooooooc  .oooooooooo'          OS: Ubuntu 26.04.1 LTS (Resolute Raccoon) aarch64
        .;looooool:,''.  :ooooooooooc          Host: Apple Virtualization Generic Platform (1)
       ;looool;.         'oooooooooo,          Kernel: Linux 7.0.0-31-generic
      ;clool'             .cooooooc.  ,,       Uptime: 6 mins
         ...                ......  .:oo,      Packages: 520 (dpkg)
  .;clol:,.                        .loooo'     Shell: bash 5.3.9
 :ooooooooo,                        'ooool     Display (Virtual-1): 1920x1200
'ooooooooooo.                        loooo.    Terminal: /dev/pts/0
'ooooooooool                         coooo.    CPU: Virtualized Apple Silicon (2)
 ,loooooooc.                        .loooo.    GPU: RedHat Virtio 1.0 GPU
   .,;;;'.                          ;ooooc     Memory: 403.32 MiB / 3.30 GiB (12%)
       ...                         ,ooool.     Swap: 0 B / 3.80 GiB (0%)
    .cooooc.              ..',,'.  .cooo.      Disk (/): 7.11 GiB / 29.82 GiB (24%) - ext4
      ;ooooo:.           ;oooooooc.  :l.       Local IP (enp0s1): 10.0.0.111/14
       .coooooc,..      coooooooooo.           Locale: C.UTF-8
         .:ooooooolc:. .ooooooooooo'
           .':loooooo;  ,oooooooooc                                    
               ..';::c'  .;loooo:'                                     
x@ubu26:~$ sudo grep Feature /proc/cpuinfo|uniq
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint

So - if I was to run e.g. Asahi on bare metal Apple Silicon - I would get a not dissimilar result… Considerably more Features/Flags than on a Pi4… I guess I should boot up my Pi5 and see what that says (it’s got Ubuntu 26.04 arm64 desktop installed).

One INCREDIBLY annoying thing about Ubuntu 26.04 server? THEY DO NOT INSTALL vi/vim - really WTF? I logged with my user account - then
sudo -i
then
export EDITOR=vi
then
visudo
only to be told “no editor installed” (didn’t try nano - I f–king hate it!). Lucky it was online - was able to install vim and visudo worked with “EDITOR=vi” - but what a pezzo-di-merda! No vi/vim by default? I really REALLY f–king hate how they’re constantly trying to dumb-down stuff for the lowest common denominator… How much space does vim take up anyway? What did they save by omitting it? Another thing they’ve “locked down” - in vim - if you’re editing you can’t paste (e.g. running vim in a terminal window - you can’t “shift+ctrl+c” or “middle-button-paste”…

With VM’s I like to have this added to /etc/issue :

IPV4 \4{$NIC}

e.g. on this Ubuntu 26.04 arm64 server install :

root@ubu26:~# cat /etc/issue
Ubuntu 26.04.1 LTS \n \l

IPV4: \4{enp0s1}

What it looks like in the VM console (UTM on Mac) :

But I had to update /root/.vimrc and /home/x/.vimrc to allow me to paste into the vim session in terminal :

root@ubu26:~# cat .vimrc
syntax on
set mouse-=a
set ttymouse=

It really does start to feel like these big “vendors” want to remove any UNIX philosophy from mainstream distros! All the alarming stuff the Gnome Foundation have done (slow double click to rename a file in Nautilus - i.e. default behaviour you get in Windows [since Win95] or MacOS [since at least System7]) or are doing (removing Middle-Button-Paste in Gnome - apparently will still be an option to turn on in Gnome Tweaks - but - how long till they remove it for good?).

Is that the name Apple uses for its VM?.. Universal Turing Machine?

Your bloat lists say it all.

No UTM is a third party VM manager (a bit like virt-manager)… i.e. a front end for the native Apple Silicon hypervisor and QEMU (note the native HyperVisor on Apple Silicon is NOT “kvm” seems like a really boring name for Apple too : “virtualization.framework” - how dull!).

I do believe there is a native port of virt-manager for MacOS… I haven’t tried it… I suspect its more for pointing at a remote KVM “server” running multiple VMs (like VMware vSphere or vCenter) - the first time I saw KVM infrastructure - we had a Windows version of “virt-manager” from Red Hat to manage VM instances…

And - guess what? I’ve been using UTM on and off on my M1 MBP for 5+ years now - and never stopped to think or ask what the acronym stood for :smiley:

The developer is Turing Software LLC - so - yeah - Universal Turing Machine!

When VirtualBox didn’t work when I first got my M1 MBP - I hunted around for alternatives - and UTM seemed so good, and fairly cheap on the App Store - I bought it…
There’s also a version for Apple mobile devices - but Apple hamstrung it in the App Store because it was doing JiT stuff… So the only UTM version that works on iPhone / iPad is UTM SE (Slow Edition).

Yeah - the list is quite extensive on Ubuntu 26.04 arm64 - with Apple Silicon virtualization - but - probably still only a quarter as long as the string on my Ryzen 7 3700x (Zen2)…

I should do a wordcount :

Ubuntu 24.04 : Ryzen 7 3700x (Zen2) :

╭─x@titanii ~  
╰─➤  cat /proc/cpuinfo |grep flags|uniq                           
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip rdpid overflow_recov succor smca sev sev_es
╭─x@titanii ~  
╰─➤  cat /proc/cpuinfo |grep flags|uniq|awk -F \: '{print $2}'|wc -w
131

Ubuntu 26.04 : Apple M1

root@ubu26:~# cat /proc/cpuinfo |grep Features|uniq|awk -F \: '{print $2}'
 fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint
root@ubu26:~# cat /proc/cpuinfo |grep Features|uniq|awk -F \: '{print $2}'|wc -w
31

So - RISC arm64 has about 25% of flags/features as x86_64… Would probably be even more so on Zen3 or Zen4… Zen2 is the latest x86_64 I have access to…

I remember when Intel were trying to push their IA64 architecture - but the industry was unwilling… I was a complete rewrite with no legacy x86 stuff - and they incorporated some stuff that HP had in their PA-RISC architecture (which also used stuff that HP got from when they bought Compaq/DEC and the Alpha64 RISC).

Hardly any big vendors did IA64 - when AMD created amd64 with x86 stuff for legacy shit - the industry moved that way - and Intel had to play catchup with AMD. There was a Windows Server build for IA64 - but it got no traction…

Compare to Gen10 i5 (has less “flags” than Zen2) :

╭─x@mimas ~  
╰─➤  cat /proc/cpuinfo |grep flags|grep -v "vmx flags" |uniq                                                                                                                                                                 130 ↵
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d arch_capabilities
╭─x@mimas ~  
╰─➤  cat /proc/cpuinfo |grep flags|grep -v "vmx flags" |uniq |wc -w
119

@xahodo 's list seems to have even more “words” : I count 165…

What AMD arch is that - I assume Zen3 or Zen4 ???

I just checked my Pi5 running Ubuntu 24.04 arm64 it shows it has 16 “Features” (vs only 5 on my Pi4 running Trixie arm64). This stuff is endlessly fascinating to me - I’m “nerding out on it” :smiley: - but I’m tending to suspect “cpuinfo” output might have false flags and not be 100% reliable to guess all the CPU arch extensions that have been implemented on the CPU die… I can’t imagine the Pi Foundation could have found 11 more flags to add between Pi4 and Pi5…

Interesting and interestinger - the plot thickens : the CPU in the Pi Zero 2 came out after the Pi4 but before the Pi5 - and implemented aarch64 (and multi-core)… My Pi Zero 2W is running 32 bit Raspbian (it could run 64 bit - but I choose not to) :

x@eggther:~                                                                                                                                                                                                                       
▶ cat /proc/cpuinfo |grep Features|uniq                             
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
x@eggther:~                                                                                                                                                                                                                       
▶ cat /proc/cpuinfo |grep Features|uniq|awk -F \: '{print $2}'|wc -w
15

So - the Pi5 gained one more flag/feature after the Pi Zero 2


OK - just booted a Ubuntu 26.04 server VM in KVM via virt-manager - it doesn’t inherit all the flags that the Hypervisor Host has access to :

x@boobserver2604:~$ cat /proc/cpuinfo |grep flags|uniq
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl xtopology cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core ssbd ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr wbnoinvd arat npt lbrv nrip_save tsc_scale vmcb_clean flushbyasid pausefilter pfthreshold v_vmsave_vmload vgif umip rdpid arch_capabilities
x@boobserver2604:~$ cat /proc/cpuinfo |grep flags|uniq|awk -F \: '{print $2}'|wc -w
98

This kinda makes sense I suppose - KVM doesn’t need all those - and probably a good security measure to not allow the HyperVisor full access to ALL of the flags/features/extensions - I’m pretty sure VMware ESX does similar…

My ThinkPad (E495 - Ryzen5 3500u) running Ubuntu 24.04 only has 111 flags reporting in /proc/cpuinfo…

So KVM omits some features of the host CPU … it is not an exact emulation, for whatever reason … maybe security as you say… maybe some instructions dont make sense in a VM. A user would probably never notice the difference.

I could do this all day :smiley:

Just checked - some “flags” that the O/S can report are O/S dependant (or distro / kernel dependant) - as VMs in KVM (x86_64)…

Both Ubuntu 26.04 (kernel 7) server and Debian Trixie 13 (kernel 6.12) report 98 “flags”, but RHEL 10 only 97 (kernel 6.12)…

My old tablet with Termux

~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 0 (v7l)
BogoMIPS        : 38.40
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm
CPU implementer : 0x41
CPU architecture: 7

It formats it… is it JSON?

Surprised “cat /proc/cpuinfo” works on tmux - here’s mine (shows 8 processors - which would be correct for a Galaxy S23 Ultra) :

Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint i8mm bf16 bti

╭─x@KimIlDungII ~  
╰─➤  cat /proc/cpuinfo |grep Features|uniq|awk -F \: '{print $2}'|wc -w
36

It’s obviously abstracted - but - still almost tiny compared to something in the x86_64 world…

What’s needed is a bold adventure into unknown “waters” like IA64… But less driven by corporate interests, and more driven by scientific/engineering interests - and : OPEN SOURCE…

RiscV looks interesting… mature enough to have 64 bit RISC V stuff in the kernel…

Amazing to think - in 20 something years Linus Torvalds may not be around (touch wood he is - I probably won’t be - the men in “my line” drop off the perch around 65) - but his kernel could be “eternal” because it’s owned by humanity… even in “quantum computing”… The kernel is part of ALL the top 500 supercomputers…

When I was studying the engineering part of computer science - nobody mentioned “the Turing machine” (it was all the Von Neumann machine) - but let’s hope in 500 years there are “saints” like Linus Torvalds and Alan Turing in the pantheon… and let’s sincerely hope that arse-hats like Musk are long forgotten… pumping $$$ into tech doesn’t make you smart…

Imagine a system qualifier : “does this system fit the turing/torvalds” test?