DanLevy.net

Linux सर्वर बेंचमार्किंग स्क्रिप्ट्स

CPU और HDD का त्वरित बेंचमार्क करें

Hero image for Linux सर्वर बेंचमार्किंग स्क्रिप्ट्स

लिनक्स बेंचमार्क शेल स्क्रिप्ट्स

वर्तमान परीक्षणों में CPU और HDD sysbench से शामिल हैं (Debian/Ubuntu फ्लेवर्स पर स्वचालित रूप से इंस्टॉल होगा।)

लक्ष्य: प्रदरम्भन उपयोगिताओं के तर्कों को याद रखने से बचना। Bash में लिखा गया है।

चरण 1: बेंचमार्क सेटअप करें:

Terminal window
# परिणाम और स्क्रिप्ट्स के लिए फोल्डर बनाएं
export BENCH_DIR=$HOME/benchmarks
mkdir -p $BENCH_DIR/results

चरण 2: शॉर्टकट स्क्रिप्ट बनाएं: $HOME/benchmarks/bench-library.sh

#!/bin/bash
set -e
# कुछ डिपेंडेंसी इंस्टॉल करें
if [ "$(which sysbench)" == "" -o "$(which inxi)" == "" -o "$(which tcpdump)" == "" ]; then
sudo apt-get update && apt-get install -y sysbench inxi htop iotop tcpdump hddtemp
fi
# चर
export DATE_TAG=`date +%F` #YYYY-MM-DD
export CPU_CORES="$([ -e /proc/cpuinfo ] && grep -sc ^processor /proc/cpuinfo || sysctl -n hw.ncpu)"
export BENCH_DIR=$HOME/benchmarks/
mkdir -p $BENCH_DIR
function benchCpu() {
thread_limit=${1:$CPU_CORES}
prime_limit=${2:-20000}
if [ $CPU_CORES -lt `expr 1 + $thread_limit` ]; then
printf "\n\n${yellow}चेतावनी: \"${thread_limit} थ्रेड टेस्ट\" से सीमित परीक्षणों को छोड़ दिया गया है\n${cyan}पर्याप्त CPU कोर नहीं हैं ($CPU_CORES) ${reset}\n\n"
else
printf "\n\n${yellow}चेतावनी: \"${thread_limit} थ्रेड टेस्ट\" से सीमित परीक्षणों को छोड़ दिया गया है\n${reset}"
sudo sysbench --test=cpu \
--cpu-max-prime=${prime_limit} \
--num-threads=${CPU_CORES} \
run | tee -a $BENCH_DIR/results/cpu-test.log
fi
}
# benchSingleDisk seqrd 120G 8K 300
function benchSingleDisk () {
sudo sysbench --test=fileio --init-rng=on --file-test-mode=${1:-seqrd} --file-block-size=${3:-64K} \
--num-threads=${CPU_CORES} --max-time=${4:-180} --file-total-size=${2:-60G} \
--max-requests=0 run | tee -a $BENCH_DIR/results/sysbench-fileio.log
}
# benchDisk - रैंडम पढ़ने और लिखने, और क्रमिक r, और क्रमिक लिखने का परीक्षण करता है, फिर अंतिम सफाई करता है।
function benchDisk() {
# परीक्षण फ़ाइलें तैयार करता है - आपके मुक्त स्थान के 75% तक - स्थानीय डायरेक्टरी में, फिर 3 परीक्षण (प्रत्येक 20 मिनट तक) चलाता है
freeSpace=`df -k . | tail -1 | awk '{print $4}'`
freeSpace="${freeSpace//G|T/}"
testSize=$(awk "BEGIN {print ($freeSpace / 1024 / 1024) * 0.75; exit}")
testSize=${testSize}G
printf "####>>> \n$testSize परीक्षण डेटा को ${PWD} में लिख रहा है...\n"
benchSingleDisk seqrd ${testSize} 8K 300
benchSingleDisk seqwr ${testSize} 8K 300
benchSingleDisk seqrw ${testSize} 8K 300
benchSingleDisk rndrd ${testSize} 8K 300
benchSingleDisk rndwr ${testSize} 8K 300
benchSingleDisk rndrw ${testSize} 8K 300
benchSingleDisk seqrd ${testSize} 64K 300
benchSingleDisk seqwr ${testSize} 64K 300
benchSingleDisk seqrw ${testSize} 64K 300
benchSingleDisk rndrd ${testSize} 64K 300
benchSingleDisk rndwr ${testSize} 64K 300
benchSingleDisk rndrw ${testSize} 64K 300
printf "\n\n####>>> \nपरीक्षण पूरा हो गया! बहुत अच्छा!!! \n\n\n"
}

चरण 3: स्क्रिप्ट अनुमति सेट करें

Terminal window
chmod +x $BENCH_DIR/*.sh
source $HOME/benchmarks/bench-library.sh

चरण 4: बैच रनर स्क्रिप्ट बनाएं (वैकल्पिक)

$HOME/benchmarks/run-bench.sh

#!/bin/bash
set -e
source ./bench-library.sh
# एचडीडी गति का बेंचमार्क (वर्तमान निर्देशिका में)
###########
benchDisk
# सीपीयू का बेंचमार्क - अलग-अलग धागा गिनती (और कार्य आकार) के साथ
# अगर हमारे पास पर्याप्त कोर नहीं हैं तो यह स्वचालित रूप से परीक्षण छोड़ देगा (प्रभाव डालने के लिए)
# ध्यान दें: अलग-अलग हार्डवेयर के बीच परिणाम तुलनीय होते हैं - उनके समान सीपीयू कोर की संख्या तक।
###########
benchCpu 1
benchCpu 4
benchCpu 8 50000
benchCpu 12 100000
benchCpu 16 100000
benchCpu 32 250000
benchCpu 48 500000
benchCpu 64 2000000

अब निष्पादन अनुमति जोड़ें:

Terminal window
chmod +x $BENCH_DIR/*.sh

उपयोग

सुनिश्चित करें कि source ~/benchmarks/bench-library.sh करें, फिर benchCpu या benchDisk चलाएं।

Terminal window
benchCpu 8 250000
benchCpu 16 250000
benchDisk