08-23-2010 01:07 PM
Hello!
I am using PC as a RT target. It has i3-core processor. My question is whether it will take any advantage of the two *two logical processors. As I know if one of these processors is computing any RT task or the task is RT (needs to be handled in a specific time) the other task cannot be RT.
My question is: if I assign a task that utilizes one core in 100% the other task assigned to the logical processor of this core will not be hendled?
Example: The processor is on-line computing FFT of a signal acquired by DAQ card, stores the results on a HDD and sends it through LAN to a host the logical processor can not perform any other task. It does not have time for it?
08-24-2010 06:58 AM
In my experience you cannot use 100% CPU load and be RT.
My time critical loop does some DAQ input, some calulations and DAQ output. This loops runs in time critical priority. Above a CPU load of about 66% we get a finished late condition from time to time and above 76% nearly continously. We used a timed loop to bind this VI to one CPU reducing jitter.
We use RT FIFOs to send data to other VIs sending them via network to a host computer and to store them as TDMS files on the local harddisk. The VIs use togehter with the ISRs about 50% of the other core.
Running the RT Rask unbound to a specific CPU may couse additional CPU load which can lead that the other VIs will seem to get blocked.
08-24-2010 07:32 AM
You definitely want to assign the time critical tasks to one CPU, the non-critical (less critical) tasks to the other, using the time loop cpu assignment. But if one of the CPU's does attempt to run at 100% will have problems as there are OS "housekeeping" tasks, running on each processor if I recall, that will be starved of resources if you truly hit 100% My last dual core RT project did have the time critical part running at a ~75% + loading, but the other cpu's tasks were still performed (network comms, calculations of the next waveform, etc.) in a "timely" manner. Of course the one caveat, looking back at your question, is that this was actually run on a dual processor machine. Sorry, that does muddy the waters as to your specific question.
08-24-2010 02:24 PM
No no, it is not the problem, you have lost the plot. I was asking about using miltithreading and logical processors ans whether there is time for a logical processor when the first processor is busy/ burdend.
You can assign one processor to system tasks and the rest processors are free unless you give them a task. But this is not a problem. For example I have two tasks that recquires 60% of a processor time. That is ok for RT. Now I have a processors with a logical processor. I cannot assign these tasks to the two processors. I mean how fare can I go with this when using i3 core 4 processors processor (two processors + two logical processors).
08-24-2010 04:32 PM
I tried to find out something about the i3 processor architecture. As far as I understand this is a processor with two cores which are capable of doing SMT each. This seem to be the same thing as Hyperthreading which my Pentium 4 processor can do. Running Windows with active hyperthreading I'm seeing two CPUs in the task manager and I know from applications which are designed to use multiple CPUs are using them simultaniously.
I'm currently on a machine with no LV installed so I cannot look into the readme of LV RT if it will support not only multi core CPUs but also Hyperthreading. There is a small test you can do. Activate hyperthreading in the BIOS if possible and install LV RT with SMP support, this should be done already due two the two cores. Connecting a monitor to the RT system you should see four CPUs.
The Intel Hyperthreading technology is a true SMT implementation. This means that the procesors are working simultanously. I think to remember that only one of the processors of each core has a floating point unit. To use the additional processor means that this prt of the code should not use floating point data types.