linux服务器性能测试

  1 #!/bin/sh
  2 #Shell      menu.sh
  3 #Author    lipc
  4 #Date      20200818
  5 #Ps       linux系统压测,有些工具需要下载,脚本不完善,需要调试
  6 
  7 # Check if user is root
  8 [ $(id -u) != "0" ] && {
  9     echo "${CFAILURE}Error: You must be root to run this script${CEND}"
 10     exit 1
 11 }
 12 pwd=/tmp
 13 
 14 #初始化、安装跑分
 15 function Test_environment_initialization() {
 16     dir=$(pwd)
 17     cd $pwd
 18     yum -y install gcc automake autoconf libtool make perl-Time-HiRes perl wget vim screen
 19 
 20     cd $pwd
 21     if [ -s UnixBench-5.1.4.tar.gz ]; then
 22         echo "UnixBench-5.1.4.tar.gz [found]"
 23     else
 24         echo "UnixBench-5.1.4.tar.gz not found!!!download now..."
 25         if ! wget -c https://github.com/qcsuper/byte-unixbench/releases/download/v5.1.4/UnixBench-5.1.4.tar.gz; then
 26             echo "Failed to download UnixBench-5.1.4.tar.gz, please download it to ${cur_dir} directory manually and try again."
 27             exit 1
 28         fi
 29     fi
 30     tar -zxvf UnixBench-5.1.4.tar.gz && rm -f UnixBench-5.1.4.tar.gz
 31     cd UnixBench/
 32     make
 33 
 34     cd $pwd
 35     if [ -s 1.0.17]; then
 36         echo "sysbench-1.0.17.tar.gz [fonud]"
 37     else
 38         echo "sysbench-1.0.17.tar.gz not found!!!download now..."
 39         if ! wget -c https://codeload.github.com/akopytov/sysbench/tar.gz/1.0.17; then
 40             echo "Failed to download sysbench-1.0.17.tar.gz, please download it to ${cur_dir} directory manually and try again."
 41             exit 1
 42         fi
 43     fi
 44     tar -zxvf 1.0.17 -C /usr/local/ && rm -f 1.0.17
 45     cd /usr/local/sysbench-1.0.17
 46     ./autogen.sh
 47     ./configure --without-mysql
 48     make -j
 49     make install
 50 
 51     #安装获取服务器软件、硬件信息的脚本。
 52     if [ ! -e '/tmp/systeminfo.sh' ]; then
 53         echo "Installing systeminfo.sh......"
 54         dir=$(pwd)
 55         cd $pwd
 56         wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/systeminfo.sh >/dev/null 2>&1
 57         cd $pwd
 58         chmod a+rx /tmp/systeminfo.sh
 59     fi
 60     #安装网络延迟的脚本。
 61     if [ ! -e '/tmp/AWS-ping.py' ]; then
 62         echo "Installing AWS-ping.py......"
 63         dir=$(pwd)
 64         cd $pwd
 65         wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/AWS-ping.py >/dev/null 2>&1
 66         cd $pwd
 67         chmod a+rx /tmp/AWS-ping.py
 68     fi
 69 }
 70 
 71 function Get_hardware_and_software_information() {
 72     /usr/bin/bash /tmp/systeminfo.sh
 73 }
 74 
 75 function Network_delay_test() {
 76     python /tmp/AWS-ping.py
 77 }
 78 
 79 function The_CPU_test() {
 80     #printf "正在测试,请耐心等待"
 81     /usr/bin/sysbench cpu --cpu-max-prime=200000000 --threads=8 run >/tmp/cpu.log 2>&1
 82     #clear
 83     name13=CPU计算素数所需时间
 84     name14=$(cat /tmp/cpu.log | grep "total time:")
 85     str7=$name13$name14
 86     echo $str7
 87 }
 88 
 89 function The_memory_test() {
 90     #printf "正在测试,请耐心等待"
 91     /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
 92     name15=内存读写性能
 93     name16=$(cat /tmp/memory.log | grep "transferred")
 94     str8=$name15$name16
 95     echo $str8
 96 }
 97 
 98 function Disk_test() {
 99     #printf "正在测试,请耐心等待,大约30分钟"
100     #rndrw 混合随机读/101     /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
102     /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
103     /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
104 
105     #rndwr 随机写入
106     /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
107     /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
108     /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
109 
110     #rndrd 随机读取
111     /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
112     /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
113     /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
114 
115     #seqrd 顺序读取
116     /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
117     /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
118     /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
119 
120     #seqrewr 顺序读写
121     #/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
122     #/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
123     #/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
124 
125     #seqwr 顺序写入
126     /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
127     /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
128     /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
129 
130     #clear
131     name1=顺序写入速度
132     name2=$(cat /tmp/seqwr-run.log | grep "written, MiB/s:")
133     str1=$name1$name2
134     echo $str1
135 
136     #name3=顺序读写速度
137     #name4=$(cat /tmp/seqrewr-run.log |grep "written, MiB/s:")
138     #str2=$name3$name4
139     #echo $str2
140 
141     name5=顺序读取速度
142     name6=$(cat /tmp/seqrd-run.log | grep "read, MiB/s:")
143     str3=$name5$name6
144     echo $str3
145 
146     name7=随机读取速度
147     name8=$(cat /tmp/rndrd-run.log | grep "read, MiB/s:")
148     str4=$name7$name8
149     echo $str4
150 
151     name9=随机写入速度
152     name10=$(cat /tmp/rndwr-run.log | grep "written, MiB/s:")
153     str5=$name9$name10
154     echo $str5
155 
156     name11=混合随机读/157     name12=$(cat /tmp/rndrw-run.log | grep "MiB/s")
158     str6=$name11$name12
159     echo $str6
160 }
161 
162 function Grading_test() {
163     cd /tmp/UnixBench
164     ./Run >/tmp/unixbench.log 2>&1
165     name17=Unixbench评分
166     name18=$(cat /tmp/unixbench.log | grep "System Benchmarks Index Score")
167     str9=$name17$name18
168     echo $str9
169 }
170 
171 function A_key_test() {
172     screen iotest
173     Test_environment_initialization
174     Get_hardware_and_software_information
175     printf '%80s
' | tr ' ' -
176     Network_delay_test
177     printf '%80s
' | tr ' ' -
178     The_CPU_test
179     printf '%80s
' | tr ' ' -
180     The_memory_test
181     printf '%80s
' | tr ' ' -
182     Disk_test
183     printf '%80s
' | tr ' ' -
184     Grading_test
185     printf '%80s
' | tr ' ' -
186 }
187 
188 function menu() {
189     cat <<EOF
190 ----------------------------------------
191 |***************菜单主页***************|
192 ----------------------------------------
193 $(echo -e "33[33m 1)测试环境初始化(必选)33[0m")
194 $(echo -e "33[33m 2)获取软硬件信息33[0m")
195 $(echo -e "33[33m 3)网络延迟测试33[0m")
196 $(echo -e "33[33m 4)CPU测试33[0m")
197 $(echo -e "33[33m 5)内存测试33[0m")
198 $(echo -e "33[33m 6)磁盘IO测试(预估至少30分钟)33[0m")
199 $(echo -e "33[33m 7)Unixbench评分测试(预估至少45分钟)33[0m")
200 $(echo -e "33[33m 8)一键测试(预估至少75分钟)33[0m")
201 $(echo -e "33[33m 9)退出33[0m")
202 EOF
203     read -p "请输入对应产品的数字:" num1
204     case $num1 in
205     1)
206         #clear
207         Test_environment_initialization
208         menu
209         ;;
210         #获取服务器软件、硬件信息。
211     2)
212         #clear
213         Get_hardware_and_software_information
214         menu
215         ;;
216         #获取网络延迟。
217     3)
218         #clear
219         Network_delay_test
220         menu
221         ;;
222         #测试cpu。
223     4)
224         #clear
225         The_CPU_test
226         menu
227         ;;
228         #测试内存。
229     5)
230         #clear
231         The_memory_test
232         menu
233         ;;
234         #测试磁盘IO。
235     6)
236         #clear
237         Disk_test
238         menu
239         ;;
240         #服务器性能跑分。
241     7)
242         #clear
243         Grading_test
244         menu
245         ;;
246         #以上功能,一键完成。
247     8)
248         A_key_test
249         menu
250         ;;
251     9)
252         exit 0
253         ;;
254     esac
255 }
256 menu
原文地址:https://www.cnblogs.com/Leonardo-li/p/13524939.html