- cross-posted to:
- linux
- cross-posted to:
- linux
Huge speed-ups for the
will-it-scale tlb_flush2_threads
test - presumably not very representative!I wonder how much effect it has on real world workloads.
More surprising is that it’s taken ~4 years for these Linux kernel patches to materialize with Zen 3 having first debuted in late 2020.
Reminder: Linux kernel funding is 2% of the Linux foundation’s 200M$/year budget.
the Linux kernel hasn’t widely made use of INVLPGB… In part because Intel engineers typically carry out much of the new x86 instruction optimizations within the Linux kernel and Intel processors do not currently support INVLPGB.
Sounds like AMD needs to fund more kernel development.
whats the rest then?
$196,000,000
https://news.ycombinator.com/item?id=38797213
https://www.linuxfoundation.org/hubfs/Reports/2023_lf_annual_report_122123a.pdf?hsLang=en
- Cloud, Containers, & Virtualization 25%
- Networking & Edge 13%
- AI, ML, Data & Analytics 12%
- Web & Application Development 11%
- Cross-Technology 8%
- Privacy & Security 4%
- IoT & Embedded 4%
- Blockchain 4%
- DevOps, CI/CD, & Site Reliability 3%
- Open Source & Compliance Best Practices 3%
- System Administration 2%
- Linux Kernel 2%
- System Engineering 2%
- Storage 2%
- Open Hardware 1%
- Safety-Critical Systems 1%
- Visual Effects 1%
Without doing research, but the Linux Foundation is also the parent of the CNCF, the foundation that funds Kubernetes and many adjacent projects. I can imagine that they get a lot more money as there are probably more developers handling CNCF projects than the Linux Kernel.
I couldn’t find a hard answer to whether this supports EPYC only, or Ryzen too; so I put together this script to read the CPUID to detect for
INVLPGB
support according to the AMD64 Programmer’s Manual, and my 7800X3D does not supportINVLPGB
.(Let me know if I’ve made an error though!)
Code
#include <stdio.h> #include <stdint.h> int main() { uint32_t eax, ebx, ecx, edx; eax = 0x80000008; __asm__ __volatile__ ( "cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (eax) ); printf("EBX: 0x%x\n", ebx); if (ebx & (1 << 3)) { printf("CPU supports INVLPGB\n"); } else { printf("CPU does not support INVLPGB\n"); } return 0; }
I can’t keep up with the architecture family lines; is the Ryzen 7 5800 series on the Zen 3 line?
Assuming you’re talking about the 5800x, yes.
Sweet. They’re laptop CPUs, right? Last year, after more than a decade of owning only laptops, I bought two of those micro-PC boxes - mine were Trigkey, but I saw nearly identical ones under other brand names. 16 cores, expandable RAM and NVME… utterly blew my latest 2y/o laptop out of the water, especially after I put 64GB of RAM in one in an orgy of entering a new market of cheap components.
And now this. I’m loving it.
No, the 5800x and x3d are desktop CPUs.
😥
5800H
That’s
INVLPG
which has been there since the 486. The AMD64 Programmer’s Manual has some info on the differences betweenINVLPG
,INVLPGA
, andINVLPGB
though.