lkml.org 
[lkml]   [2010]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 4/9] AF_UNIX: find the recipients for multicast messages
    Date
    Alban Crequy <alban.crequy@collabora.co.uk> writes:

    >+static DEFINE_SPINLOCK(unix_multicast_lock);

    For DBUS it's probably ok, but I suspect for other usages
    the global lock in the multipath fast path is going to hurt
    sooner or later.

    > +
    > + /* Allocate for the set and hope the number of recipients does not
    > + * change while the lock is released. If it changes, we have to try
    > + * again... We allocate a bit more than needed, so if a _few_ members
    > + * are added in a multicast group meanwhile, we don't always need to
    > + * try again. */
    > + recipient_cnt += 5;
    > +
    > + set = kmalloc(sizeof(struct sock_set)
    > + + sizeof(struct sock_item) * recipient_cnt,
    > + GFP_KERNEL);

    FWIW for a large number of sockets this will likely run into
    memory fragmentation issues. There are various workarounds like
    fallback to vmalloc or use something like flex_arrays.


    -Andi
    --
    ak@linux.intel.com -- Speaking for myself only.


    \
     
     \ /
      Last update: 2010-11-22 21:17    [W:0.037 / U:1.540 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site