A few suggestions for gaming mode, and Broadwell-E support.

Started by Mark D'Aria, September 27, 2016, 09:05:18 AM

Previous topic - Next topic

Mark D'Aria

A few things I'd love to see:

In case you're not familiar, the new Broadwell-E CPUs feature Turbo Boost 3.0, where a single core known to overclock well can have single threaded applications pinned to it and the frequency boosted much higher than the standard turbo frequency.

http://www.intel.com/content/www/us/en/architecture-and-technology/turbo-boost/turbo-boost-max-technology.html
http://www.anandtech.com/show/10337/the-intel-broadwell-e-review-core-i7-6950x-6900k-6850k-and-6800k-tested-up-to-10-cores/2

Intel requires an app to be downloaded to manage this, but it seems to me like process lasso could easily have this feature baked into it, but which much greater flexibility. I don't know if you can read the "favored core" straight from the BIOS, but worst case the user can select it. It may just be replicating the functionality of the existing software, but it is an unequivocal increase in speed, and for process lasso users it would be one less utility to install. Theoretically it could be useful even for non-Broadwell-E users, as pinning a single threaded app to a single core should increase cache locality.

As far as gaming mode goes:

The max frequency and disabled core parking of the bitsum highest profile help a lot, but it still doesn't completely eliminate stuttering, particularly when an intensive background process kicks in. I've found that pinning anything remotely capable of intensive background activity to a single "background" core eliminates a lot of these stutters. It certainly restrains the performance of those background processes, but they're rarely time sensitive. This eliminates most of the remaining stutters, but I find that pinning games to the other "non-background" core eliminates the rest. Many games remain CPU bound on a single thread, and I find that the thread bounces from core to core considerably less where there's less background activity forcing it to bump around. Theoretically it should lead to higher performance due to increased cache locality as well. It works well but I really only need this kind of extreme affinity control while gaming, but it's way too much work to constantly manage this. Theoretically I'd want literally everything but the game shoved onto a single core and out of the way of the game, but *only* when a game is running. Since process lasso already has the ability to detect the launch of a game, it should be able to trigger this on/off alongside game mode.

So my suggestion:

As part of game mode, allow users to set a single or set of "background cores", and when a game launch is detected, move everything that isn't that game onto those cores, background processes, browsers, etc. Also provide an option to move the game itself to the "non-background cores" - not a great idea on a dual or even a quad core because the loss of that core will hurt performance, but for those with 6-10 cores, they can spare one or two as very, very few games scale to that many cores. To my understanding this is how the consoles manage processes - the vast majority of the cores are dedicated solely to complete control of the game, and background processes are allowed to run only on a small subset of them, I believe only 2 of the 8 cores in the xbox one and PS4. Additionally, many games seem to perform slightly worse with hyperthreading enabled, so this feature could also be used to selectively disable hyperthreading when a game is launched. So for a 6-core haswell-E 5820K, a relatively popular high end processor for gamers, the game would be moved to threads 0,2,4,6,8 and background processes to 10/11.

edkiefer

Hi Thanks for suggestion.

Intel XTU OC utility also supports OC profiles linked to app, so it runs x profile when x application is running.
This and boost3 sounds good on paper but I fear is not so much in RL, if you set your OC properly with staggered cores.

Anyway, That would be a lot of work and pretty tough I think to support in PL, but your second suggestion of dynamic affinity per app(game), might be doable IMO.
Bitsum would have to chime in of course as this is just my opinion :)
Bitsum QA Engineer

Mark D'Aria

http://www.bit-tech.net/hardware/2016/05/31/intel-core-i7-6950x-broadwell-e-review/2

Whether or not it works shouldn't really be up for debate, its mostly a feature for people who don't manually overclock anyway. Triggering the affinity change should be hardly any different than the CPU usage monitor in probalance. Technically you all you would need is to add a "between X and X" CPU usage into process watchdog. Just divide by the number of threads in the system and if CPU usage is -/+ 5% of a single thread for a few seconds, then pin it to the magic core and the max turbo boost should kick in on its own. A CPU bound single threaded process on a 12 thread CPU should have sustained roughly 8.3% CPU usage. Anything under that and its not CPU bound, anything over that and its multithreaded enough that it shouldn't be pinned. Even outside of Broadwell-E and Turbo Boost it could be an useful feature just for the benefits of cache locality.

DeadHead

Some interesting ideas Mark D'Aria, would be interesting to hear Jeremys pov on this!
Windows 10 Pro 64 (swedish) || Xeon 5650 @ +4 GHz || 24 gig ram || R9280 Toxic

Jeremy Collake

Quote
Intel requires an app to be downloaded to manage this, but it seems to me like process lasso could easily have this feature baked into it, but which much greater flexibility.

This is an area of research, well, a tangent of some research. I have been hoping to display TurboBoost'd CPU frequencies, and perhaps even manage them, but it will almost certainly require a device driver and whether Intel has made their own driver's IRP interface public, I don't know. In other words, if it's documented, and doesn't add too much complexity, I will try. However, given all the other things I am engaged in, I'd say v9.2 at least before this one comes :o.

Quote
As part of game mode, allow users to set a single or set of "background cores", and when a game launch is detected, move everything that isn't that game onto those cores, background processes, browsers, etc.

I'm not sure I would recommend that approach, but do understand it. I am introducing 'profiles' soon that will maybe allow for this, if you want to do it. System processes should be left alone though, as tempting as it may be.
Software Engineer. Bitsum LLC.

kojirole

i think it 'll be nice if Processlasso Gaming Mode can do like Razer [some application] and other [some application] .When i open game,i automated  stop unused process and windows services to have better gaming experience. I think this feature will make  Process lasso gaming mode perfect and we dont need to install another [some application]

Jeremy Collake

Our Profile support in v9 will do exactly that ;). It is going final by the end of month.

Not ALL features may yet be there, but it will be a step that makes this possible in the following updates.
Software Engineer. Bitsum LLC.