On 22/06/16 08:07, Torsten Bonde Christiansen wrote:
> On 2016-06-22 09:02, LacaK wrote:
>> Hi *,
>>
>> may be that this question is bit off-topic here, but I am sure, that here 
>> are experts, which know answer ;-)
>>
>> I have simple Lazarus/FPC application (with no explicit threads) which does 
>> intensive calculations (local thresholding with big window size) on image, 
>> which is stored into memory as 2D byte array.
>> (so only memory access is done and some integer calculations)
>>
>> When I run this application and look at Task Manager or Resource Monitor I 
>> see, that all 4 cores "are used" (at least performance graph shows usage or 
>> in other words activity in graph increasees)
>> Total CPU usage is <= 25% (which points out to fact, that only 1/4 cores is 
>> used)
>>
>> Why this ? As far as I expect, that single threaded application should use 
>> only one core, so I would expect activity only on one core not on all four 
>> cores
>> (I know that in theory CPU can switch single thread between cores, but I 
>> doubt that this is case (as switching has extra cost)... or is ?)
> 
> Nailed it right there....
> 
> All modern CPU automatically swaps running threads (unless affinity is set) 
> to other cores in case there is a high load. This is done from a

^^^^^^^^^^^^^^^^^ s/CPU/OS Kernel ;)

> heat perspective, since running on a single cores will make a local heat spot 
> on the dye - a things which is not prefered and also not really
> cost effient.
> 
>> (Btw: When I set affinity to only one core, then this core is 100% and 
>> others are 0% as expected)
>>
> 
> -Torsten.

-L.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to