Skip to content
baiyeaPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

Go-Occupy

一个用于监控和调整系统资源使用比例的Go语言工具。可以设置目标的内存、CPU和磁盘使用百分比,程序会自动调整以达到目标比例。

功能特性

  • 🖥️ 内存监控: 实时监控系统内存使用情况,自动调整内存占用
  • ⚡ CPU监控: 监控CPU使用率,通过创建负载来达到目标使用率
  • 💾 磁盘监控: 监控磁盘使用情况,通过创建/删除临时文件来调整使用率
  • ⏱️ 实时监控: 可配置的监控间隔,默认5秒
  • 🎛️ 灵活配置: 支持命令行参数配置各种资源的目标使用率

运行(Docker)

# 使用默认配置运行(内存占用50%, CPU占用30%, 硬盘占用40%)
docker run -it --rm baiyea/go-occupy

# 自定义示例(内存占用50%, CPU占用50%, 硬盘占用50%)
docker run -it --rm baiyea/go-occupy -m 50 -c 50 -d 50

编译运行

  1. 确保已安装Go 1.21或更高版本
  2. 克隆或下载项目
  3. 安装依赖:
go mod tidy

使用方法

基本用法

# 使用默认配置运行
go run main.go

# 编译后运行
go build -o go-occupy
./go-occupy

自定义配置

# 设置内存使用率为60%,CPU使用率为40%,磁盘使用率为80%
./go-occupy --memory 60 --cpu 40 --disk 80

# 使用短参数
./go-occupy -m 60 -c 40 -d 80

# 设置监控间隔为10秒
./go-occupy -m 50 -c 30 -d 40 -i 10s

命令行参数

参数 短参数 默认值 说明
--memory -m 50.0 目标内存使用百分比
--cpu -c 30.0 目标CPU使用百分比
--disk -d 40.0 目标磁盘使用百分比
--interval -i 5s 监控间隔

示例

# 监控模式:内存50%,CPU30%,磁盘40%
./go-occupy -m 50 -c 30 -d 40

# 高负载模式:内存80%,CPU70%,磁盘90%
./go-occupy -m 80 -c 70 -d 90

# 低负载模式:内存20%,CPU10%,磁盘50%
./go-occupy -m 20 -c 10 -d 50

工作原理

内存调整

  • 当实际内存使用率低于目标时,程序会分配内存来达到目标使用率
  • 分配的内存会被实际使用,避免被系统回收

CPU调整

  • 当实际CPU使用率低于目标时,程序会创建多个goroutine来产生CPU负载
  • 每个CPU核心会运行一个计算密集型循环

磁盘调整

  • 当实际磁盘使用率低于目标时,程序会在/tmp目录创建临时文件
  • 当使用率过高时,会自动清理这些临时文件

注意事项

⚠️ 重要提醒:

  • 此工具会实际占用系统资源,请谨慎使用
  • 建议在测试环境中使用,避免在生产环境中运行
  • 程序会创建临时文件,请确保有足够的磁盘空间
  • 使用Ctrl+C可以安全停止程序

依赖

  • github.com/shirou/gopsutil/v3: 用于获取系统资源信息
  • github.com/spf13/cobra: 用于命令行界面

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages