[Gc] allocator and false sharing

Alexander Herz alexander.herz at mytum.de
Mon Aug 20 05:11:22 PDT 2012


I just verified:

GC_malloc inside thread_local_alloc.c is used and the results are still 
as bad.

Alex

On 20.08.2012 13:43, Bruce Hoult wrote:
> I'd hope and expect that using the thread-local free list facility
> would prevent that.
>
> Did you build with -DTHREAD_LOCAL_ALLOC and follow the other instructions at:
>
>   http://www.hpl.hp.com/personal/Hans_Boehm/gc/scale.html
>
> On Mon, Aug 20, 2012 at 11:34 PM, Alexander Herz
> <alexander.herz at mytum.de> wrote:
>> Hi,
>>
>> While benchmarking all kinds of parallel code I come across another serious
>> scalability problem with the boehm allocator:
>>
>> executing this in 2 parallel threads:
>>
>> struct counter : virtual gc
>> {
>>      inline counter()
>>      {
>>          i=0;
>>      }
>>
>>      tbb::atomic<int>;
>>
>>      inline void up()
>>      {
>>          i.fetch_and_add(1); //this boils down to a locked add
>>      }
>> };
>>
>> int loop(long v, counter* c)
>> {
>>      LOOP_LABEL:
>>      if (v <= 0)
>>      {
>>          return 0;
>>      }
>>      else
>>      {
>>          c->up();
>>      }
>>      v=v - 1;
>>      goto LOOP_LABEL;
>> }
>>
>> //following thread is exeuted 2 times (in parallel)
>> thread
>> {
>>      counter* c=new (GC_MALLOC(sizeof(counter))) counter();
>>      loop(5000000,c);
>> }
>>
>> then I execute the same code sequentially and look at the speedup.
>>
>> I get a speedup of 0.6 (parallel version is slower than sequential).
>> Looking at some profiling data, I get a lot of false sharing (different data
>> in the same cache line accessed by
>> different threads).
>>
>> If I replace GC_MALLOC(sizeof(counter)) by GC_MALLOC(64) (cache line size of
>> my cpu) then I get the expected speed up of almost 2.0.
>>
>> So apparently the boehm allocator does not take care to avoid false sharing
>> (unlike tbb::scalable_malloc).
>>
>> Again it would be nice to be able to substitute a different allocator.
>>
>> Regards,
>> Alex
>>
>>
>>
>> _______________________________________________
>> Gc mailing list
>> Gc at linux.hpl.hp.com
>> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
>>
>> --
>> This message has been scanned for viruses and
>> dangerous content by MailScanner, and is
>> believed to be clean.
>>
> _______________________________________________
> Gc mailing list
> Gc at linux.hpl.hp.com
> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/



More information about the Gc mailing list