• Frederic Weisbecker's avatar
    connector: create connector workqueue only while needed once · 1a5645bc
    Frederic Weisbecker authored
    The netlink connector uses its own workqueue to relay the datas sent
    from userspace to the appropriate callback.  If you launch the test
    from Documentation/connector and change it a bit to send a high flow
    of data, you will see thousands of events coming to the "cqueue"
    workqueue by looking at the workqueue tracer.
    
    This flow of events can be sent very quickly. So, to not encumber the
    kevent workqueue and delay other jobs, the "cqueue" workqueue should
    remain.
    
    But this workqueue is pointless most of the time, it will always be
    created (assuming you have built it of course) although only
    developpers with specific needs will use it.
    
    So avoid this "most of the time useless task", this patch proposes to
    create this workqueue only when needed once.  The first jobs to be
    sent to connector callbacks will be sent to kevent while the "cqueue"
    thread creation will be scheduled to kevent too.
    
    The following jobs will continue to be scheduled to keventd until the
    cqueue workqueue is created, and then the rest of the jobs will
    continue to perform as usual, through this dedicated workqueue.
    
    Each time I tested this patch, only the first event was sent to
    keventd, the rest has been sent to cqueue which have been created
    quickly.
    
    Also, this patch fixes some trailing whitespaces on the connector files.
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Acked-by: default avatarEvgeniy Polyakov <zbr@ioremap.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1a5645bc
cn_queue.c 5.98 KB