1. 12 12月, 2016 1 次提交
  2. 11 12月, 2016 2 次提交
  3. 10 12月, 2016 2 次提交
    • E
      udp: add batching to udp_rmem_release() · 6b229cf7
      Eric Dumazet 提交于
      If udp_recvmsg() constantly releases sk_rmem_alloc
      for every read packet, it gives opportunity for
      producers to immediately grab spinlocks and desperatly
      try adding another packet, causing false sharing.
      
      We can add a simple heuristic to give the signal
      by batches of ~25 % of the queue capacity.
      
      This patch considerably increases performance under
      flood by about 50 %, since the thread draining the queue
      is no longer slowed by false sharing.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6b229cf7
    • E
      udp: copy skb->truesize in the first cache line · c84d9490
      Eric Dumazet 提交于
      In UDP RX handler, we currently clear skb->dev before skb
      is added to receive queue, because device pointer is no longer
      available once we exit from RCU section.
      
      Since this first cache line is always hot, lets reuse this space
      to store skb->truesize and thus avoid a cache line miss at
      udp_recvmsg()/udp_skb_destructor time while receive queue
      spinlock is held.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c84d9490
  4. 09 12月, 2016 14 次提交
  5. 08 12月, 2016 2 次提交
    • O
      kthread: Make struct kthread kmalloc'ed · 1da5c46f
      Oleg Nesterov 提交于
      commit 23196f2e "kthread: Pin the stack via try_get_task_stack() /
      put_task_stack() in to_live_kthread() function" is a workaround for the
      fragile design of struct kthread being allocated on the task stack.
      
      struct kthread in its current form should be removed, but this needs
      cleanups outside of kthread.c.
      
      As a first step move struct kthread away from the task stack by making it
      kmalloc'ed. This allows to access kthread.exited without the magic of
      trying to pin task stack and the try logic in to_live_kthread().
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Acked-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Reviewed-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Chunming Zhou <David1.Zhou@amd.com>
      Cc: Roman Pen <roman.penyaev@profitbricks.com>
      Cc: Petr Mladek <pmladek@suse.com>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20161129175057.GA5330@redhat.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      1da5c46f
    • L
      Revert "default exported asm symbols to zero" · f27c2f69
      Linus Torvalds 提交于
      This reverts commit 8ab2ae65.
      
      I loved that commit because of how it explained what the problem with
      newer versions of binutils were, but the actual patch itself turns out
      to not work very well.
      
      It has two problems:
      
       - a zero CRC value isn't actually right.  It happens to work for the
         case where both sides of the equation fail at giving the symbol a
         crc, but there are cases where the users of the exported symbol get
         the right crc (due to seeing the C declarations), but the actual
         exporting itself does not (due to the whole weak asm symbol issue).
      
         So then the module load fails after all - we did have a crc for the
         symbol, but we couldn't match it with the loaded module.
      
       - it seems that the alpha assembler has special semantics for the
         '.set' directive, and on alpha it doesn't actually set the value of
         the specified symbol at all, it is instead used to set various
         assembly modes (eg ".set noat" and ".set noreorder").
      
         So using ".set" to set the symbol value would just cause build
         failures on alpha.
      
      I'm sure we'll find some other workaround for these issues (hopefully
      that involves getting rid of modversions entirely some day, but people
      are also talking about just using smarter tools).  But for now we'll
      just fall back on commit faaae2a5 ("Re-enable CONFIG_MODVERSIONS in
      a slightly weaker form") that just let's a missing crc through.
      Reported-by: NJan Stancek <jstancek@redhat.com>
      Reported-by: NPhilip Müller <philm@manjaro.org>
      Reported-by: NGuenter Roeck <linux@roeck-us.net>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f27c2f69
  6. 07 12月, 2016 19 次提交