Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Linux网站汇总
  • Shell使用详解
  • 自动化运维脚本集合
  • 模拟占用磁盘内存CPU
    • 模拟使用内存(实际占用)
    • 模拟占用内存(缓存占用)
    • 模拟生成文件占用磁盘
      • 命令
      • 通用脚本
    • 模拟使用CPU
  • Linux释放缓存
  • Linux监控进程磁盘邮件预警
  • 《Nginx教程》笔记
  • Linxu服务器文件双向同步-rsync+sersync
  • Linux文件清空的几种方法
  • Linux日志自动清理方案
  • Linux执行脚本加密
  • Linux安装包制作
  • Crontab详解
  • Linux上传下载百度网盘文件
  • 内网穿透
  • 内网穿透-无需公网服务器
  • 一文搞定Jenkins自动化部署程序
  • Linux配置代理请求
  • Linux监控之夜莺
  • Proxmox安装
  • Proxmox创建CentOS虚拟机
  • Proxmox创建Windows虚拟机
  • Debian系统安装OpenVPN
  • Docker快速部署OpenVPN
  • 用户登录时执行检查脚本
  • 一键配置Linux镜像源
  • RustScan端口扫描
  • 前置机、堡垒机、跳板机区别
  • Linux添加回收站功能
  • Linux系统详细信息监控-Grafana+Prometheus
  • 再见XShell:轻量又高性能的SSH工具AI加持快人一步
  • Unbuntu安装deb文件
  • Ubuntu远程连接时分辨率问题
  • Ubuntu中Clash报错
  • Linux可视化监控
  • Vim复制自动缩进问题处理
  • 无所不能的BusyBox:如何用它打造极小的Linux环境
  • 运维
Jast-zsh
2022-03-30
目录

模拟占用磁盘内存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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

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

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

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 模拟生成文件占用磁盘

# 命令

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

# 通用脚本

#!/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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 模拟使用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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
上次更新: 2023/03/10, 16:49:38
自动化运维脚本集合
Linux释放缓存

← 自动化运维脚本集合 Linux释放缓存→

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式