Any chance an SMP version of the client can be built to take advantage of multiple processors?
Loddle Nurmi
These forums are CLOSED. Please visit the new forums HERE
Multiple Processors |
|
Loddle Nurmi
Registered User
Join date: 1 Dec 2006
Posts: 6
|
12-13-2006 12:07
Any chance an SMP version of the client can be built to take advantage of multiple processors?
Loddle Nurmi |
Valen Leinhardt
Registered User
Join date: 14 Jul 2006
Posts: 42
|
12-13-2006 13:16
That would likely be very very difficult.
For one, most games don't use up significant processor power. 100% CPU usage during a game is a misunderstood fact, it's simply that the game never gives up it's idle slices, as it shouldn't. If it does, the OS can grab them and use them up and cause potential game lag. I've run quite a few games using a diagnostic tool and the only games that I've ever seen high CPU usage are in very physics-oriented games, like Unreal Tournament. For example, I have two computers. An AMD Sempron 2600 and an AMD Athlon64 4400 X2. They're otherwise pretty identical machines, same video cards, relatively same harddrives. They both perform identically in SL. The only difference is that I can have a bunch of other small apps running on my X2 machine simply because the second core can take care of that stuff for me. No games in the world, aside from games developed for the PS2/PS3/XBOX 360, use multiple processors. Perhaps now that multi-core is coming around to being de-facto, this might change, but it'll require significant changes in how video games are even made (event loops cannot be easily threaded, for example, which is the core of a video game.) The things in SL that could probably be pawned off to a second processor is maybe a separate daemon for doing all the streaming downloads like music/video/textures, allowing one core to do streaming and one to do the main stuff. But even then separating that out requires introducing concepts like parallel locks and mutexes and all sorts of other fun multithreaded challenges, and could seriously slow things down for uniprocessor machines The overhead of creating and using locks and such can be high, and it would be insane to try and code two separate game engines for single and multiprocessor machines. |
Angel Sunset
Linutic
![]() Join date: 7 Apr 2005
Posts: 636
|
12-13-2006 23:24
Valen, thanks for the background info
![]() I was thinking about the direction I should go to upgrade my computer later; from your experience, it seems that the graphic card is THE bottleneck, all other things being equal. And you research into how much CPU is REALLY used is an eye opener for me! Since I have one of those "fully automatic do-it-for-you" Linux distros (OpenSuse), a second CPU would come in handy while the system sorts its indexing every day ![]() Thanks again! _____________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kubuntu Intrepid 8.10, KDE, linux 2.6.27-11, X.Org 11.0, server glx vendor: NVIDIA Corporation, server glx version: 1.5.2, OpenGL vendor: NVIDIA Corporation, OpenGL renderer: GeForce 9800 GTX+/PCI/SSE2, OpenGL version: 3.0.0 NVIDIA 180.29, glu version: 1.3, NVidia GEForce 9800 GTX+ 512 MB, Intel Core 2 Duo, Mem: 3371368k , Swap: 2570360k |
Valen Leinhardt
Registered User
Join date: 14 Jul 2006
Posts: 42
|
12-14-2006 11:26
Bottlenecks for SecondLife are in this order:
Graphics Card Mainboard memory (RAM) Harddrive thruput CPU/Mainboard speed/ability 1. Graphics card. This is a no-brainer. For SL, because of the sheer number of textures used in SecondLife and the sheer number of polygons rendered, you are far better off with a video card that has a higher amount of memory rather than a faster rendering rate. If you're debating between two cards, one with 256mb and one with 512mb, but the 512mb one is a bit slower than the 256mb one, get the 512mb one anyway. I've tested this with numerous cards, and I find that a GeForce 7600GT 512 beats a 7800GT with 256 each time. Of course, your mileage may vary. 2. Mainboard memory. Your RAM needs to be fast. SL keeps a HUGE cache on textures on the harddrive, which in both Windows and Linux, the operating system will cache all of the recent disk activity to RAM. So having both a large amount of ram (at least 1gb) and really good quality RAM (not just MHz either-- most AMD systems are at 400Mhz RAM but it's the more technical CAS Latency (http://en.wikipedia.org/wiki/CAS_latency) that really determine's a stick of RAM's performance ability. In fact most DDR 400MHz RAM still outperforms the DDR2 533MHz RAM simply because the CAS latencies in the DDR2 are still so high. So think twice about getting that $50 stick of RAM that's on sale just because it's cheap, make sure to read the latencies too, or you'll end up causing slowdown. But of course, on the flip side of that, if you are on a real tight budget, slow RAM is better than too little RAM at all. 3. Harddrive thruput. If you have a slow harddrive, your texture cache will perform poorly. Harddrives have four major areas of performance: Controller, Seek, Rotation, Cache. Controller refers to the type of harddrive, eg IDE, SCSI, SATA, SATAII, etc. By all means if you can get SATA-II drives, do so. They're getting cheap now and IDE is getting obsolete. SATA is just fine as well, as most realistic disk drives can't push much beyond the standard SATA drive speeds to really untilize SATA-II speeds yet, unless you want to shell out a couple hundred dollars for fast drives. Which brings me to the next two that sorta go hand-in-hand, Seek and Rotation. Rotation is the marketing gimmick one: 4200rpm, 5200rpm, 7200rpm, 10krpm. Rotation does matter, very very much. A 7200rpm drive will vastly outperform a 5200rpm drive. A 10krpm drive will get you even more of a speed boost as long as it's got a good seek time as well (some don't--read the fine print.) Seek time refers to the average number of milliseconds it takes to go from some random point A on the drive to some random point B. Lower seek times mean both that the drive rotates faster AND that the circuitry on the drive can actually pick up the data efficently. You can spin a harddrive at 100kRPM if you wanted, but if you can't read it that fast, it's a waste. The final one is likely overlooked, the drive Cache. This is a small set of built-in memory on the drive that is blazing fast, usually comes in 2MB, 8MB, and 16MB varieties. This will likely enhance your drive speed more than anything else--always get the high-cache models. It adds very little to the cost of the drive and is always worth it. 4. CPU/Mainboard. The CPU itself doesn't need to be excessively fast in SecondLife. It needs to be able to keep up with some physics calculations, and I guess if you're doing something like flying or driving vehicles or you participate in the various combat systems in SL (especially guns) and want really fine movements and such you might want higher CPU power, but for the average SL user, you just don't interact with that many objects that use Physics. Your mainboard is very important, however, and I know so many people skimp on this when they build a PC, often choosing the cheapest mainboard they can get and then adding a really beefy processor. The Mainboard has the task of managing the communications between your various components. If you have a blazing fast CPU and blazing fast RAM sticks and a blazing fast video card, and put it in a mediocre mainboard, you're shooting yourself in the foot, as not a single component will be able to be used efficiently. The Mainboard houses your harddrive controller which if it's slow you won't get maximum performance out of your drives, your memory controller which manages the data flowing between your CPU and your RAM...and if that's slow then your whole computer will be slow. It also manages the data flowing from your CPU to the graphics card. So put some thought into it and research what chipsets provide maximal performance. Hope this helps. |
LaeMi Qian
Registered User
Join date: 17 Jul 2006
Posts: 87
|
Very useful
12-29-2006 13:25
Hope this helps. Helps enough that I have made a local copy to keep in the folder with my SL desktop icons ![]() This is one of those posts that need to be harvested and put somewhere prominant! Thanx Valen. |
Angel Sunset
Linutic
![]() Join date: 7 Apr 2005
Posts: 636
|
Great Post!!!
12-30-2006 00:27
I can only confirm that the main board is important: for one, it needs to be able to support the graphic card, too
![]() I have a 6800 GS AGP 8X and for some strange reason, I have to set the NVidia Driver to 4X - or Second Life "stutters" - it sticks, and the a couple of seconds later carries on again. Under 8X I also get a lower value with glxgears than under 4X. It sticks under Windows, too - and the Windows driver can not be set back to 4X. I DID try to get a fast mainboard - I bought a Gigabyte Gigabyte GA 7VT600P-RZ - but it seems the RZ at the end was my undoing ![]() ![]() Your post is a REAL GEM; Valen! Despite my mother board problems, I have bought a new card ("in the post", at the moment ![]() Thank you SO much! Is the SL Linux Wiki still going? This would be a PERFECT entry for the Wiki! _____________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kubuntu Intrepid 8.10, KDE, linux 2.6.27-11, X.Org 11.0, server glx vendor: NVIDIA Corporation, server glx version: 1.5.2, OpenGL vendor: NVIDIA Corporation, OpenGL renderer: GeForce 9800 GTX+/PCI/SSE2, OpenGL version: 3.0.0 NVIDIA 180.29, glu version: 1.3, NVidia GEForce 9800 GTX+ 512 MB, Intel Core 2 Duo, Mem: 3371368k , Swap: 2570360k |