Note: This was originally posted by an inactive account. Content was preserved by moving under an admin account.
Originally posted by: stonysmithYou are 100% correct with your metaphor of "how long is a piece of string". In other words... "It Depends".
First: When you are running a database query, the performance is controlled/throttled by how fast the database itself responds. You could have a infinitely fast machine running LAE, but you'll be waiting on the turtle speed of the database.
To get all technical:
LAE is a rather unique piece of software. Most software maxes out on only one of the following resources: the CPU speed, or the I/O speed, or the amount of RAM memory. LAE is a bit unique in that it can consume large amounts of all three of these resources at once. LAE is not like a web server which sends out a web page, and then waits several lifetimes for the user to respond. Remember, 15 seconds of "human" time is 30,000,000,000 cpu cycles. LAE doesn't hold back, it doesn't "wait" any cycles to get the work done.. which means that it can consume a LOT of resources if you have large volumes of data or complex processing requirements.
But, the one thing that LAE does do - is that one node will stay on one processor core. (Most) nodes will only use one core to do their work. That's why you're seeing no change in performance by increasing your thread count - you're not going to make a single node run faster by increasing the thread count.
My experience is that on most modern multi-threaded operating systems and hardware, you can reasonably expect to run 4 tasks on each core, meaning you could set your thread count to 16 without seeing a degradation in performance. But.. that means your graph logic has to be setup such that you can take advantage of the multiple threads.. If your logic is waiting on a single database query or say a single sort, then the extra threads won't help you any. At the same time though, if you are working with datasets that have 100's of millions of records... you may find that your box is maxed out with only a thread count of 4.
Quote: Your mileage WILL vary. <grin>
Humor: You need to also be careful how high you set the thread count. A coworker of mine once set the thread count on a 6 core box to 200, and when he managed to get 160 nodes all running at once, the hardware rebooted, probably due to heat overload. You don't want to do that.
I am happy to deepen the discussion of performance, there are several techniques that can be applied to improve thruput, but, to continue the discussion, I'd need to start asking some other specifics.