• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Hyperthreading question for CPU intensive tasks

hoorah

Senior member
So we run software at work thats on the expensive side, as in really expensive. We have a pool of licenses we're allowed to use, and thats shared with the entire company. Typically they're all in use, and we sometimes have to wait for a license.

With each license, we're allowed two processors. If we enable in the software additional CPUs, it takes up additional licenses. This can be an issue if I want to run, say on a dual core machine with hyperthreading. To use 100% of the CPU capability, I have to specify 4 processors in the software.

If I only have a license for 2 CPUs at a certain time, would I have a performance benefit from disabling hyperthreading? If so, would I get the same or a similar benefit by somehow setting the CPU affinity to only use the two real cores vs the hyperthreading cores?
 
Disabling Hyperthreading on the i3s will not make the two real cores run any faster than they will with HT enabled.

However, if you have i7s, disabling Hyperthreading and setting the software to utilize 2 instead of 4 cores will make the CPU turbo boost to higher clocks. And if they're K-series i7s, disabling HT will probably help you overclock better (if OC'ing is an option).
 
2 physical cores will be faster than 1 physical core + hyperthreading. You should be able to accomplish the same thing or similar by setting CPU affinity.

Licensing based on core count is total BS though, there are situations where power consumption & performance are better with a lot of lower clocked cores vs few very highly clocked cores, so they might as well license based on clock speed. Except that makes no sense either, because IPC is different between platforms. A per socket requirement for licensing makes much more sense than licensing based on core count.
 
Disabling Hyperthreading on the i3s will not make the two real cores run any faster than they will with HT enabled.

However, if you have i7s, disabling Hyperthreading and setting the software to utilize 2 instead of 4 cores will make the CPU turbo boost to higher clocks. And if they're K-series i7s, disabling HT will probably help you overclock better (if OC'ing is an option).

Thanks. Couldn't tell you what kind of CPUs are in there as we really do have a mix of workstations to choose from. The I3 in my sig though is not a work machine. We generally use I7s and Xeons in workstation class equipment from HP.


Overclocking is not an option.
 
Hyperthreading basically just allows a second thread to use portions of the CPU that aren't being used by the first thread. So if you disabled hyperthreading you would probably gain some minor performance improvement on this one specific program at the expense of everything else. I don't think the CPU affinity would work very well, because the process scheduler would still try and schedule processes on the virtual core. Plus, in my experience anyway, Windows seems to treat CPU affinity as more of a suggestion than a rule.
 
without testing your software to see if it works better with hyperthreading, then putting a policy in place that people can not set the program to use more licences than physical cores might help availability of licences.

We have a similar issue with floating licences, but it is system based, and the stupid system stuffs up and can give the same pc multiple licences or not release them properly. A major pain when people claim one and do not use it (ie: start the program and walk away for a meeting).

Best advice, ask IT for access to see who has the licences currently and check everyone is only setup to use just the licences they can actually use.
 
use CPU-afinity to restrict to separate cores if, when you watch in task manager, the 1st two threads get maxed and not the second two. Same effect or better than disabling hyperthreading. Windows should handle this for you, however you could perform some tests rendering the same thing multiple times each way and time it to see.
 
Per instance seems a lot more reasonable

To who? The licensee or the licensor?

And why would "per instance" be more reasonable than "per core"?

Licensing is supposed to be about ROI, for both parties involved.

If the licensing model fails to generate enough revenue for the licensor, then they may as well have invested their capital into their competitor's stock on wallstreet instead of investing in the creation of the licensable IP.

Likewise if the product being licensed fails to generate enough revenue for the licensee by way of productivity enhancement then the licensee is better off investing their capital into their competitor's stock on wallstreet instead of investing in the licensing of the software.

In the end it is all about ROI, for both parties, and the licensing model ought to capture this in some form if the licensing model is going to deliver sustainable ROI for both parties.
 
To who? The licensee or the licensor?

And why would "per instance" be more reasonable than "per core"?

Licensing is supposed to be about ROI, for both parties involved.

If the licensing model fails to generate enough revenue for the licensor, then they may as well have invested their capital into their competitor's stock on wallstreet instead of investing in the creation of the licensable IP.

Likewise if the product being licensed fails to generate enough revenue for the licensee by way of productivity enhancement then the licensee is better off investing their capital into their competitor's stock on wallstreet instead of investing in the licensing of the software.

In the end it is all about ROI, for both parties, and the licensing model ought to capture this in some form if the licensing model is going to deliver sustainable ROI for both parties.

I'm not saying that they should charge any more/less for the product, I'm saying that the license structure would make more sense per instance. If company X knows their current average user is running X number of cores per instance, why not just multiply their per core price by X? It just seems like this would lead to a lot less headaches like the OP is describing and perhaps his employer would have purchased a sufficient number of licenses this way. I know it's easy to just blame their IT department, but a lot of times these guys are in WAAAAAAAAY over their heads. Now my experience is completely in academia, so I might just be tainted a bit there, but I'm just saying it seems more logical to me to go per instance.
 
without testing your software to see if it works better with hyperthreading, then putting a policy in place that people can not set the program to use more licences than physical cores might help availability of licences.

We have a similar issue with floating licences, but it is system based, and the stupid system stuffs up and can give the same pc multiple licences or not release them properly. A major pain when people claim one and do not use it (ie: start the program and walk away for a meeting).

Best advice, ask IT for access to see who has the licences currently and check everyone is only setup to use just the licences they can actually use.

I've dealt withnthis problem too. The amount of time and money wasted chasing down these types of issues far exceeds the cost savings of using a license server. And if your network goes down for some reason? Haha forget about it... It is so stupid...
 
without testing your software to see if it works better with hyperthreading, then putting a policy in place that people can not set the program to use more licences than physical cores might help availability of licences.

We have a similar issue with floating licences, but it is system based, and the stupid system stuffs up and can give the same pc multiple licences or not release them properly. A major pain when people claim one and do not use it (ie: start the program and walk away for a meeting).

Best advice, ask IT for access to see who has the licences currently and check everyone is only setup to use just the licences they can actually use.


We do have a license server pool (sorry if I misworded my original post that made it unclear). We can also view the license server to see who is using the licenses and how many.

Its not a question of misusing licenses, usually. MOST people aren't greedy and don't take up all the multicore (3+ cores) licenses and stick to the standard ones.

My concern was that if all of the 3+ core licenses were used up and I only had 2, if it were more efficient to send the threads to the real cores instead of the virtual ones. It sounds like it is, but not really worth it as I would have to tinker around in the BIOS.

I don't want to make BIOS level changes, as sometimes in the evenings after people have left I can use up more licenses and solve my big computations faster using all the cores, physical and virtual.
 
I've dealt withnthis problem too. The amount of time and money wasted chasing down these types of issues far exceeds the cost savings of using a license server. And if your network goes down for some reason? Haha forget about it... It is so stupid...

Yes, we do have a license server. Its been pretty reliable, but I know what you mean - it goes down, we ALL go down.

Fortunately, this software, if its already running, will give you an hour to work if it loses the license server, and will try to reconnect automatically.

Its funny how people act like "Always on" DRM is some new invention from UBISOFT. We've been dealing with this for years.

To be fair though, certain areas of this industry would pirate this software in a heartbeat if they could.
 
I'm not saying that they should charge any more/less for the product, I'm saying that the license structure would make more sense per instance. If company X knows their current average user is running X number of cores per instance, why not just multiply their per core price by X? It just seems like this would lead to a lot less headaches like the OP is describing and perhaps his employer would have purchased a sufficient number of licenses this way. I know it's easy to just blame their IT department, but a lot of times these guys are in WAAAAAAAAY over their heads. Now my experience is completely in academia, so I might just be tainted a bit there, but I'm just saying it seems more logical to me to go per instance.

Its not our IT department, its the licensing rules of the software company that makes the stuff. I just wish they would differentiate between real cores and virtual cores when considering the multi-core licenses, thats all.

The reason its not done on a per-instance basis is that this software scales to some ridiculous levels depending on the job, as in 64 CPU clusters with a TB of ram that could do the solutions for an entire company.
 
Back
Top