linux服务器性能测试

 admin   2022-07-12 11:05   174 人阅读  0 条评论
#!/bin/sh
#Shell      menu.sh
#Author    lipc
#Date      20200818
#Ps       linux系统压测,有些工具需要下载,脚本不完善,需要调试

# Check if user is root
[ $(id -u) != "0" ] && {
    echo "${CFAILURE}Error: You must be root to run this script${CEND}"
    exit 1
}
pwd=/tmp

#初始化、安装跑分
function Test_environment_initialization() {
    dir=$(pwd)
    cd $pwd
    yum -y install gcc automake autoconf libtool make perl-Time-HiRes perl wget vim screen

    cd $pwd
    if [ -s UnixBench-5.1.4.tar.gz ]; then
        echo "UnixBench-5.1.4.tar.gz [found]"
    else
        echo "UnixBench-5.1.4.tar.gz not found!!!download now..."
        if ! wget -c https://github.com/qcsuper/byte-unixbench/releases/download/v5.1.4/UnixBench-5.1.4.tar.gz; then
            echo "Failed to download UnixBench-5.1.4.tar.gz, please download it to ${cur_dir} directory manually and try again."
            exit 1
        fi
    fi
    tar -zxvf UnixBench-5.1.4.tar.gz && rm -f UnixBench-5.1.4.tar.gz
    cd UnixBench/
    make

    cd $pwd
    if [ -s 1.0.17]; then
        echo "sysbench-1.0.17.tar.gz [fonud]"
    else
        echo "sysbench-1.0.17.tar.gz not found!!!download now..."
        if ! wget -c https://codeload.github.com/akopytov/sysbench/tar.gz/1.0.17; then
            echo "Failed to download sysbench-1.0.17.tar.gz, please download it to ${cur_dir} directory manually and try again."
            exit 1
        fi
    fi
    tar -zxvf 1.0.17 -C /usr/local/ && rm -f 1.0.17
    cd /usr/local/sysbench-1.0.17
    ./autogen.sh
    ./configure --without-mysql
    make -j
    make install

    #安装获取服务器软件、硬件信息的脚本。
    if [ ! -e '/tmp/systeminfo.sh' ]; then
        echo "Installing systeminfo.sh......"
        dir=$(pwd)
        cd $pwd
        wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/systeminfo.sh >/dev/null 2>&1
        cd $pwd
        chmod a+rx /tmp/systeminfo.sh
    fi
    #安装网络延迟的脚本。
    if [ ! -e '/tmp/AWS-ping.py' ]; then
        echo "Installing AWS-ping.py......"
        dir=$(pwd)
        cd $pwd
        wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/AWS-ping.py >/dev/null 2>&1
        cd $pwd
        chmod a+rx /tmp/AWS-ping.py
    fi
}

function Get_hardware_and_software_information() {
    /usr/bin/bash /tmp/systeminfo.sh
}

function Network_delay_test() {
    python /tmp/AWS-ping.py
}

function The_CPU_test() {
    #printf "正在测试,请耐心等待"
    /usr/bin/sysbench cpu --cpu-max-prime=200000000 --threads=8 run >/tmp/cpu.log 2>&1
    #clear
    name13=CPU计算素数所需时间
    name14=$(cat /tmp/cpu.log | grep "total time:")
    str7=$name13$name14
    echo $str7
}

function The_memory_test() {
    #printf "正在测试,请耐心等待"
    /usr/local/sysbench-1.0.17/src/sysbench --test=memory --memory-block-size=8K --memory-total-size=4G --num-threads=2 run >/tmp/memory.log 2>&1
    name15=内存读写性能
    name16=$(cat /tmp/memory.log | grep "transferred")
    str8=$name15$name16
    echo $str8
}

function Disk_test() {
    #printf "正在测试,请耐心等待,大约30分钟"
    #rndrw 混合随机读/写
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare >/tmp/rndrw-prepare.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw run >/tmp/rndrw-run.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw cleanup >/tmp/rndrw-cleanup.log 2>&1

    #rndwr 随机写入
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr prepare >/tmp/rndwr-prepare.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr run >/tmp/rndwr-run.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr cleanup >/tmp/rndwr-cleanup.log 2>&1

    #rndrd 随机读取
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd prepare >/tmp/rndrd-prepare.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd run >/tmp/rndrd-run.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd cleanup >/tmp/rndrd-cleanup.log 2>&1

    #seqrd 顺序读取
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd prepare >/tmp/seqrd-prepare.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd run >/tmp/seqrd-run.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd cleanup >/tmp/seqrd-cleanup.log 2>&1

    #seqrewr 顺序读写
    #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr prepare > /tmp/seqrewr-prepare.log 2>&1
    #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr run > /tmp/seqrewr-run.log 2>&1
    #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr cleanup > /tmp/seqrewr-cleanup.log 2>&1

    #seqwr 顺序写入
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr prepare >/tmp/seqwr-prepare.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr run >/tmp/seqwr-run.log 2>&1
    /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr cleanup >/tmp/seqwr-cleanup.log 2>&1

    #clear
    name1=顺序写入速度
    name2=$(cat /tmp/seqwr-run.log | grep "written, MiB/s:")
    str1=$name1$name2
    echo $str1

    #name3=顺序读写速度
    #name4=$(cat /tmp/seqrewr-run.log |grep "written, MiB/s:")
    #str2=$name3$name4
    #echo $str2

    name5=顺序读取速度
    name6=$(cat /tmp/seqrd-run.log | grep "read, MiB/s:")
    str3=$name5$name6
    echo $str3

    name7=随机读取速度
    name8=$(cat /tmp/rndrd-run.log | grep "read, MiB/s:")
    str4=$name7$name8
    echo $str4

    name9=随机写入速度
    name10=$(cat /tmp/rndwr-run.log | grep "written, MiB/s:")
    str5=$name9$name10
    echo $str5

    name11=混合随机读/写
    name12=$(cat /tmp/rndrw-run.log | grep "MiB/s")
    str6=$name11$name12
    echo $str6
}

function Grading_test() {
    cd /tmp/UnixBench
    ./Run >/tmp/unixbench.log 2>&1
    name17=Unixbench评分
    name18=$(cat /tmp/unixbench.log | grep "System Benchmarks Index Score")
    str9=$name17$name18
    echo $str9
}

function A_key_test() {
    screen iotest
    Test_environment_initialization
    Get_hardware_and_software_information
    printf '%80s\n' | tr ' ' -
    Network_delay_test
    printf '%80s\n' | tr ' ' -
    The_CPU_test
    printf '%80s\n' | tr ' ' -
    The_memory_test
    printf '%80s\n' | tr ' ' -
    Disk_test
    printf '%80s\n' | tr ' ' -
    Grading_test
    printf '%80s\n' | tr ' ' -
}

function menu() {
    cat <<EOF
----------------------------------------
|***************菜单主页***************|
----------------------------------------
$(echo -e "\033[33m 1)测试环境初始化(必选)\033[0m")
$(echo -e "\033[33m 2)获取软硬件信息\033[0m")
$(echo -e "\033[33m 3)网络延迟测试\033[0m")
$(echo -e "\033[33m 4)CPU测试\033[0m")
$(echo -e "\033[33m 5)内存测试\033[0m")
$(echo -e "\033[33m 6)磁盘IO测试(预估至少30分钟)\033[0m")
$(echo -e "\033[33m 7)Unixbench评分测试(预估至少45分钟)\033[0m")
$(echo -e "\033[33m 8)一键测试(预估至少75分钟)\033[0m")
$(echo -e "\033[33m 9)退出\033[0m")
EOF
    read -p "请输入对应产品的数字:" num1
    case $num1 in
    1)
        #clear
        Test_environment_initialization
        menu
        ;;
        #获取服务器软件、硬件信息。
    2)
        #clear
        Get_hardware_and_software_information
        menu
        ;;
        #获取网络延迟。
    3)
        #clear
        Network_delay_test
        menu
        ;;
        #测试cpu。
    4)
        #clear
        The_CPU_test
        menu
        ;;
        #测试内存。
    5)
        #clear
        The_memory_test
        menu
        ;;
        #测试磁盘IO。
    6)
        #clear
        Disk_test
        menu
        ;;
        #服务器性能跑分。
    7)
        #clear
        Grading_test
        menu
        ;;
        #以上功能,一键完成。
    8)
        A_key_test
        menu
        ;;
    9)
        exit 0
        ;;
    esac
}
menu


本文地址:https://liuchunjie.top/?id=385
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?