diff --git a/ci/iterations-localnet.sh b/ci/iterations-localnet.sh index ec9cb17e9c..6e2e07a336 100755 --- a/ci/iterations-localnet.sh +++ b/ci/iterations-localnet.sh @@ -25,8 +25,7 @@ fi build() { $genPipeline && return source ci/rust-version.sh stable - - _ scripts/ulimit-n.sh + source scripts/ulimit-n.sh _ cargo +$rust_stable build --all } diff --git a/multinode-demo/bootstrap-leader.sh b/multinode-demo/bootstrap-leader.sh index 6957ae007e..070513cd36 100755 --- a/multinode-demo/bootstrap-leader.sh +++ b/multinode-demo/bootstrap-leader.sh @@ -31,7 +31,11 @@ else program="$solana_fullnode" fi -tune_system +if [[ -z $CI ]]; then # Skip in CI + # shellcheck source=scripts/tune-system.sh + source "$SOLANA_ROOT"/scripts/tune-system.sh +fi + $solana_ledger_tool --ledger "$SOLANA_CONFIG_DIR"/bootstrap-leader-ledger verify diff --git a/multinode-demo/common.sh b/multinode-demo/common.sh index c7885285a6..6bd2d05e4e 100644 --- a/multinode-demo/common.sh +++ b/multinode-demo/common.sh @@ -67,45 +67,6 @@ export RUST_BACKTRACE=1 # shellcheck source=scripts/configure-metrics.sh source "$SOLANA_ROOT"/scripts/configure-metrics.sh -tune_system() { - # Skip in CI - [[ -z $CI ]] || return 0 - - # shellcheck source=scripts/ulimit-n.sh - source "$SOLANA_ROOT"/scripts/ulimit-n.sh - - # Reference: https://medium.com/@CameronSparr/increase-os-udp-buffers-to-improve-performance-51d167bb1360 - if [[ $(uname) = Linux ]]; then - ( - set -x +e - # test the existence of the sysctls before trying to set them - # go ahead and return true and don't exit if these calls fail - sysctl net.core.rmem_max 2>/dev/null 1>/dev/null && - sudo sysctl -w net.core.rmem_max=161061273 1>/dev/null 2>/dev/null - - sysctl net.core.rmem_default 2>/dev/null 1>/dev/null && - sudo sysctl -w net.core.rmem_default=161061273 1>/dev/null 2>/dev/null - - sysctl net.core.wmem_max 2>/dev/null 1>/dev/null && - sudo sysctl -w net.core.wmem_max=161061273 1>/dev/null 2>/dev/null - - sysctl net.core.wmem_default 2>/dev/null 1>/dev/null && - sudo sysctl -w net.core.wmem_default=161061273 1>/dev/null 2>/dev/null - ) || true - fi - - if [[ $(uname) = Darwin ]]; then - ( - if [[ $(sysctl net.inet.udp.maxdgram | cut -d\ -f2) != 65535 ]]; then - echo "Adjusting maxdgram to allow for large UDP packets, see BLOB_SIZE in src/packet.rs:" - set -x - sudo sysctl net.inet.udp.maxdgram=65535 - fi - ) - - fi -} - fullnode_usage() { if [[ -n $1 ]]; then echo "$*" diff --git a/multinode-demo/fullnode.sh b/multinode-demo/fullnode.sh index 4ac6f6e0d6..cff28629dc 100755 --- a/multinode-demo/fullnode.sh +++ b/multinode-demo/fullnode.sh @@ -62,7 +62,11 @@ accounts: $accounts_config_dir ====================================================================== EOF -tune_system +if [[ -z $CI ]]; then # Skip in CI + # shellcheck source=scripts/tune-system.sh + source "$SOLANA_ROOT"/scripts/tune-system.sh +fi + rsync_url() { # adds the 'rsync://` prefix to URLs that need it declare url="$1" diff --git a/scripts/tune-system.sh b/scripts/tune-system.sh new file mode 100644 index 0000000000..3d58f2a75e --- /dev/null +++ b/scripts/tune-system.sh @@ -0,0 +1,40 @@ +# |source| this file +# +# Adjusts system settings for optimal fullnode performance +# + +# shellcheck source=scripts/ulimit-n.sh +source "$(dirname "${BASH_SOURCE[0]}")"/ulimit-n.sh + +# Reference: https://medium.com/@CameronSparr/increase-os-udp-buffers-to-improve-performance-51d167bb1360 +if [[ $(uname) = Linux ]]; then + ( + set -x +e + # test the existence of the sysctls before trying to set them + # go ahead and return true and don't exit if these calls fail + sysctl net.core.rmem_max 2>/dev/null 1>/dev/null && + sudo sysctl -w net.core.rmem_max=161061273 1>/dev/null 2>/dev/null + + sysctl net.core.rmem_default 2>/dev/null 1>/dev/null && + sudo sysctl -w net.core.rmem_default=161061273 1>/dev/null 2>/dev/null + + sysctl net.core.wmem_max 2>/dev/null 1>/dev/null && + sudo sysctl -w net.core.wmem_max=161061273 1>/dev/null 2>/dev/null + + sysctl net.core.wmem_default 2>/dev/null 1>/dev/null && + sudo sysctl -w net.core.wmem_default=161061273 1>/dev/null 2>/dev/null + ) || true +fi + +if [[ $(uname) = Darwin ]]; then + ( + if [[ $(sysctl net.inet.udp.maxdgram | cut -d\ -f2) != 65535 ]]; then + echo "Adjusting maxdgram to allow for large UDP packets, see BLOB_SIZE in src/packet.rs:" + set -x + sudo sysctl net.inet.udp.maxdgram=65535 + fi + ) + +fi + + diff --git a/scripts/ulimit-n.sh b/scripts/ulimit-n.sh old mode 100755 new mode 100644 index 09b2c14f83..4537d3e850 --- a/scripts/ulimit-n.sh +++ b/scripts/ulimit-n.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# |source| this file # # Adjust the maximum number of files that may be opened to as large as possible. #