Hi, Thank you for your comment.
Andi Kleen wrote: > Satoshi OSHIMA <[EMAIL PROTECTED]> 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. I understand what you pointed out. But I think the accounting method I'm proposing is very similar to TCP accounting and per socket accounting. How do you think of it? > Possible alternatives: > - Per CPU variables I'm afraid that sockets and socket buffers are handled on various CPUs. I mean that socket creation might be done on CPU-A but socket receiving might be done on CPU-B. And per CPU variables must be counted up when socket cap is checked. I'm afraid that per CPU vaiables are also costly enough. > - 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. I believe that memory usage accounting should be done accurately. Currently I couldn't see how can we know the accurate memory accounting only when the system is under memory pressure. But I revised the patch to avoid some atomic operations. If I could find the good way to avoid atomic operation more, I will add it. Satoshi Oshima - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html