人为提升服务器CPU、内存、硬盘使用率
一、CPU使用率
vikyd/go-cpu-load: Generate CPU load on Windows/Linux/Mac (github.com)
所有CPU核心负载30%运行10秒钟
./cpu -p 30 -t 10
所有CPU核心负载30%持续运行
./cpu -p 30
后台运行,CPU使用率不低于20%
nohup ./cpu -p 21 >> cpu.log 2>&1 &
只让2个CPU核心负载30%运行10秒钟
./cpu -p 30 -c 2 -t 10
all CPU load= (num of parac_ num ofp) / (all cores count of CPU _ 100)- may not specify cores run the load only, it just promise the
all CPU load, and not promise each cores run the same load
参数
--coresCount value, -c value how many cores (optional, default: 8) --timeSeconds value, -t value how long (optional, default: 2147483647) --percentage value, -p value percentage of each specify cores (required) --help, -h show help
源代码
package main import (
"log"
"os"
"runtime" cli "github.com/urfave/cli/v2"
) // EINVAL Error Code: #define EINVAL 22 /* Invalid argument */
const EINVAL = 23 const maxInt32 = 2147483647
const unLimitedTime = maxInt32
const missPercentageVal = 0 func main() {
var coresCount int
var timeSeconds int
var percentage int app := cli.NewApp() // app.Version = "0.0.2" app.Flags = []cli.Flag{
&cli.IntFlag{
Name: "coresCount",
Aliases: []string{"c"},
Value: runtime.NumCPU(),
Usage: "how many cores",
Destination: &coresCount,
},
&cli.IntFlag{
Name: "timeSeconds",
Aliases: []string{"t"},
Value: unLimitedTime,
Usage: "how long",
Destination: &timeSeconds,
},
&cli.IntFlag{
Name: "percentage",
Aliases: []string{"p"},
Value: missPercentageVal,
Usage: "percentage of each specify cores",
Destination: &percentage,
},
} app.Action = func(c *cli.Context) error {
// fmt.Println("coresCount: ", coresCount)
// fmt.Println("timeSeconds: ", timeSeconds)
// fmt.Println("percentage: ", percentage)
// fmt.Println("------") if coresCount < 1 || coresCount > runtime.NumCPU() {
return cli.NewExitError("coresCount not correct must between 1 - `max CPU cores`", EINVAL)
} if timeSeconds <= 0 {
return cli.NewExitError("timeSeconds not correct must be positive int", EINVAL)
} if percentage <= 0 || percentage > 100 {
return cli.NewExitError("percentage must between 1 - 100", EINVAL)
}
RunCPULoad(coresCount, timeSeconds, percentage)
return nil
} err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}
二、内存使用率
快速进行内存泄露至2GB
$ ./memory -d 5 -l 2048
Leaked: 2048 MiB ███████▒▒▒
Holding at 2048 MiB
后台运行内存泄露至13GB
nohup ./memory -l 13312 >> memory.log 2>&1 &
参数
./memory [-d <泄露延迟 ms; 默认 100>] -d int 选项: 调整泄漏率的延迟(毫秒); 默认 100ms -l int 选项: 内存泄漏上限 (MiB); 默认无上限
源代码
// A utility simulates a memory leak for testing, diagnostic purposes
package main import (
"flag"
"fmt"
"os"
"runtime"
"runtime/debug"
"time" "github.com/briandowns/spinner"
) func main() {
// define and set default command parameter flags
var dFlag = flag.Int("d", 100, "Optional: delay is ms to adjust the leak rate; default is 100")
var lFlag = flag.Int("l", 1048576, "Optional: limit the leak to this many MiBs")
var hFlag = flag.Bool("h", false, "print usage information") // usage function that's executed if a required flag is missing or user asks for help (-h)
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "\nUsage: %s [-d <leak delay in ms; deafaults to 100> -l <leak limit in MiB>]\n", os.Args[0])
flag.PrintDefaults()
fmt.Println()
}
flag.Parse() //provide help (-h)
if *hFlag == true {
flag.Usage()
os.Exit(0)
} // a channel to use a hold when the memory limit it reached
hold := make(chan bool) // a spinner that displays how much memory has leaked and when it holding
go func(hold chan bool, lFlag int) {
s := spinner.New(spinner.CharSets[35], 250*time.Millisecond)
for {
mem := memUsage()
s.Prefix = fmt.Sprintf("Leaked: %d MiB ", mem)
s.Start()
s.Color("magenta")
time.Sleep(1 * time.Second)
s.Restart()
// if we've reached the limit, update display and hold
if mem >= uint64(lFlag) {
s.Color("green")
s.Prefix = fmt.Sprintf("Holding at %d MiB ", mem)
s.UpdateCharSet(spinner.CharSets[28])
s.UpdateSpeed(1 * time.Second)
s.Restart()
<-hold
}
}
}(hold, *lFlag) // Although the "leak" var should contiue to grow, the GC is somehow getting in the way, disabling
debug.SetGCPercent(-1)
var leak string
KB := `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` // start leaking indefinitely unless a limit has been provided and met
for {
leak += KB
time.Sleep(time.Duration(*dFlag) * time.Millisecond)
mem := memUsage()
// if we've reached the limit, hold
if mem >= uint64(*lFlag) {
<-hold
}
}
} func memUsage() uint64 {
var m runtime.MemStats
runtime.ReadMemStats(&m)
return bToMb(m.Alloc)
} func bToMb(b uint64) uint64 {
return b / 1024 / 1024
}
人为提升服务器CPU、内存、硬盘使用率的更多相关文章
- 一个统计 CPU 内存 硬盘 使用率的shell脚本
一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 #!/bin/bash #This script is use for describle CPU Hard Memery Uti ...
- Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数)
[转]Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题.我是在运维过程中要用到的.因此,今天给出Wind ...
- Windows 性能监视器的基本指标(CPU,内存,硬盘参数)
转载:http://kms.lenovots.com/kb/article.php?id=7045 Windows 性能监视器的基本指标(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的 ...
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑 ...
- centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息
1.系统 1.1版本 uname -a 能确认是64位还是32位,其它的信息不多 [root@localhost ~]# uname -a Linux localhost.localdomain 3. ...
- linux 查看cpu 内存 硬盘 文件夹大小
文件夹大小 显示cpu使用率 top 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | w ...
- DSAPI 获取实时统计信息CPU/内存/硬盘/网络
有时,我们需要获取当前计算机中CPU.内存.硬盘.网络等实时信息,如下图:\ 要实现上述几项信息的获取,通常需要使用Timer控件来间隔获取,以便刷新最新的数据. 本示例中,放一个Timer控件,放一 ...
- python glances来监控linux服务器CPU 内存 IO使用
什么是 Glances? Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具. 通过 Glances,我们可以监视 ...
- 查看CPU 内存 硬盘 网络 查看进程使用的文件 uptime top ps -aux vmstat iostat iotop nload iptraf nethogs
#安装命令 yum install sysstat #包含 iostat vmstat yum install iotop yum install nload yum install iptraf ...
- CPU 内存 硬盘的区别
第一点:CPU 是处理器,内存和硬盘是存储器,受CPU 的控制. 第二点:由于内存的速度很快,在电脑运行的过程中,CPU通常只与内存交换数据,但内存断电数据就会全部丢失,因此电脑使用硬盘作为主要的存 ...
随机推荐
- 解决 Vue3 中路由切换到其他页面再切换回来时 Echarts 图表不显示的问题
问题复现: 正常状态下: 切换到其他页面再切换回来: 问题解决: 其实这个问题的解决方式官网写得清清楚楚,我们看看官网怎么解决的: 接下来我用代码解释下这句话(正确的做法是,在图表容器被销毁之后,调用 ...
- JZOJ 2937. 【NOIP2012模拟8.9】监听还原
题面 分析 注意读题 然后显然字符串哈希 \(Code\) #include<cstdio> #include<cstring> using namespace std; ty ...
- VUE项目Webpack3升级为webpack4总结
前言: 2018年8月25号webpack4正式发布,webpack4引入了零配置的概念(实际配置下来还是要写不少配置),官方宣传能够提升构建速度 webpack3转webpack4官方说明: htt ...
- 【前端】js实现图片自适应
一.问题分析 既然要实现图片自适应,那就要对不同的图片尺寸进行分类处理,我最开始是分了5类 对于长宽都不超过的情况 -- 应该不改变图片本身比例 对于长宽都超过的情况 -- 应该是根据图片比例进行缩小 ...
- AD域
一.介绍 [域] 存放在 [活动目录] 存放在 [域控制器] 二.域和活动目录的规划 三.安装域控制器
- ChatGpt聊天API使用
昨天ChatGpt发布了聊天API,新增了两个模型,目前还是测试阶段 gpt-3.5-turbo 功能强大的GPT-3.5模型,专门针对聊天做了优化 gpt-3.5-turbo-0301 此模型只支持 ...
- 银河麒麟V10在线安装Postgresql步骤
参考资料https://blog.csdn.net/u010430471/article/details/81663248 https://blog.csdn.net/qq_41619524/arti ...
- vue学习笔记:组件
组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码,说白了就是一组可以重复使用的模板.组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽 ...
- vscode 开发c++
makefile.mk #makefile.mk 公共头文件 ifndef TARGET # /root/make/src/test_include # notdir TARGET:=$(notdir ...
- SAP MD04屏幕显示增强
需求 在看物料MRP结果的时候,业务人员想要看到工单批次,工单批次是我们这边工单下达后传输到其他系统,然后由其他系统回传回来的. 开发步骤 主要使用二代增强出口:M61X0002 创建增强项目 事务码 ...