Skip to content
Snippets Groups Projects
Select Git revision
  • d9b2938aabf757da2d40153489b251d4fc3fdd18
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

sock.c

Blame
    • Eric Dumazet's avatar
      d9b2938a
      net: attempt a single high order allocation · d9b2938a
      Eric Dumazet authored
      
      In commit ed98df33 ("net: use __GFP_NORETRY for high order
      allocations") we tried to address one issue caused by order-3
      allocations.
      
      We still observe high latencies and system overhead in situations where
      compaction is not successful.
      
      Instead of trying order-3, order-2, and order-1, do a single order-3
      best effort and immediately fallback to plain order-0.
      
      This mimics slub strategy to fallback to slab min order if the high
      order allocation used for performance failed.
      
      Order-3 allocations give a performance boost only if they can be done
      without recurring and expensive memory scan.
      
      Quoting David :
      
      The page allocator relies on synchronous (sync light) memory compaction
      after direct reclaim for allocations that don't retry and deferred
      compaction doesn't work with this strategy because the allocation order
      is always decreasing from the previous failed attempt.
      
      This means sync light compaction will always be encountered if memory
      cannot be defragmented or reclaimed several times during the
      skb_page_frag_refill() iteration.
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d9b2938a
      History
      net: attempt a single high order allocation
      Eric Dumazet authored
      
      In commit ed98df33 ("net: use __GFP_NORETRY for high order
      allocations") we tried to address one issue caused by order-3
      allocations.
      
      We still observe high latencies and system overhead in situations where
      compaction is not successful.
      
      Instead of trying order-3, order-2, and order-1, do a single order-3
      best effort and immediately fallback to plain order-0.
      
      This mimics slub strategy to fallback to slab min order if the high
      order allocation used for performance failed.
      
      Order-3 allocations give a performance boost only if they can be done
      without recurring and expensive memory scan.
      
      Quoting David :
      
      The page allocator relies on synchronous (sync light) memory compaction
      after direct reclaim for allocations that don't retry and deferred
      compaction doesn't work with this strategy because the allocation order
      is always decreasing from the previous failed attempt.
      
      This means sync light compaction will always be encountered if memory
      cannot be defragmented or reclaimed several times during the
      skb_page_frag_refill() iteration.
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    mkcompile_h 2.46 KiB
    #!/bin/sh
    
    TARGET=$1
    ARCH=$2
    SMP=$3
    PREEMPT=$4
    CC=$5
    
    vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
    
    # If compile.h exists already and we don't own autoconf.h
    # (i.e. we're not the same user who did make *config), don't
    # modify compile.h
    # So "sudo make install" won't change the "compiled by <user>"
    # do "compiled by root"
    
    if [ -r $TARGET -a ! -O include/generated/autoconf.h ]; then
      vecho "  SKIPPED $TARGET"
      exit 0
    fi
    
    # Do not expand names
    set -f
    
    # Fix the language to get consistent output
    LC_ALL=C
    export LC_ALL
    
    if [ -z "$KBUILD_BUILD_VERSION" ]; then
    	if [ -r .version ]; then
    		VERSION=`cat .version`
    	else
    		VERSION=0
    		echo 0 > .version
    	fi
    else
    	VERSION=$KBUILD_BUILD_VERSION
    fi
    
    if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
    	TIMESTAMP=`date`
    else
    	TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
    fi
    if test -z "$KBUILD_BUILD_USER"; then
    	LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
    else
    	LINUX_COMPILE_BY=$KBUILD_BUILD_USER
    fi
    if test -z "$KBUILD_BUILD_HOST"; then
    	LINUX_COMPILE_HOST=`hostname`
    else
    	LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
    fi
    
    UTS_VERSION="#$VERSION"
    CONFIG_FLAGS=""
    if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
    if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
    UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
    
    # Truncate to maximum length
    
    UTS_LEN=64
    UTS_TRUNCATE="cut -b -$UTS_LEN"
    
    # Generate a temporary compile.h
    
    ( echo /\* This file is auto generated, version $VERSION \*/
      if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
      
      echo \#define UTS_MACHINE \"$ARCH\"
    
      echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
    
      echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\"
      echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
    
      echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
    ) > .tmpcompile
    
    # Only replace the real compile.h if the new one is different,
    # in order to preserve the timestamp and avoid unnecessary
    # recompilations.
    # We don't consider the file changed if only the date/time changed.
    # A kernel config change will increase the generation number, thus
    # causing compile.h to be updated (including date/time) due to the 
    # changed comment in the
    # first line.
    
    if [ -r $TARGET ] && \
          grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \
          grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \
          cmp -s .tmpver.1 .tmpver.2; then
       rm -f .tmpcompile
    else
       vecho "  UPD     $TARGET"
       mv -f .tmpcompile $TARGET
    fi
    rm -f .tmpver.1 .tmpver.2