Hello everyone,
First, excuse my English (google translator)
I wonder if someone could tell me where to find official documentation on how VirtualDJ internally uses the computer processor.
More specifically, I want to know is if VirtualDJ performs better with a faster processor clock or performs better with a processor with more cores.
Let me explain better. Take an example.
Processor 1: Core i7, 2 cores, 2.9GHz.
Processor 2: Core i7, 4 cores, 2.3GHz.
At first glance, the second processor is better (it has four cores instead of two). But as I've been able to document, in certain work with audio (I do not mean VirtualDJ), the first processor is better (it has higher clock speed).
For that reason, I have doubts about which processor would be better to use with VirtualDJ.
With which of these processors will outperform VirtualDJ?
With which of these processors can achieve less latency in VirtualDJ?
Does the situation changes in any of these cases?
- Playing 2 or 4 tracks.
- Activating or not activating the keylock.
- Activating or not activating the FX.
- Browsing the collection of tracks.
Thank you very much for your time!
Greetings!
First, excuse my English (google translator)
I wonder if someone could tell me where to find official documentation on how VirtualDJ internally uses the computer processor.
More specifically, I want to know is if VirtualDJ performs better with a faster processor clock or performs better with a processor with more cores.
Let me explain better. Take an example.
Processor 1: Core i7, 2 cores, 2.9GHz.
Processor 2: Core i7, 4 cores, 2.3GHz.
At first glance, the second processor is better (it has four cores instead of two). But as I've been able to document, in certain work with audio (I do not mean VirtualDJ), the first processor is better (it has higher clock speed).
For that reason, I have doubts about which processor would be better to use with VirtualDJ.
With which of these processors will outperform VirtualDJ?
With which of these processors can achieve less latency in VirtualDJ?
Does the situation changes in any of these cases?
- Playing 2 or 4 tracks.
- Activating or not activating the keylock.
- Activating or not activating the FX.
- Browsing the collection of tracks.
Thank you very much for your time!
Greetings!
Posted Tue 11 Sep 12 @ 2:51 pm
Yes Developers please answer, that is an incredible question that all users need to know.. the honest hard truth
DJ JAMM
DJ JAMM
Posted Tue 11 Sep 12 @ 3:36 pm
-----Tracking-----
Posted Tue 11 Sep 12 @ 6:48 pm
agreed, one of the best questions iv seen on here.
would be great to know the answer. iv moved up to dual core i3 from a pentium 4 recently and dont think
it has made much diffrence in performance. i still use a second pc for chatroom when i play on the radio.
as it used to crash a lot when useing a web browser while broadcasting on the same pc.
would be intresting to know how vdj uses more than 1 core
would be great to know the answer. iv moved up to dual core i3 from a pentium 4 recently and dont think
it has made much diffrence in performance. i still use a second pc for chatroom when i play on the radio.
as it used to crash a lot when useing a web browser while broadcasting on the same pc.
would be intresting to know how vdj uses more than 1 core
Posted Tue 11 Sep 12 @ 8:04 pm
I work in IT and was taught in school to look at it in this way......The Clock speed is the overall speed that the processor is processing the data (efficiency), the number of cores is just how that workload is spread out. Is it spread over one super efficient core or is it spread around to multiple cores to lighten the workload...the answer sounds vague, b/cause their is no definitive answer to which method is best. It depends on the type of workload on the processor, the manufacturer, the bus speed, etc., basically the entire system setup can in the end effect the processing efficiency for the better or worse. Now, how VDJ uses the cores to process, that is the question....
Posted Tue 11 Sep 12 @ 8:59 pm
I'm very suprissed to see such a question on such a forum for several reasons!
First of all there's no definite answer. If there was such an aswer we would have either single core Pentium@60GHz processors, either 60-core Pentium@1GHz each.
The question asked above seems simple and logical, but it isn't!
Besides very few programs that work on low-level programming language (such as drivers and VERY specialized applications) no application has actual control on the processors cores. This is something that's handled by the OS and the processor itself.
By default the OS will "spread" any application process among all available cores. Actually it will "instruct" the processor to use all its cores if the processor needs to. However it's up to the processor to decide what he's going to do with the process.
The only control the OS has (and an application that's aware of this situation) is to "limit" the processor on some cores or on a single core.
Again, the processor is responsible for this. It will recieve "instructions" to limit a process on core 3 & 4 for instance but at the end (on extreme situations) it may decide to override this "limit"
As I said above if the OS doesn't "limit" the amount of cores that an application/process can use then each process can be spread amongst all cores. On the other hand that doesn't mean that it always runs on all cores. Most likely it runs on a single core!
The way multi-core processors work, they don't actually see "processes" but threads. When a thread is generated (from a process) the processor checks it's status and decides where to run this thread for maximum efficiency. The typical behavior for most processors here is that they will try to run all threads on their first core. If their first core is busy above a certain threshold (I believe 50%) then the thread will be executed from the next available (non busy) core. The threshold exists so that the threads that are allready running on the "busy" core have some headroom if they need more power, since the processor can't "exchange" threads between it's cores. The thread must die before it can get re-assigned on a different core.
So, even if an application is not "designed" to make "special" use of multi-core processors, the processor itself will take care of things efficiently. Unless we have a very bad written application that everything is "encapsulated" inside one thread, there's no worry about where this process runs and how much power it needs on a single core VERSUS a multi-core processor.
I don't know the exact technical details of VDJ's programming code, however VDJ as most modern applications use several threads to perform. This is very convenient for multi-core processors. They can spawn the threads generated from the main process as they see fit and keep their cores under the "busy" threshold giving them enough power to perform even if several other CPU intensive applications/processes/threads are running on the same time.
Even if a thread that's already running on a given core needs more power, there's plenty of headroom left there!!!
SO: It's almost impossible on multi-core processors to see a core's usage up to 99-100% In other words, it almost makes no difference if the end/edge of the processor is "a few" steps further down the road. Given the fact that threads live only a few CPU cycles/ticks, the multi-core processor will be able to spread the "hungry" thread on another less busy core way before all it's cores get up to 90+% :P
I hope that you get the picture and that I managed to explain it as best as I could given the fact that my native language is not English. :P
PS: It's almost impossible to bring an i7 4-core processor to it's "limits" :P I have tried to do so... I didn't succeed!!! And trust me I tried with some very resource hungry applications doing some very CPU intensive tasks (like rendering a 3h BlueRay video composition among with 3D rendering of a huge AutoCad model :P)
PS2: The main reason that multi-core processors doesn't spread the threads "evenly" on their cores is power management. They don't "try" to use 20% of every core, then 30% of every core e.t.c.
They keep the cores "shut-down" until the first core doesn't have much power left (the "threshold" I mentioned above) and then they use their second core, third core, e.t.c...
First of all there's no definite answer. If there was such an aswer we would have either single core Pentium@60GHz processors, either 60-core Pentium@1GHz each.
The question asked above seems simple and logical, but it isn't!
Besides very few programs that work on low-level programming language (such as drivers and VERY specialized applications) no application has actual control on the processors cores. This is something that's handled by the OS and the processor itself.
By default the OS will "spread" any application process among all available cores. Actually it will "instruct" the processor to use all its cores if the processor needs to. However it's up to the processor to decide what he's going to do with the process.
The only control the OS has (and an application that's aware of this situation) is to "limit" the processor on some cores or on a single core.
Again, the processor is responsible for this. It will recieve "instructions" to limit a process on core 3 & 4 for instance but at the end (on extreme situations) it may decide to override this "limit"
As I said above if the OS doesn't "limit" the amount of cores that an application/process can use then each process can be spread amongst all cores. On the other hand that doesn't mean that it always runs on all cores. Most likely it runs on a single core!
The way multi-core processors work, they don't actually see "processes" but threads. When a thread is generated (from a process) the processor checks it's status and decides where to run this thread for maximum efficiency. The typical behavior for most processors here is that they will try to run all threads on their first core. If their first core is busy above a certain threshold (I believe 50%) then the thread will be executed from the next available (non busy) core. The threshold exists so that the threads that are allready running on the "busy" core have some headroom if they need more power, since the processor can't "exchange" threads between it's cores. The thread must die before it can get re-assigned on a different core.
So, even if an application is not "designed" to make "special" use of multi-core processors, the processor itself will take care of things efficiently. Unless we have a very bad written application that everything is "encapsulated" inside one thread, there's no worry about where this process runs and how much power it needs on a single core VERSUS a multi-core processor.
I don't know the exact technical details of VDJ's programming code, however VDJ as most modern applications use several threads to perform. This is very convenient for multi-core processors. They can spawn the threads generated from the main process as they see fit and keep their cores under the "busy" threshold giving them enough power to perform even if several other CPU intensive applications/processes/threads are running on the same time.
Even if a thread that's already running on a given core needs more power, there's plenty of headroom left there!!!
SO: It's almost impossible on multi-core processors to see a core's usage up to 99-100% In other words, it almost makes no difference if the end/edge of the processor is "a few" steps further down the road. Given the fact that threads live only a few CPU cycles/ticks, the multi-core processor will be able to spread the "hungry" thread on another less busy core way before all it's cores get up to 90+% :P
I hope that you get the picture and that I managed to explain it as best as I could given the fact that my native language is not English. :P
PS: It's almost impossible to bring an i7 4-core processor to it's "limits" :P I have tried to do so... I didn't succeed!!! And trust me I tried with some very resource hungry applications doing some very CPU intensive tasks (like rendering a 3h BlueRay video composition among with 3D rendering of a huge AutoCad model :P)
PS2: The main reason that multi-core processors doesn't spread the threads "evenly" on their cores is power management. They don't "try" to use 20% of every core, then 30% of every core e.t.c.
They keep the cores "shut-down" until the first core doesn't have much power left (the "threshold" I mentioned above) and then they use their second core, third core, e.t.c...
Posted Wed 12 Sep 12 @ 4:13 am
Quote :
...since the processor can't "exchange" threads between it's cores. The thread must die before it can get re-assigned on a different core.
The operating system can easily switch the core a thread is running on. Try to start a single-threaded operation such as encoding an mp3, and open the task manager on the Performance tab. You will see that instead of 1 core being used 100%, 4 cores will be used 25%.
Every time the operating system decides which thread can execute next, it can decide on which core it will be run, and this can happen many times per second.
Quote :
Given the fact that threads live only a few CPU cycles/ticks...
The main thread of a program lives as long as the program is not closed.
Other threads usually live until they finished whatever they were designed to do, which can be only a few milliseconds, but can also take hours in case of rendering/encoding/...
A single thread can only run on one core at a time however, so the time a single thread takes to complete (given that the task it is performing is mainly computational, and not limited by the speed of network, disk or memory for example) is completely dependent on the speed of the processor.
Making computationally complex problems make use of multiple cores is not a trivial task so for these types of tasks a faster processor will sometimes be better than one with more cores.
Even if it is not possible to divide a single task in work that can be performed on multiple cores simultaneously, in a computer program it is often possible to run different tasks on different threads so that there is some advantage of having more cores instead of faster cores.
For VirtualDJ, all I can say is that VDJ 8 will be designed to make good use of multiple cores. Especially if you also use video or many decks, 4 cores can be an advantage over 2 cores.
Posted Wed 12 Sep 12 @ 6:34 am
i would say clock speed at this point in vdj development, because when you look at the cpu performance while cdj is active mainly one core is being used, so i don't think vdj uses multithreating much.
Posted Wed 12 Sep 12 @ 6:45 am
Thanks for the clearance, Adion!
PS: Perhaps I was referring to handles instead of threads? Or I got it all wrong? :P
PS: Perhaps I was referring to handles instead of threads? Or I got it all wrong? :P
Posted Wed 12 Sep 12 @ 6:48 am
Good thread this.... some interesting reading!
Cheers guys
Keith
Cheers guys
Keith
Posted Wed 12 Sep 12 @ 7:33 am
As far as performance, I've noticed single cores doing the same as multi-core for VDJ. However, having 2 cores is important to take the load of other system functions or programs outside of VDJ. As far as 2 vs. 4, I would think that need would depend on how many things you want to run at once.
Posted Wed 12 Sep 12 @ 9:18 am
Good answer Adion!!
-David
-David
Posted Wed 12 Sep 12 @ 2:01 pm