Is the graphics card the bottleneck in this system?

ss88

Weaksauce
Joined
Dec 1, 2019
Messages
101
I'm running a trading platform (TD Ameritrade's thinkorswim, "TOS"), and there's a bit of lag in this Java-based app. Examples of lag/choppiness:
  • I can out-type the characters appearing on the screen in TOS chat window
  • streaming video in TOS is very slightly choppy, but audio is fine
  • TOS pop-up windows are slow to appear and disappear
I don't experience these issues in other apps. I can run the same video stream in Chrome and there will be zero chop. I've heard TOS is resource intensive, so I'm trying to determine if there's a bottleneck in my system.

machine specs:
Dell XPS 8700 mid-tower
Intel Core i7-4770 @ 3.40 GHz
32gb DDR3 1600Mhz
AMD Radeon R9 270 with 2GB vRAM
Windows 7 SP1, 64-bit

I have 4 monitors connected to the R9 270 graphics card (integrated graphics are disabled in BIOS).

Here are a couple of snapshots of Windows Resource Monitor, Task Mgr, and GPU-Z, taken (1) before launching TOS and (2) with TOS running.

Before launching TOS:
bwd5mae.png


TOS running full bore, with lots of charts updating with streaming data, and streaming video playing:
YFp2v72.png


To my inexperienced eye:
  • CPU is not the bottleneck
  • system RAM is not the bottleneck
  • unsure about graphics card. GPU load is only 28%, but memory used seems high relative to the 2GB available, with 1443 MB used/dedicated and 326 MB used/dynamic. Not much spare capacity at this snapshot, which I guess means that there are probably instances where all the vRAM is used and I guess excess is offloaded to system RAM and slows things down?
What do you guys think? Does the graphics card look like a bottleneck here?
 
Looks like your HDD and your network are hitting 100%. SSD? What kind of internet connection do you have?
 
  • Like
Reactions: ss88
like this
Looks like your HDD and your network are hitting 100%. SSD? What kind of internet connection do you have?
Yeah, not sure what's going on there.

480gb SSD, several years old. OS and apps, including TOS, are on the SSD. Nothing related to TOS is on the HDD, which is just for media files.

Internet connection is Verizon FIOS. Checking speedtest.net, I'm getting 100Mbps download, which should be more than enough for streaming video and quotes.
 
Were you the guy looking for help over at Hareware Canucks, to build a new system for TOS using 4 monitors?
 
ToS is pretty low on requirements. However you'll find tons of tech illiterate folks telling you you need some powerful computer to run it in their chat rooms. I bet your problem has to do with vsync settings or different refresh rate monitors or perhaps a driver issue. You're not even using all your card's VRAM nor is it under heavy load.
 
  • Like
Reactions: ss88
like this
Yeah, not sure what's going on there.

480gb SSD, several years old. OS and apps, including TOS, are on the SSD. Nothing related to TOS is on the HDD, which is just for media files.

Internet connection is Verizon FIOS. Checking speedtest.net, I'm getting 100Mbps download, which should be more than enough for streaming video and quotes.

If your HDD is hitting 100% utilization, you're going to get lag/choppiness even if the TOS program isn't causing it.
 
If your HDD is hitting 100% utilization, you're going to get lag/choppiness even if the TOS program isn't causing it.
I don't think the HDD is even spinning when I'm using TOS, as I can hear it spin up when I access files on it, which is only when the markets are closed and I'm not using TOS.

Is it possible that the SSD is hitting 100% utilization?
 
From the perf mon you have above, the read range of the graph for the HD is only 1MB. Its showing you that your HD peaked at 1MB of read/write. No way is that a fully utilized/burdened disk. Same with network.

Im going with video card. The stutter you talk about makes sense for a vid card trying to power 4 monitors with only 2GB of vram. If you disable 1 or 2 monitors temporarily, does problem go away?
 
  • Like
Reactions: ss88
like this
ToS is pretty low on requirements. However you'll find tons of tech illiterate folks telling you you need some powerful computer to run it in their chat rooms. I bet your problem has to do with vsync settings or different refresh rate monitors or perhaps a driver issue. You're not even using all your card's VRAM nor is it under heavy load.
Yeah, I'd have thought TOS wouldn't be hard on a graphics card since it's all 2D charts and tables. Graphics card drivers are up to date.

I read somewhere that TOS is single threaded, which I guess means it's only using one CPU core. But if that was the problem, I'd imagine lots of people would be complaining about TOS since my PC has a Core I7 4770, and there must be plenty of TOS users with CPUs with slower single thread speeds.

I do notice that some of the monitors switch to 59Hz after I set them to 60Hz. If they aren't all at the same refresh rate, could that cause problems?

I got a good deal on a used RX 480, so I'll try swapping that in and see if it makes a difference, and will post up GPU-Z snapshot.
 
Yeah, I'd have thought TOS wouldn't be hard on a graphics card since it's all 2D charts and tables. Graphics card drivers are up to date.

I read somewhere that TOS is single threaded, which I guess means it's only using one CPU core. But if that was the problem, I'd imagine lots of people would be complaining about TOS since my PC has a Core I7 4770, and there must be plenty of TOS users with CPUs with slower single thread speeds.

I do notice that some of the monitors switch to 59Hz after I set them to 60Hz. If they aren't all at the same refresh rate, could that cause problems?

I got a good deal on a used RX 480, so I'll try swapping that in and see if it makes a difference, and will post up GPU-Z snapshot.

Try running it on only one monitor (physically disconnect the others) and see if that clears it up. Turn vsync on/off with just one and see if that affects it. Make sure to restart the program before changing that.

If just one monitor solves the problem the connect the others 1 at a time and see if it gets laggy with a particular one.

I use ToS on a laptop with a haswell CPU (dual core, much slower than yours) with zero problems.
 
Following up on this thread, I upgraded to a newer computer (not because of this issue, but because Win7 is about to go end of life, and it was easier/cheaper to buy a PC w/ Win10 and take my time setting it up and sell old PC, rather than upgrade old PC to Win 10 and scramble to get everything set up quickly).

And guess what - thinkorswim is still laggy! Obviously TOS on new PC is a new install. I also rebuilt my TOS workspace from scratch. Still laggy.

Old machine specs:
Dell XPS 8700 mid-tower
Intel Core i7-4770 @ 3.40 GHz
32gb DDR3 1600Mhz
AMD Radeon R9 270 with 2GB vRAM
Windows 7 SP1, 64-bit

New machine specs:
Dell XPS 8900 mid-tower
Intel Core i7-6700 @ 4.00 GHz
32gb DDR4 RAM
AMD Radeon RX 480 with 8GB vRAM
Windows 10, 64-bit

I think I can safely say bottleneck is not the GPU:
GLPGDC4.png


Not the system RAM:
ywjIUcS.png


Not the SSD or network. Which leaves the CPU:
5FV35FT.png


While the overall CPU usage is low, the load is somewhat concentrated:
QCiqHsB.png


I'm guessing TOS is not multi-threaded. So maybe this CPU usage is the bottleneck?
 
It looks just like it's a poorly written program. Nothing in there is outside of a normal utilization so it is hard to tell.
 
  • Like
Reactions: ss88
like this
TOS is more than likely a "slave" performance wise to the market data being fed to it. Launch it in "high priority" and see if that helps. Appears that as mentioned above, could be poorly coded java swing single threaded rendering. Check your wait states on the core TOS processes. Is it spawning new JVMs for each window? If so go wide. I assume like most traders you are opening a bunch of trading windows. See below.

You could also try more cores and go wider. 4/8 is rather limiting by today's standards. Something like a 3950x at the top and work your way down the product stack for your price, AMD will give you more Cores and Threads per buck. If you are a big trader - then the expense of a new system won't be an issue. Traders at the Bank always have the best top of the line shit.
 
Last edited:
  • Like
Reactions: ss88
like this
It looks just like it's a poorly written program. Nothing in there is outside of a normal utilization so it is hard to tell.
Yeah, that's the conclusion I'm coming to. In addition to the low hardware utilization, I don't experience lag in any other apps that are running while TOS is also running.

I spoke with their advanced tech support and when they examined my logs, they saw very long calculation delays, which would explain the lag I'm experiencing. Their solution was either close charts until I get to an acceptable level of lag, or fortunately, multiple TOS instances can be run simultaneously. So that's what I'm doing - two instances, each with their own set of charts. A little bit of a clunky solution, but it reduces lag considerably. And of course, even this isn't stressing hardware resources, so if I wanted to manage the logistical overhead of having 3 instances running, I could probably do that as well.

But it clearly supports the point you're making - just not an efficiently written program.

TOS is more than likely a "slave" performance wise to the market data being fed to it. Launch it in "high priority" and see if that helps. Appears that as mentioned above, could be poorly coded java swing single threaded rendering. Check your wait states on the core TOS processes. Is it spawning new JVMs for each window? If so go wide. I assume like most traders you are opening a bunch of trading windows. See below.

You could also try more cores and go wider. 4/8 is rather limiting by today's standards. Something like a 3950x at the top and work your way down the product stack for your price, AMD will give you more Cores and Threads per buck. If you are a big trader - then the expense of a new system won't be an issue. Traders at the Bank always have the best top of the line shit.
Yes, it's definitely single threaded - I can see that in the CPU cores' utilization, and it was confirmed by their tech people.

Didn't really understand the rest of your post. How do I launch in high priority?

What does going wider mean? Open multiple instances? That's what I'm doing now and that helps a lot.

The advanced tech support guy did mention that a lot of the calculation work is placed on the GPU, and he thought that running a second instance would offload some of the work to one of the underutilized CPU cores. No idea if this is gibberish or what actually happens, but lag is certainly considerably reduced now that I've split my charts between two instances of the app.
 
Yeah, that's the conclusion I'm coming to. In addition to the low hardware utilization, I don't experience lag in any other apps that are running while TOS is also running.

I spoke with their advanced tech support and when they examined my logs, they saw very long calculation delays, which would explain the lag I'm experiencing. Their solution was either close charts until I get to an acceptable level of lag, or fortunately, multiple TOS instances can be run simultaneously. So that's what I'm doing - two instances, each with their own set of charts. A little bit of a clunky solution, but it reduces lag considerably. And of course, even this isn't stressing hardware resources, so if I wanted to manage the logistical overhead of having 3 instances running, I could probably do that as well.

But it clearly supports the point you're making - just not an efficiently written program.

Yes, it's definitely single threaded - I can see that in the CPU cores' utilization, and it was confirmed by their tech people.

Didn't really understand the rest of your post. How do I launch in high priority?

What does going wider mean? Open multiple instances? That's what I'm doing now and that helps a lot.

The advanced tech support guy did mention that a lot of the calculation work is placed on the GPU, and he thought that running a second instance would offload some of the work to one of the underutilized CPU cores. No idea if this is gibberish or what actually happens, but lag is certainly considerably reduced now that I've split my charts between two instances of the app.

wider means more cores but if it is one exe killing you, then don't bother. HOWEVER, opening multiple instances and binding each to a DIFFERENT core is the solution.

batch...
start cmd.exe /high /affinity <hex affinity mask> "your executable here"

ie..
REM EVEN CPUs 0,2,4,6 - Full Cores
REM C:\WINDOWS\System32\cmd.exe /c start /affinity 555 F:\Games\Steam\Steam.exe


#####
start /affinity 1 app.exe (only use CPU 0)
start /affinity 2 app.exe (only use CPU 1)
start /affinity 1F app.exe (only use CPUs 0, 1, 2, 3, and 4)
 
Last edited:
  • Like
Reactions: ss88
like this
ss88 I have the same problem with ToS it runs slow especially at the market open and now even during the day if I type in a ticker it can take 40 seconds to load a chart. I saw this back in Feb 2018 too when there was a couple weeks of panic but now its bad everyday. I have an I core 7 32 GB of RAM 4 GBDDR4 PNY video card so I thought my build was capable. My ram and CPU usage are always below 50% but still the charts are slow. The ToS tech guys told me it was my video card since there is alot of data to process. I had alot of charts up simultaneously and when I dropped it down to 2, lets say, the performance improved significantly so I was inclined to believe them.

I was thinking about upgrading with 2 video cards but after reading your experience it makes me wonder if its a waste of money. You new build is better than mine but you still have issues. I didn't know you can open multiple instances of ToS. I tried on different computers at the same time but get kicked out with the same account if I try and run multiple ToS apps. I really like their charting but the lag is unacceptable.
 
ss88 I have the same problem with ToS it runs slow especially at the market open and now even during the day if I type in a ticker it can take 40 seconds to load a chart. I saw this back in Feb 2018 too when there was a couple weeks of panic but now its bad everyday. I have an I core 7 32 GB of RAM 4 GBDDR4 PNY video card so I thought my build was capable. My ram and CPU usage are always below 50% but still the charts are slow. The ToS tech guys told me it was my video card since there is alot of data to process. I had alot of charts up simultaneously and when I dropped it down to 2, lets say, the performance improved significantly so I was inclined to believe them.

I was thinking about upgrading with 2 video cards but after reading your experience it makes me wonder if its a waste of money. You new build is better than mine but you still have issues. I didn't know you can open multiple instances of ToS. I tried on different computers at the same time but get kicked out with the same account if I try and run multiple ToS apps. I really like their charting but the lag is unacceptable.
Just noticed your reply from over a year ago. What did you end up doing?

I removed the AMD Radeon RX 480 with 8GB vRAM and installed 2 x Nvidia NVS 510 cards. These are much less powerful cards if gaming, but they are plenty for 2D charting. This resolved some instability issues I was having with running so many monitors off the one AMD card.
 
Back
Top