一、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 para c _ num of p) / (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)
}
}

二、内存使用率

robert-mcdermott/memoryleaker: A utility that simulates a memory leak for testing and diagnostic purposes. (github.com)

快速进行内存泄露至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、内存、硬盘使用率的更多相关文章

  1. 一个统计 CPU 内存 硬盘 使用率的shell脚本

    一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 #!/bin/bash #This script is use for describle CPU Hard Memery Uti ...

  2. Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数)

    [转]Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题.我是在运维过程中要用到的.因此,今天给出Wind ...

  3. Windows 性能监视器的基本指标(CPU,内存,硬盘参数)

    转载:http://kms.lenovots.com/kb/article.php?id=7045 Windows 性能监视器的基本指标(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的 ...

  4. VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试

    现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑 ...

  5. centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息

    1.系统 1.1版本 uname -a 能确认是64位还是32位,其它的信息不多 [root@localhost ~]# uname -a Linux localhost.localdomain 3. ...

  6. linux 查看cpu 内存 硬盘 文件夹大小

    文件夹大小 显示cpu使用率 top 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | w ...

  7. DSAPI 获取实时统计信息CPU/内存/硬盘/网络

    有时,我们需要获取当前计算机中CPU.内存.硬盘.网络等实时信息,如下图:\ 要实现上述几项信息的获取,通常需要使用Timer控件来间隔获取,以便刷新最新的数据. 本示例中,放一个Timer控件,放一 ...

  8. python glances来监控linux服务器CPU 内存 IO使用

    什么是 Glances? Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具. 通过 Glances,我们可以监视 ...

  9. 查看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 ...

  10. CPU 内存 硬盘的区别

    第一点:CPU 是处理器,内存和硬盘是存储器,受CPU 的控制.  第二点:由于内存的速度很快,在电脑运行的过程中,CPU通常只与内存交换数据,但内存断电数据就会全部丢失,因此电脑使用硬盘作为主要的存 ...

随机推荐

  1. 实现简单的`Blazor`低代码

    本篇博客只实现基本的低代码,比如新增组件,动态修改组件参数 创建项目 首先创建一个空的Blazor Server,并且命名LowCode.Web 实现我们还需要引用一个Blazor组件库,由于作者用M ...

  2. 读写wav格式文件

    读写wav格式文件 本文所有相关代码(包括未来的)均可在该代码库找到 https://gitcode.net/PeaZomboss/learnaudios 本文代码在MinGW-w64 gcc/g++ ...

  3. 郁金香 中级班 1.c++的类和对象

    #include<stdio.h> class 生物 { public: 生物() { printf("我是构造函数\n"); } int id1; int id2; ...

  4. .NET微服务系统迁移至.NET6.0的故事

    本次迁移涉及的是公司内部一个业务子系统,该系统是一个多样化的应用,支撑着公司的多个业务方向.目前,该系统由40多个基于.NET的微服务应用构成,使用数千个CPU核心和数TB内存,在数百个Linux容器 ...

  5. NESSUS安装破解_Windows(Linux一直没成功)

    一.安装 1. nessus官网下载安装包https://www.tenable.com/downloads/nessus ps:我是8.*版本的,然后找对应的系统下载安装包 2.点击安装包进行安装, ...

  6. JZOJ 5174

    \(\text{Problem}\) 给你一张 \(n\) 个结点,\(m\) 条边的无向图,每个结点都有一个整数权值.你需要执行一系列操作.操作分为三种,如下表所示. 操作 备注 \(\text{D ...

  7. JZOJ 3570. 【GDKOI2014】壕壕的寒假作业

    解析 这道题比较水. 求最快什么时候做完作业? 如果要最快完成第i份作业,那么是i的前继那些作业都要完成之后才能够完成i,所以,为了尽快完成i,我们要把i的前继的作业全部先做完. 最慢什么时候做完作业 ...

  8. 如何在电脑上配置Vue开发环境

    一,开发环境 : Node JS(npm) Visual Studio Code(前端IDE) 安装NodeJS 下载地址: nodejs中文网 Visual Studio Code 官网下载地址 h ...

  9. LeetCode算法训练-动态规划

    欢迎关注个人公众号:爱喝可可牛奶 LeetCode算法训练-动态规划 理论知识 动态规划当前状态是由前一个状态推导出来的,而贪心没有状态的转移 动态规划需要借助dp数组,可能是一维也可能是二维的 首先 ...

  10. sqlserver 循环插入脚本

    Declare @i int = 0 -- 说明需要插入的列值 WHILE @i< 1000000 BEGIN -- 需要写入数据的值 insert into ... set @i = @i + ...