lookbusy – 用于 Linux 系统的负载达标工具

lookbusy – 用于 Linux 系统的负载达标工具

简介

在 Linux 系统的使用场景中,有时我们需要让系统看起来处于高负载状态,或者模拟一定的负载环境进行测试等工作。因此 lookbusy 的工具就能派上大用场。它可以虚拟产生系统 CPU、内存、磁盘等负载,营造出系统繁忙的假象,比如一些性能指标考核,dddd。

安装方法

官方地址:lookbusy — a synthetic load generator

lookbusy 的代码仓库位于https://github.com/flow2000/lookbusy ,获取并安装它有多种方式:

  1. 通过Git克隆安装
  • 命令:git clone https://github.com/flow2000/lookbusy
  1. 下载压缩包安装
  • 直接下载:wget https://github.com/flow2000/lookbusy/archive/refs/heads/master.zip

  • 通过代理下载(如果需要):wget https://ghproxy.com/https://github.com/flow2000/lookbusy/archive/refs/heads/master.zip

  • 解压:unzip master.zip

编译安装

cd lookbusy
chmod a+x configure
./configure
make && make install

CPU使用

  1. -c:指定每个CPU的期望利用率,以百分比为单位,默认值为50%。如果选择curve(曲线)CPU使用模式,则需要给出MIN - MAX形式的范围。

  2. -n:确定保持忙碌的CPU数量,默认值是自动检测出的全部核心数。

  3. -r

    :有两种模式可供选择。

  • fixed模式:试图保持指定百分比的CPU利用率。
  • curve模式:产生的利用率水平会在给定间隔内上下浮动。
  1. -p:在曲线模式下,此选项用于设置峰值利用率的偏移量,默认单位是秒,也可以添加m(分钟)、h(小时)、d(天)作为其他单位。

  2. -P:与-p类似,也是用于设置曲线内峰值利用率的偏移量,可添加mhd作为其他单位。

示例

  • lookbusy -c 50:占用所有CPU核心各50%。
  • lookbusy -c 50 -n 2:占用两个CPU核心各50%。
  • lookbusy -c 50 - 80 -r curve:占用所有CPU核心在50% – 80%左右浮动。

内存使用

  1. -m:以字节为单位指定内存量,后面可跟KBMBGB(等其他单位)。
  2. -M:设置单位为毫秒,默认值为1000。

示例

  • lookbusy -m 128MB -M 1000:每1000毫秒循环释放并分配128MB内存。

磁盘使用

  1. -d:用于指定磁盘流失的文件大小,以字节为单位,后面可跟KBMBGBTB(等其他单位)。
  2. -b:用于I/O的块大小,以字节为单位,后面可跟KBMBGB
  3. -D:设置迭代之间的休眠时间,以毫秒为单位,默认值为100。
  4. -f:指定要用作缓冲区的文件/目录的路径,默认为/tmp

示例

  • lookbusy -d 1GB -b 1MB -D 10:每10毫秒循环进行1MB磁盘写入,临时文件不超过1GB。

所有参数

-h  –help  帮助
-v  –verbose  输出详细信息
-q  –quiet  安静运行,只有在错误时输出信息
-c  –cpu-utuil=PCT, –cpu-util=RANGE  需要的 CPU 利用率,默认用百分比描述,比如 50%,范围描述需要按 最小值 - 最大值 的格式给定范围
-n  –ncpus=NUM  保持忙的 CPU 数量,默认自动检测
-r  –cpu-mode=MODE  利用模式:fixed 或 curve,具体见 lookbusy(1)
-p  –cpu-curve-peak=TIME  曲线内峰值利用率的偏移量,默认单位是秒,可以添加 m、h、d 作为其他单位
-P  –cpu-curve-period=TIME  利用率曲线期持续时间,默认单位是秒,可以添加 m、h、d 作为其他单位
-m  –mem-util=SIZE  使用内存的数量,默认单位字节,可以用 KB、MB、GB 表示其他单位,具体见 lookbusy(1)
-M  –mem-sleep=TIME  每次迭代之间的 sleep 时间,单位是毫秒,默认值为 1000
-d  –disk-util=SIZE  使用磁盘的文件尺寸大小,默认是字节,可以跟 KB、MB、GB、TB 来表示其他单位
-D  –disk-sleep=TIME  两次迭代之间的 sleep 时间,单位是毫秒,默认值为 1000
-f  –disk-path=PATH  使用的缓存文件/目录的路径,默认为/tmp;可以多次指定(specify multiple times for additional paths)

完整脚本例子

#!/bin/bash
# chmod +x /usr/local/bin/lookbusy_start.sh && echo "/usr/local/bin/lookbusy_start.sh" >> /etc/rc.d/rc.local && cat /etc/rc.d/rc.local && cat /etc/rc.local
# 设置 VCPU 平均利用率 ≥ 8%,内存平均利用率 ≥ 10%
# nohup /usr/local/bin/lookbusy -c 8-15 -r curve -m $(($(free -m | awk '/Mem:/ {print $2}') * 10 / 100))MB > /dev/null 2>&1 &

# 获取当前内存利用率
mem_usage=$(free | awk '/Mem:/ {printf "%.0f", $3*100/$2 }')
# 获取系统总内存(单位:MB)
total_memory=$(free -m | awk '/Mem:/ {print $2}')
# 计算 10% 的总内存(单位:MB)-->暂时不能临界,因此设置大于11%
target_mem=$((total_memory * 11 / 100))
# 获取当前已使用内存(单位:MB)
used_mem=$(free -m | awk '/Mem:/ {print $3}')

# 暂时不能临界,因此设置大于11%
if [ $mem_usage -lt 11 ]; then
    if [ $used_mem -lt $target_mem ]; then
        # 已使用内存小于目标内存,计算差值
        mem_to_use=$((target_mem - used_mem))
        nohup /usr/local/bin/lookbusy -c 8-15 -r curve -m ${mem_to_use}MB > /dev/null 2>&1 &
    else
        # 已使用内存已经达到或超过目标内存,不额外使用内存
        nohup /usr/local/bin/lookbusy -c 8-15 -r curve > /dev/null 2>&1 &
    fi
else
    # 内存利用率大于等于 10% 时的操作
    nohup /usr/local/bin/lookbusy -c 8-15 -r curve > /dev/null 2>&1 &
fi

评论

  1. 关关
    Macintosh Chrome 133.0.0.0
    5 天前
    2025-2-15 16:03:03

    UI这么时髦 突然有点不习惯

    • 博主
      关关
      Windows Edge 132.0.0.0
      3 天前
      2025-2-17 9:01:49

      话说,前段时间让你买恒科ETF买了吗

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇