我写了一个堪称愚蠢的小工具

78 天前
 shawnbluce

不知道各位有没有那种需要起一个程序占用特定 CPU 和内存的需求,我最近是有。在公司的一个需求自测的时候,需要设置「 CPU 告警阈值」和「内存告警阈值」,然后通过占用 CPU 和内存的方式触发告警。

之前占用 CPU 我都是开一个 Python Console 然后计算 999999999999999 ** 99999999999999999,虽然能用但非常不优雅:每个 Python 进程只能占用 1 个核心且不能占用 0.5 个核心。内存则是 dd if=/dev/zero of=output_file bs=4k count=xxx 来生成一个固定大小的文件,然后用 Python open('output_file').read(),同样是又麻烦又不优雅。

所以开发了这个叫 eat 的小工具,可以通过下面的命令占用指定的 CPU 和内存数量

eat -c 4            # 占用 4 个 CPU 核
eat -c 100%         # 占用所有 CPU 核
eat -m 4g           # 占用 4GB 内存
eat -m 20m          # 占用 20MB 内存
eat -m 100%         # 占用所有内存
eat -c 2.5 -m 1.5g  # 占用 2.5 个 CPU 核和 1.5GB 内存
eat -c 3 -m 200m    # 占用 3 个 CPU 核和 200MB 内存
eat -c 100% -m 100% # 占用所有 CPU 核和内存

贴上 GitHub 地址各位有兴趣可以试一下~

8844 次点击
所在节点    程序员
53 条回复
lipd
77 天前
@cominghome 我怀疑咱俩是同事
bzw875
77 天前
加需求
吃掉磁盘空间
吃掉 GPU
吃掉带宽
WeweHave
77 天前
同意,加一个百分比控制最好了
shiyuu
77 天前
百度有一个 100Gbps 的网络性能与压力测试软件

https://github.com/baidu/dperf/blob/main/README-CN.md
lucasj
77 天前
请问这行代码是什么意思

_ = 1 + 1
IMengXin
77 天前
政府申请服务器,因为高峰期配置不够申请的高配置,然后他们要求全天占用都需要在 50%以上,包括晚上....
rick13
77 天前
之前做性能测试,但测试实在太离谱,顶多占用不到 10%的 cpu ,但测试要求需要占用到 50%以上,当时就写了个 while 。。。
aeof
77 天前
这是正经的需求,叫做混沌测试,阿里有开源一个 https://github.com/chaosblade-io/chaosblade 。类似的需求还有弱网、丢包等,感兴趣可以试试
ktyang
77 天前
啊 为啥我第一反应是画正弦曲线
jqtmviyu
77 天前
arm64 好像用不了(骁龙 625)

./eat_linux_arm64 -c 2 -m 200m
zsh: segmentation fault ./eat_linux_arm64 -c 2 -m 200m

搜了下发现已经有轮子了 stress
stress --cpu 4 --vm 1 --vm-bytes 1G --timeout 60
zzh0410
77 天前
貌似有个 lookbusy
shawnbluce
77 天前
@jqtmviyu get 回头找一台 arm 的机器来试试
gerorim
76 天前
@shawnbluce
-c 指定 CPU 百分比时,radio 从 float 直接转 int 会损失精度,导致 idle / busy 时段计算错误,进而影响 CPU 占用量。
另外,比较常见的需求时,比如我要压测 30 分钟,有个时限参数就能派上用场。

综上,提需求不如上手改,给楼主提了个改进 PR https://github.com/shawn-bluce/eat/pull/2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1054706

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX