Subject: Re: [RFC/PATCH 2/3] UDP memory usage accounting: accounting unit and variable

From: Hideo AOKI <[email-masked]>
Date: Thu, 27 Sep 2007 14:54:30 -0400

Hello,

I apologize for not replying sooner.

Andi Kleen wrote:
> Satoshi OSHIMA <[email-masked]> writes:
> 
>> This patch introduces global variable for UDP memory accounting.
>> The unit is page.
> 
> The global variable doesn't seem to be very MP scalable, especially
> if you change it for each packet. This will be a very hot cache line,
> in the worst case bouncing around a large machine.
> 
> Possible alternatives:
> - Per CPU variables
> - You only change the global on socket creation time (by pre allocating a large
> amount) or when the system comes under memory pressure.
> - Batching of the global updates for multiple packets [that's a variant
> of the previous one, might be still too costly though]
> 
> Also for such variables it's usually good to cache line pad them on SMP
> to avoid false sharing with something else.
> 
> -Andi

Thank you so much for your suggestions.

The implementation of the patch basically followed implementation of
tcp_memory_allocated. However, I should agree that the patch introduces
atomic operations too much. Then, I'll try to use the batching to reduce
the number of atomic operations.

Best regards,
Hideo Aoki

--
Hitachi Computer Products (America) Inc.