PDA

View Full Version : Why does the multicore support doesn't really work?


killerra
07-09-2010, 05:33 AM
Hey,
The newly implemented multicore support doesn't really work.
No matter if I use a special multicore config like this:

mat_queue_mode "2"
cl_threaded_bone_setup "0"
cl_interp_threadmodeticks "0"
cl_threaded_client_leaf_system "0"
r_threaded_client_shadow_manager "1"
r_threaded_particles "1"
r_threaded_renderables "1"
r_queued_decals "0"
r_queued_post_processing "1"
r_queued_ropes "1"
mp_usehwmmodels "-1"
mp_usehwmvcds "-1"

or default settings, the first Core stays at 100% and the other cores are hardly used. Without multicore config 0-5% with 5-10%
This is also one of the reasons for laggy gameplay. Also -threads 4-8 only help a bit.

It seems like People with dualcores or i7 doesn't have this problem. But the game should smoothly run with multicore support with ALL CPUs.

A statement from the developers would be really great.

CptDobey
07-09-2010, 05:55 AM
On my i7 mobile (i7 720QM) the game does run fine BUT it runs better with multicore disabled (VST from 240 fps down to 138). Multicore rendering has some severe issues (or it is the Video Stress Test which is buggy...)

killerra
07-09-2010, 06:00 AM
The cpu load for the first core stays at 100% no matter if I disable or enable multicore rendering in the options.

hisham.albeik
07-09-2010, 06:04 AM
Multi-core rendering is known to be buggy and a work-in-progress. Even in a perfect world, multi-core rendering wouldn't always give you more FPS, it'll give you the same FPS, or a bit lower FPS but much more stable, and doesn't get affected very much when high intensity action is going around, with multiple people, smokes and shooting and nades exploding.

However in the real world, there will be some issues, for example not all CPUs work very well with multi-core rendering (actually it's the other way round) and it will not always be, since new CPUs a designed and built every now and then. And then you have the hundreds, or thousands different combination of CPU, Motherboard, OS, Bios, and RAM, which you need to account for.

Maybe if you set multi-core rendering on, then lower video settings a tad bit, like lower the AA and Filtering, maybe shaders, or water reflection.

tnk343
07-09-2010, 06:08 AM
What is the purpose of MCR if it does nothing good at all?
Maybe they should remove this feature 'till they figure out how to use it for good?
Now it just confuses users.

jljr222
07-09-2010, 06:16 AM
Odd, I get better FPS with it enabled and seems pretty smooth for me. Although I have not checked my computers performance, but I will :).

tnk343
07-09-2010, 06:26 AM
Odd, I get better FPS with it enabled and seems pretty smooth for me. Although I have not checked my computers performance, but I will :).

You have i7 or quad or dual CPU?

CptDobey
07-09-2010, 06:34 AM
However in the real world, there will be some issues, for example not all CPUs work very well with multi-core rendering (actually it's the other way round) and it will not always be, since new CPUs a designed and built every now and then. And then you have the hundreds, or thousands different combination of CPU, Motherboard, OS, Bios, and RAM, which you need to account for.


If the multicore rendering is well implemented, it won't matter what your hardware is but the CPU.

Instead of running one thread, you run multiple thread and that's it. The difficult part is to synchronize the various thread, distribute it correctly on the various cores. This is a software related stories, not a hardware one.

Video rendering software usually take advantage of all your core efficiently. Valve's hammer does also very well. These programs are probably easier to program to take advantage of more than one core, but clearly, this is not hardware related.

jljr222
07-09-2010, 06:36 AM
You have i7 or quad or dual CPU?

Q9550

CptDobey
07-09-2010, 06:39 AM
That CPU generation has all their cores running at same speed (2.8 GHz).

I7 cores work another way.

My I7 720 QM is 1.6GHz, but if only one core is used it will run at 2.8Ghz. If two core are used, they will be at 2.4 Ghz.
This is maybe a source of various response to the effect of multicore rendering.

hisham.albeik
07-09-2010, 06:45 AM
If the multicore rendering is well implemented, it won't matter what your hardware is but the CPU.

Instead of running one thread, you run multiple thread and that's it. The difficult part is to synchronize the various thread, distribute it correctly on the various cores. This is a software related stories, not a hardware one.

Video rendering software usually take advantage of all your core efficiently. Valve's hammer does also very well. These programs are probably easier to program to take advantage of more than one core, but clearly, this is not hardware related.

True, I was a little bit overzealous with my response, however i've seen cases where people needed a bios update so that Windows can properly handle multi-threading on multiple cores.

But you are right, it all comes down to the CPU.

AnAkIn
07-09-2010, 06:52 AM
Multicore rendering work fine for some CPU but not on others.

For example, it gives less FPS on Core i5 and Core i7.

On my computer, with a Core 2 Duo E6600, I get a FPS boost.

tnk343
07-09-2010, 07:11 AM
Multicore rendering work fine for some CPU but not on others.

For example, it gives less FPS on Core i5 and Core i7.

On my computer, with a Core 2 Duo E6600, I get a FPS boost.


You check FPS values via in-game video stress test?

NotSoCoolJ
07-09-2010, 07:17 AM
With an i5 750@3.6GHz, I get about 30% faster frames with it on. I just turned it on in the game menu.

You guys are failing to understand how this implementation works. The game is not going to split it's load perfectly between two or more processes. The multicore support was added later to help with some of the increasing CPU load this game had already.

Primarily, It's still a single threaded app that offloads some of it's work if you tell it. I would say that 90% of the work is still going to be done on Core 0.

OC your CPU. This game likes raw CPU speed like no other.

A P4 is not going to cut it. Any CPU based on netburst tech is going to really get trucked by this game. Perspective.
A P4 2.8GHz is slower than a t-bird 1.8GHz.

This game doesn't really need multicore processors. A fast single core would cut it. Any contemporary Intel or AMD processor around 3GHz+ should have no problems with this game anyway. Multicore rendering or not.

My last box with an Opteron 165@2.6GHz was struggling to keep up with this game even when multicore was turned on.

If some of you are afraid to Over clock, it is understandable. Just remember that it is hard to do any physical damage If you don't change the stock voltage. Many of today's processors will OC quite a bit without any special voltage changes. That's a good thing because it tends to add very little heat.

Stability testing is a must. Just playing TF2 is not a stability test. Prime95 is OK at stability testing, but the best program to check with is LinX. It's a linpack throughput test that will really test your CPU and memory to the fullest extent.
http://www.xtremesystems.org/forums/showthread.php?t=201670

***WARNING***
I take no responsibility for your hardware. You must ensure that you have adequate cooling. No, an Intel stock cooler is not adequate.
LinX will heat up your CPU faster than any other program available for stability testing. Make sure your cooling is adequate and that you keep an eye on your temps while it's running.

To use LinX, you should start out with only three runs using ALL memory.(click the all tab) If everything passes and your temps are stable, then you can move on to the next clock speed you wish to test. Once you have decided that you are at the clock you wish to use long term, run the test twenty times for ultimate stability.

You check FPS values via in-game video stress test?
You can't use the in-game stress test for FPS testing. The only way to test is to log into an actual game on your favorite server and note the FPS. The stress test is meaningless. It's not even close to the load that this game actually uses.

tnk343
07-09-2010, 07:28 AM
2NotSoCoolJ
Thanks for clarification and have +rep for your valuable post.

Qu@dr0
07-09-2010, 07:30 AM
I confirm that there is almost no benefit from the use of multi-core rendering. Especially after the updates from the 7th of July. At occurrence in a visibility range more than 3 moving and shooting players the quantity of FPS is rapidly reduced to 40. Changing of graphics settings does not help. This problem occurs on servers which has more than 16 players.

skoops
07-09-2010, 07:34 AM
Multi core rendering also lowers my FPS.

On 110-180 FPS
OFF 180-300 FPS

I5 750 @3.5GHz

Raid-XT
07-09-2010, 09:51 AM
try

mat_queue_mode "-1"
and enable it in the graphics options menu thats what it is for.

i got atleast a 30fps boost and much more stable framerate.

C2D E6420 @ 3.2ghz

laazrockit
07-09-2010, 09:53 AM
Its because multicore support in the OB engine isn't complete. It's very good in the l4d/l4d2 engine, but the OB engine has very incomplete multicore support.

My phenom II quad gets an alright boost (20 fps) from it though using mat_queue_mode "2" and -threads 4. My fps is also more stable. Pre update I would drop to 80 fps during action in afull server, now it NEVER drops below 100.

NotSoCoolJ
07-09-2010, 09:58 AM
Its because multicore support in the OB engine isn't complete. It's very good in the l4d/l4d2 engine, but the OB engine has very incomplete multicore support.

My phenom II quad gets an alright boost (20 fps) from it though using mat_queue_mode "2" and -threads 4. My fps is also more stable. Pre update I would drop to 80 fps during action ina full server, now it NEVER drops below 100.

lol 20fps is a lot more than "alright". Honestly, you couldn't expect much more out of a native multithreaded app. Much less, one where the support was added after the fact.

CptDobey
07-09-2010, 10:43 AM
Playing with mat_queue_mode is useless.
It is set to "-1" (auto) when you activate multicore rendering.
"2" is to force mutlticore rendering (same as -1)
"1" is for single thread. Useless on multicore.
"0" is also single core, the default value when MR is disabled.

killerra
07-09-2010, 10:55 AM
FPS ain't my problem. I don't really care about that. The real unbalanced workload is the problem and comparing "the FPS boost" of different cpu's.
It seems like with dualcore(AMD and Intel) cpu's and Intel cpu's the workload is balanced.


Also @NotSoCoolJ before the update workload was perfectly balanced. Core0 workload didn't stay at 100% all the time.
I'm not quiet sure right now which source engine version l4d is, but I believe it also has multicore support and in L4D cpu workload is also balanced. Overlocking won't solve this problem nether do I need so super overlocked benchmark cpu @5GHZ I think 3,2/3,8GHZ should be enough to play CSS..

NotSoCoolJ
07-09-2010, 11:01 AM
That's because the game was running on a different engine all together before the update. Source2009 is a CPU hog. It's just loading that one core more than the old engine did because it's actually working the CPU harder.

This is the same engine as TF2. THE SAME!!! Mind looking at the TF2 forums and seeing hundreds of people saying exactly what you are talking about. That's the way it works now. If your FPS is fine, why are we even having this conversation?

michael89
07-09-2010, 11:03 AM
Remember boys and girls, that Source didnt originally have Multicore Mode.
It was added later on

+ what i've heard, C++ (which source is written with), doesnt support Multiple cores that well, even if the support has been added ages ago to the language.

Google's Go! - language is the first programming language, that has pure multicore support.

killerra
07-09-2010, 11:17 AM
Because just using Core0 causes lags. Lots of other application are just using core0 and and this end up in one application doesn't get "the power it needs". If this is just related to the supdup multicore support, why is it the same with disabled multicore support? Just using one core is silly and you can't speak of "multicore" then.
In videostress test ♥♥♥♥ I get around 600fps. Local server 500-600. But one REAL online Servers it drops from 250(had 300fps constant before the update)to 50 or less in some situations and that doesn't feel right. Also with the lowest gfx settings with fps tweaks and no anti aliasing. Other games with multicore support do not have this problem. It's just really bad developed multicore-support nothing else.

NotSoCoolJ
07-09-2010, 11:17 AM
Remember boys and girls, that Source didnt originally have Multicore Mode.
It was added later on

+ what i've heard, C++ (which source is written with), doesnt support Multiple cores that well, even if the support has been added ages ago to the language.

Google's Go! - language is the first programming language, that has pure multicore support.

That's not really true. It might be harder to implement parallelism in C but it is just as effective as any other language. The problems come from the types of calculations made. If you have several out of order processes, multicore implementation is going buy you very little in terms of speed no matter what language it was written in. It has a lot to do with the type of task the CPU is asked to preform. Just so happens that these games (source2009) have a lot of processing that can't be paralleled but instead, must be executed serially. This is because when the engine was made, single core CPUs where the norm. Now there are techniques that weren't explored or even known then.

This is one of the best game engines available today. Just because CS:S doesn't take full advantage of it's realm of possibility doesn't mean it's not superior to most others. Havok physics being one thing that this game is not really using to it's full extent.

shazzz
07-09-2010, 11:47 AM
Playing with mat_queue_mode is useless.
It is set to "-1" (auto) when you activate multicore rendering.
"2" is to force mutlticore rendering (same as -1)
"1" is for single thread. Useless on multicore.
"0" is also single core, the default value when MR is disabled.

I have a Phenom II x3 720 @ 3.4ghz and I tested with all the values:

-2 = 347 fps
-1 = 277 fps
0 = 343 fps
1 = 359 fps
2 = 282 fps

It gives more fps with 1 than -1.

killerra
07-09-2010, 11:51 AM
That's because the game was running on a different engine all together before the update. Source2009 is a CPU hog. It's just loading that one core more than the old engine did because it's actually working the CPU harder.

This is the same engine as TF2. THE SAME!!! Mind looking at the TF2 forums and seeing hundreds of people saying exactly what you are talking about. That's the way it works now. If your FPS is fine, why are we even having this conversation?


If we say everything is correct what you say. Engine is crap therefore multicore support can only be done this way. Then why is there a difference between AMD and Intel Quadcore CPUs? Why is the workload with most intel CPUs still balanced but not with AMD CPUs?

CptDobey
07-09-2010, 12:20 PM
-2 = 347 fps
-1 = 277 fps
0 = 343 fps
1 = 359 fps
2 = 282 fps

It gives more fps with 1 than -1.

-2 is not a valid value. Just check your console. So it is probably handled as the defaut value which is 0.

I also have less fps with -1. The fact is this variable is set when you activate / deactivate "multi core rendering" advanced graphical options. It is useless to force it "by hand".

geniusreddy
07-09-2010, 12:21 PM
I actually get a boost in-game when I turn on multi-core...it's like a 100 fps boost and my fps doesn't drop as much in firefights...weird thing is that the stress test says I get about the same fps...I think the stress test only indicates how good your graphics card is.

shazzz
07-09-2010, 12:31 PM
-2 is not a valid value. Just check your console. So it is probably handled as the defaut value which is 0.

I also have less fps with -1. The fact is this variable is set when you activate / deactivate "multi core rendering" advanced graphical options. It is useless to force it "by hand".

] mat_queue_mode
"mat_queue_mode" = "-2"
archive
- The queue/thread mode the material system should use: -2=legacy default, -1=default, 0=synchronous single thread, 1=queued single thread, 2=queued multithreaded

I think it's a valid value. Anyway, I use the value 1 in my config, and the game doesn't change it. With the values -2 and 0, in the options it will say it's Disabled, and with -1, 1, or 2 it says Enabled.

laazrockit
07-09-2010, 12:32 PM
The stress test in CSS should just be removed, its totally useless.

shazzz
07-09-2010, 12:35 PM
The stress test in CSS should just be removed, its totally useless.

Why do you say that?

NotSoCoolJ
07-09-2010, 12:43 PM
If we say everything is correct what you say. Engine is crap therefore multicore support can only be done this way. Then why is there a difference between AMD and Intel Quadcore CPUs? Why is the workload with most intel CPUs still balanced but not with AMD CPUs?

The engine isn't crap. It just scales in a manor that isn't exactly conductive to contemporary processor tech. Lets get one thing straight. This game still consumes far less resources than tons of games and the reason there are so many problems is because source engine games run on more computers than any other engine in the world! It's this fact that allows people to even play these games without the serious hardware it takes to play most others.

And that's a good question. The answer is quite simple. The core architecture isn't the same between the different types. They all execute information in a slightly different way. That's like asking why Nvidia cards are faster in certain games and AMD in others. It's because they are not the same hardware and at a basic level they behave differently and process information differently. Certain instructions may be faster on Intel hardware than AMD and the other way around.

There are a lot of variables that are involved in this. Like bus speed, cache size, cache latency, instruction order, native or non-native memory controllers etc.

I wouldn't expect a pentuim D to see any boost from multicore rendering, Even though they may be dual core, they are not native dual core and also have an external memory controller. The core2 series of chips are slightly better in the fact that they are native dual core. They still have an external memory controller so I would expect those to show less improvement than say a Core i7 chip and an AMD chip. AMD being most notable because they have always been native dual core and on die memory control was implemented a long time ago.(Socket 754)

enoch420
07-09-2010, 12:43 PM
For a phenom II x3 710 should I use -threads 3 in launch options?Is it a valid option?

NotSoCoolJ
07-09-2010, 12:47 PM
When Mrs. Czernicki asks her black teenaged neighbor, Johnquell,.......
Reported.
GTFO!

Reanimation
07-09-2010, 01:00 PM
Don't forget, those people using Intel Core i5 / i7 CPU's that when a process is only running on a single core, the CPU will be shutting down unused cores and turbo boosting the core that is doing all of the work.

I think this is why some i5 / i7 owners aren't seeing that much of a performance boost. With my PC (which is i7 based), when I enable Multicore rendering and set the '-threads 4' launch option in CS, I see about a 30 - 50 FPS increase. I didn't actually see much an increase setting '-threads 8' (which is something you can do if you have a deskop i7 CPU).

It was setting the launch option in CS that gave my PC the biggest performance boost. Something you may want to try.

dłnedain
07-09-2010, 01:23 PM
Why do you say that?

It doesn't work anymore, it loads the "map" but the camera doesn't move.

NotSoCoolJ
07-09-2010, 01:34 PM
Don't forget, those people using Intel Core i5 / i7 CPU's that when a process is only running on a single core, the CPU will be shutting down unused cores and turbo boosting the core that is doing all of the work.

I think this is why some i5 / i7 owners aren't seeing that much of a performance boost. With my PC (which is i7 based), when I enable Multicore rendering and set the '-threads 4' launch option in CS, I see about a 30 - 50 FPS increase. I didn't actually see much an increase setting '-threads 8' (which is something you can do if you have a deskop i7 CPU).

It was setting the launch option in CS that gave my PC the biggest performance boost. Something you may want to try.

Could be. I explicitly turned that all off. My PC always runs 4 cores@3.6GHz. That's faster than its turbo boost speed would be anyway. There is pretty much no way you will get a stable OC if your constantly changing voltage and speed. You have to remove those variables to achieve a base line.

Qu@dr0
07-09-2010, 01:51 PM
After CS:S updates from July 7th this game has become very slow, quantity of FPS periodically decreases to 40. It occurs, in particular, when the shooting starts or when the terrorist has placed a bomb. Now really become impossible to play. Changing of options of multicore rendering does not help. Earlier activation of multicore rendering helped to avoid strong decrease in FPS quantity.

enoch420
07-09-2010, 01:55 PM
So, for triple core cpu I can use -threads 3, right?

I don't know what's up with everyone's pc's but, since engine update CS is running smooth as butter for me.

hisham.albeik
07-09-2010, 03:00 PM
Every time I read someone complain about multi-core rendering, they always have the assumption that switching it on means instead of having a 100% utilization in one core, you'll get 50% in one and 50% in another.

That is far from the truth. You can end up with 50% in 1 and 75% in another, or even 100% in both. In my AMD Athlon64 X2 6400+ (3.2GHz) I get 75% in one an nearly 100% in another. And I get the same FPS in any multi-core rendering setting. (even on mat_queue_mode -2...2).. One thing I know is that my FPS drops from 120 down 80 when flashlight is switched on. Which is understandable since dynamic lighting and shadows really takes a toll on the CPU.

Anyways, here is an article about Source Multi-Core Rendering, maybe it'll teach someone something new.
http://www.bit-tech.net/gaming/pc/2006/11/02/Multi_core_in_the_Source_Engin/1

NotSoCoolJ
07-09-2010, 03:12 PM
That is all exactly what I just said hisham. You think they will believe us now? Something tells me no. These fellas have bullet proof heads.

kemsky
07-09-2010, 04:41 PM
i suggest to enable HPET timer in BIOS ans select proper mode 64bit/32bit depending on OS.

but it may be laggy sometime.

tnk343
07-09-2010, 06:25 PM
NotSoCoolJ

Tell us the truth mate. Are you an HPE or Valve employee? :D