通過shell腳本進行linux服務器的CPU和內存壓測


 

 

在正常手段下,這個只是壓測的方法

在不正常手段下(crontab計划任務),可以提高CPU和內存的使用率

什么?你問我為什么要提高CPU和內存的使用率?只可意會不可言傳,自己悟吧

內存壓測

python的方式

# _*_ coding: utf-8 _*_
import sys
import re
import time

def print_help():
    print ('Usage:')
    print ('python mem.py 100MB')
    print ('python mem.py 1GB')

if __name__=="__main__":
    if len(sys.argv) == 2:
        pattern = re.compile('^(\d*)(M|G|B)$')
        match = pattern.match(sys.argv[1].upper())
        if match:
            num = int(match.group(1))
            unit = match.group(2)
            if unit == 'MB':
                s = ' '* (num * 1024 * 1024)
            else:
                s = ' '* (num * 1024 * 1024 * 1024)
                time.sleep(30)
        else:
            print_help()
    else:
        print_help()

使用方法:python mem.py 20G

mem.py是自定義的,這個不受限制

time.sleep的時間可以自己調整

好處在於,這個是利用CPU進行計算,去占用內存

shell的方式

#!/bin/bash
PWD=$(cd $(dirname $0); pwd)
MEM_DIR='/tmp/memory'
MEM_SIZE=$1

[ ! -d ${MEM_DIR} ] && mkdir ${MEM_DIR}
mount -t tmpfs -o size=${MEM_SIZE} tmpfs ${MEM_DIR} >> ${PWD}/mem_up.log 2>&1
if [ $? == 0 ]
then
    dd if=/dev/zero of=${MEM_DIR}/test count=1 bs=${MEM_SIZE} >> ${PWD}/mem_up.log 2>&1
    if [ $? == 0 ]
    then
        sleep 30
        rm ${MEM_DIR}/test && \
        umount ${MEM_DIR} && \
        rm -rf ${MEM_DIR}
    else
        rm ${MEM_DIR}/test && \
        umount ${MEM_DIR} && \
        rm -rf ${MEM_DIR}
        printf "\e[0;31msomething was error , please check ${PWD}/mem_up.log\e[0m\n"
        exit 1
    fi
else
    printf "\e[0;31msomething was error , please check ${PWD}/mem_up.log\e[0m\n"
    exit 2
fi

使用方法:sh mem.sh 20G

mem.sh是自定義的,這個不受限制

缺點:dd if 命令是使用磁盤讀寫,將磁盤內的/dev/zero寫入到內存的tmpfs

cpu壓測

#!/bin/sh
PWD=$(cd $(dirname $0); pwd)
cpu_num=$1

if [ $# != 1 ]
then
  printf "\e[0;34mUSAGE: $0 <CPUs>\e[0m\n"
  exit 1
fi

for i in $(seq ${cpu_num})
do
    echo -ne " i=0; while true do i=i+1; done" | /bin/sh &
    pid_array[${i}]=$! ;
done

for i in "${pid_array[@]}"; do
    printf "\e[0;32mkill ${i}\e[0m\n" >> ${PWD}/kill_cpu_up.log 2>&1
done

使用方法:sh cpu_up.sh 2

cpu_up.sh是自定義的,這個不受限制

表示使用2個CPU,可以根據自己的情況去設定


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM