模拟占用磁盘内存CPU

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 模拟占用磁盘内存CPU

模拟使用内存(实际占用)

yum -y install gcc automake autoconf libtool make

# 下载 memtester
[root@jast01 ~]# wget http://pyropus.ca/software/memtester/old-versions/memtester-4.2.2.tar.gz

# 解压安装
[root@jast01 ~]# tar -zxvf memtester-4.2.2.tar.gz 
[root@jast01 ~]# cd memtester-4.2.2/
[root@jast01 memtester-4.2.2]# make && make install 

# 查看命令所在目录
[root@jast01 memtester-4.2.2]# whereis memtester
memtester: /usr/local/bin/memtester

# 将启动文件名修改为我们模拟的程序名
[root@jast01 memtester-4.2.2]# mv /usr/local/bin/memtester /usr/local/bin/gz-server

# 将我们现在完的安装包和目录可以删除了
[root@jast01 ~]# rm memtester-4.2.2* -rf

# 后台启动并查看内存使用
[root@jast01 ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              3           0           2           0           0           3
Swap:             0           0           0
[root@jast01 ~]# nohup gz-server 2G > 1.log &
[root@jast01 ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              3           2           0           0           0           1
Swap:             0           0           0

模拟占用内存(缓存占用)

#使用虚拟内存构造内存消耗

mkdir /tmp/memory

mount -t tmpfs -o size=1024M tmpfs /tmp/memory

dd if=/dev/zero of=/tmp/memory/block

#释放消耗的虚拟内存

rm /tmp/memory/block

umount /tmp/memory

rmdir /tmp/memory

模拟生成文件占用磁盘

命令

# 生成一个100G文件,文件目录、名为/opt/temp/data.zip
fallocate -l 100G /opt/temp/data.zip

通用脚本

#!/bin/bash
# 单位byte
dist_size=$((1024*1024*1024))
current_dist_size=0
# 每个文件的大小范围
file_min_size=$((1024*1024*500))
file_max_size=$((1024*1024*800))
# 文件名后缀
file_type=snappy.data
# 随机数
function rand(){
  min=$1
  max=$(($2-$min+1))
  num=$(date +%s%N)
  echo $(($num%$max+$min))
}


while [ 0 -le 1 ]
do
  rnd=$(rand $file_min_size $file_max_size)
  filename=md5sum
  current=`date "+%Y%m%d%H%M%S"`$(rand 1 10000000)
  key=`echo -n $current$hash_key|md5sum|cut -d" " -f1`
  echo '生成文件大小:'$(($rnd/1024/1024))'M'
  fallocate -l $rnd ./$key.$file_type
  current_dist_size=$(($current_dist_size+$rnd))
  echo '已生成文件大小:'$(($current_dist_size/1024/1024))'M,最大限制:'$(($dist_size/1024/1024))'M'
  if [ $current_dist_size -ge $dist_size ]; then
    echo '文件生成完成,退出生成'
    break
  fi
done

模拟使用CPU

sh cpu_run.sh adjust 80 1 5
模拟使用cpu80%,自动调整cpu使用率,波动范围5%

cur_cpu=mpstat 1 5|awk '{if(NR==8){print $3}}'
print $3 这个位置,有的版本是 print $4

mpstat 安装方法 yum install -y sysstat
具体使用说明见脚本内容

#!/bin/bash
#定义生成的c文件名称和可执行程序名称
fileName="cpu_use"
#定义使用方法说明
usage(){
  echo "./`basename $0` <start|stop|adjust> <cpu_Rate> [sleeptime/worktime] [adjustRange]"
  echo ""
  echo "start:按照核的数量启动 $fileName"
  echo "stop:停止所有 $fileName"
  echo "adjust:自动调整占用cpu的使用率"
  echo "cpu_Rate:占用cpu比率"
  echo "sleeptime/worktime:cpu空闲和工作时间的占比 可以通过该参数调整"
  echo "adjustRange:允许cpu的波动范围 即curentcpu-adjustRange cpu_Rate curentcpu+adjustRange就不再调整"
  echo ""
  exit 
}
#判定参数的个数,参数不能少于1个,且必须为限定参数:start,stop,adjust


if [ $# -lt 1 ]
then
  usage
fi
#设置需要占用的cpu比率,默认为50%
if [ "$2" == "" ]
then
  cpu_Rate=50
else
  cpu_Rate=$2
fi
#设置允许的波动范围,默认为5
if [ "$4" == "" ]
then
  adjustRange=5
else
  adjustRange=$4
fi
#停止
#没有参数
stop_thread(){
    if [ `ps -ef|grep $fileName|grep -v grep|awk '{print $2}'|wc -l` -ne 0 ]
    then
      ps -ef|grep $fileName|grep -v grep|awk '{print $2}'|xargs kill -9
    fi
}
#创建
#参数一个:cpu空闲时间和工作时间的比率,默认是1,对应脚本入参的第三个参数[sleeptime/worktime]
start_thread(){
    if [ "$1" == "" ]
    then
      rate=1
    else
      rate=$1
    fi
cat <<EOF > $fileName.c
    #include <time.h>
    #include <sys/time.h>
    #include <unistd.h>
    #include<stdlib.h>
    #include<math.h>

    #define DWORD unsigned long 
    #define UINT64 unsigned long long 
    const int INTERVAL = 300;

    int main(int argc,char* argv[] )
    {
        struct timeval tms;
        int half = INTERVAL/2,i;
        clock_t startTime = 0;
        while(1)
        {
            timerclear(&tms);
            gettimeofday(&tms,NULL);
            UINT64 startTime = tms.tv_usec;
            while(1)
            {
                timerclear(&tms);
                gettimeofday(&tms,NULL);
                UINT64 NowTime = tms.tv_usec;
                if((NowTime - startTime)/1000 > INTERVAL)
                    break;
            }
            if(usleep(INTERVAL*1000*$rate))
                exit(-1);    
        }
        return 0;
    }
EOF
    echo "编译 $fileName.c ... "
    gcc $fileName.c -o $fileName
    if [ $? -eq 0 ]; then
        echo "执行$fileName 开始... "
        echo
        cpuNum=`cat /proc/cpuinfo |grep processor|wc -l`
        for i in `seq 1 $cpuNum`
        do
        echo " ... 执行$fileName 第 "$i"次开始 ... "
        ./$fileName &
        echo " ... 执行$fileName 第 "$i"次结束 ... "
        echo
        done
        echo "执行$fileName 结束... "
      echo ""
    else
        echo "编译 $fileName.c ERROR! "
    fi
}
#自动调整cpu的使用率,使其满足cpu_Rate
# 第一个:sleep/work
times=1
adjustment(){
  stop_thread
  start_thread $1
  cur_cpu=`mpstat 1 5|awk '{if(NR==8){print $3}}'`
  if [ "$cur_cpu" \< "$(expr $cpu_Rate - $adjustRange)" -o "$cur_cpu" \> "$(expr $cpu_Rate + $adjustRange)" ]
  then
    echo "======期望cpu使用率:$cpu_Rate=====当前cpu使用率:$cur_cpu==========开始第【$((times++))】次调整==========="
    echo ""
    adjustment $(expr $cur_cpu/$cpu_Rate*$1)
  else
    echo "======期望cpu使用率:$cpu_Rate=====当前cpu使用率:$cur_cpu==========结束调整并退出========="
    echo ""
  fi
}


if [ $1 == 'start' ]
then
  stop_thread
  start_thread $3
fi
if [ $1 == 'adjust' ]
then
  stop_thread
  adjustment $3
fi
if [ $1 == 'stop' ]
then
  stop_thread
fi
目录
相关文章
|
12天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
329 6
|
4天前
|
关系型数据库 MySQL Java
实时计算 Flink版操作报错之整内存和cpu分配之后启动报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
7天前
|
存储 弹性计算 监控
【阿里云弹性计算】深入阿里云ECS配置选择:CPU、内存与存储的最优搭配策略
【5月更文挑战第20天】阿里云ECS提供多种实例类型满足不同需求,如通用型、计算型、内存型等。选择CPU时,通用应用可选1-2核,计算密集型应用推荐4核以上。内存选择要考虑应用类型,内存密集型至少4GB起。存储方面,系统盘和数据盘容量依据应用和数据量决定,高性能应用可选SSD或高效云盘。结合业务特点和预算制定配置方案,并通过监控应用性能适时调整,确保资源最优利用。示例代码展示了使用阿里云CLI创建ECS实例的过程。
75 5
|
12天前
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
21 3
|
12天前
|
监控 Linux API
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
184 4
|
12天前
|
运维 Linux Docker
Docker详解(十三)——Docker容器的内存和磁盘I/O限制配置
Docker详解(十三)——Docker容器的内存和磁盘I/O限制配置
252 1
|
12天前
|
存储 弹性计算 运维
|
12天前
|
存储 弹性计算 运维
|
12天前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
53 4
|
12天前
|
移动开发 运维 监控
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!