首页 / LINUX / Linux极端场景模拟实现
Linux极端场景模拟实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux极端场景模拟实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2773字,纯文字阅读大概需要4分钟。
内容图文
一、高CPU占用
1.1 使用长时间任务
高cpu很自然会想到的是让操作系统不停地在做事,而不停做事的有做一件很久的事和做死循环两种实现方式。
但是现践来看不管是哪种实现都只能占用一定比例的cpu,在cpu原本空闲的情况下很难使cpu占用到百分之八九十。
# 计算/dev/zero的sha1值 sha1sum /dev/zero # 不断从/dev/zero读数据输出到/dev/null dd if=/dev/zero of=/dev/null # 列循环 while true; do echo; done
1.2 使用stress实现
# 安装 yum install stress -y # 查看当前cpu核心数 lscpu # 指定多少核心就会实现全占多少核心 # 我这里指定全占4个核,持续10秒 stress --cpu 4 --timeout 10
参考:
https://stackoverflow.com/questions/2925606/how-to-create-a-cpu-spike-with-a-bash-command
https://www.tecmint.com/linux-cpu-load-stress-test-with-stress-ng-tool/
二、高IO占用
2.1 使用dd模拟高io
# 高速写测试 # 从/dev/zero伪设备读,输出到当前目录下的test.dd文件,每次8k,一共30万次(约2.4G) dd if=/dev/zero of=test.dd bs=8k count=300000 # 高写读测试 # 要测试的/dev/sda设备读取,输出到/dev/null伪设备,每次8k,一共30万次(约2.4G) dd if=/dev/sda of=/dev/null bs=8k count=300000 # 如果只是想测试磁盘最大读速可使用hdparm # hdparm -t /dev/sda
2.2 使用stress模拟高io
# 使用4个进程对当前目录对应设备进行高io stress -d 4
三、模拟高内存占用
# 占用2 * 1G内存,持续10秒 stress-ng --vm 2 --vm-bytes 1G --timeout 10 # 占用90%的内存 stress-ng --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1
参考:
https://unix.stackexchange.com/questions/99334/how-to-fill-90-of-the-free-memory
四、模拟大量文件场景
有时候我们需要一个存在大量文件的环境,这就涉及如何快速创建大量文件的问题。
最直观的就是写个几层循环,不断touch文件,如下:
dir_list=("aaaaa" "bbbbb" "ccccc" "ddddd" "eeeee") abs_path="/test" # 最终整个文件数是 5 * 5 * 100000 for tmp_dir in ${dir_list[@]} do abs_path="${abs_path}/${tmp_dir}" for tmp_dir_inner in ${dir_list[@]} do abs_path_inner="${abs_path}/${tmp_dir_inner}" # echo "mkdir ${abs_path_inner}" mkdir -p ${abs_path_inner} for index in {1..100000} do # echo "create ${abs_path_inner}/test${index}.txt" touch "${abs_path_inner}/test${index}.txt" done done done
但实际来看这种一次生成一个文件的循环,速度还是比较慢的。
可以把 touch test.txt改成touch test.txt.{1..1000}等形式,这样就能从一次创建1个文件变为一次创建1000个文件,速度会快很多。
但touch一次创建的文件数是有上限的(感觉本质是总的文件名称的长度),最多大概是10000这样,超过了会报错,本质不清楚。
dir_list=("aaaaa" "bbbbb" "ccccc" "ddddd" "eeeee") abs_path="/test" # 最终整个文件数是 5 * 5 * 100 * 1000 for tmp_dir in ${dir_list[@]} do abs_path="${abs_path}/${tmp_dir}" for tmp_dir_inner in ${dir_list[@]} do abs_path_inner="${abs_path}/${tmp_dir_inner}" # echo "mkdir ${abs_path_inner}" mkdir -p ${abs_path_inner} for index in {1..100} do # echo "create ${abs_path_inner}/test${index}.txt" touch ${abs_path_inner}/${index}_{1..1000} done done done
内容总结
以上是互联网集市为您收集整理的Linux极端场景模拟实现全部内容,希望文章能够帮你解决Linux极端场景模拟实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。