Does simultaneous multithreading still make sense?
codeblueprint.co.uk
codeblueprint.co.uk
For our application (heavily numeric, very well behaved cache access), turning on hyperthreading only increased real performance by about 10% (measured as work completed per unit of time). However, we settled on a metric where we defined CPU use to be load average divided by number of cores. Doubling the number of cores the system showed in top allowed us to meet the required margin.
So from a bureaucratic point of view, hyperthreading was a 100% improvement.
----
1: where "most" means "in the raw amount of hardware $$$ spent".
I'd argue most large compute by total $ is actually shared at the host level i.e. public/private cloud or user devices. Basically the only things that aren't are dedicated clusters for specific applications and a few hundred supercomputers while AWS alone has over 100x as many cores as the largest supercomputer.
Also I don't think there is a high horse to be on about an article not targeting the audience of the largest exacompute scale clusters, not everyone/everything at HN need be at the forefront of the field to avoid being flagged.
I.e. my claim was "There aren't really many 'performance critical' multithreaded environments in the world." not that there aren't any.
I mean, there's still a few hundred thousand people registered on DAW-related forums so certainly a fair bit more are using those. That is more than a dozen european countries. Sure, it's not angry birds but I do not think that it is relevant to cater to the lowest common denominator of software.
Additionally, as you've said, it's still uArch dependent. For example-- the Fallout vulnerability (one of the MDS attacks) only worked on Intel machines, but not AMD+ARM, most likely due to the differences in how the two designs handled store-to-load forwarding on the store queues/buffers.
The author seems to also value security over performance. I do as well. But the balance between performance and security is a fickle one, and I feel that "SMT is nonsensical" is a bit too much
Intel would love for everyone to disable SMT regardless of vendor. That would help them with relative performance.
And even if they do, it doesn't mean anyone will replace existing hardware already deployed into production.
People who already have Intel CPUs in production aren't just going to turn off hyper-threading, either, regardless of what we say about whether or not future products should support it.
"Amazon EC2 and RDS - count two vCPUs as equivalent to one Oracle Processor license"
https://www.oracle.com/assets/cloud-licensing-070579.pdf
Is there a vendor that does count a hyperthread as a core for software licensing?
> Amazon EC2 and RDS - count two vCPUs as equivalent to one Oracle Processor license if hyper-threading is enabled, and one vCPU as equivalent to one Oracle Processor license if hyper-threading is not enabled.
As you see, your own quote confirms that yes the rumors are true: Oracle does charge per CPU.
Is he still talking about SMT, or just poor security of Linux in general?
I'm wondering about this since "all those embedded devices out there" that I can think of are not running CPUs with SMT.
Embedded isn't just like, microcontrollers. Think about all the times you've seen a BSOD on a billboard.
I'm writing this as someone who's used Shuttle's fanless mini PCs (designed for PoS/kiosk use) as desktop & server hardware, all with proper updates. And I work for a company that does actual, custom embedded hardware. I've made a billboard too. None of the actual embedded hardware (almost exclusively ARM) I've used is SMT-capable. Even among off-the-shelf amd64 solutions, it's common for people to stretch the penny and buy a celeron/pentium without hyperthreading.
And, fwiw, I've never witnessed a BSOD on a billboard in person.
JTAG on the NUCs actually led to a CVE as well IIRC.
Much of that depends on how 'regular' the executions are. A highly optimized FFT or BLAS routine will benefit less than a sparse matrix computation, where part of the time is spent in indexing, rather than floating point operations.
https://www.techpowerup.com/review/amd-ryzen-9-3900x-smt-off...
I've got backend servers that routinely max out 32c/64t CPUs but push so little traffic that replacing the NIC with a cell phone modem would make no discernible difference. There are many types of server workloads where the NIC is not the bottleneck at all, so the parent's argument that low NIC queue counts make high CPU core counts useless is false.
You're debating an argument that was never made.
1- Rock and a hard place: How hard it is to be a CPU idle-time governor https://lwn.net/Articles/793372/
2- Many uses for Core scheduling https://lwn.net/Articles/799454/
CMT vs SMT (very simplified view): https://i.imgur.com/AcZnipK.png
As you can see, with CMT, you have the same amount of ALUs than with SMT but a single thread can only use its dedicated ALU leaving the other one useless meanwhile SMT allows a single thread to use all ALUs.
How do you know that's the reason?
If SMT dies off, it would be a pretty big margin hit for them.
Hardware folks can safely move on.
At first glance, I genuinely thought this was going to be a pitch for yet another fragile additive manufacturing toy with narrow usecase, or a new process that enables IPC-7092 designs on the cheap.
> Whatever machine you’re reading this on, it’s highly likely that not all of the CPUs shown by the OS are actually physical processors. That’s because most modern processors use simultaneous multithreading (SMT) to improve performance by executing tasks in parallel.
If you have to do so, your security is already compromised. Shared hosting, virtualisation, and etc are all insecure by definition.
That's mostly true, though there have been a few desktop i5 processors with hyperthreads.
Like: https://ark.intel.com/content/www/us/en/ark/products/43546/i...
That is even worse in mobile chips. All people call Intel cores to be oversized, but they need to look at up to date die shots. All cores combined can be less than a half of the die area.