一、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. 亲测有效! TG Pro 实时温度工具 V2.7.6 for mac 破解版

    亲测有效! TG Pro 实时温度工具 V2.7.6 for mac 破解版 TG Pro (Temperature Gauge Pro) 是一款专业显示你的Mac实时温度的软件,可以在系统内的菜单栏 ...

  2. 聊聊火热的 ChatGPT(我帮大伙问了几个比较关心的问题)

    如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/L9tZy_KWnE1kf0E3HNhJhQ 本文大概 2562 个字,阅读需花 15 分钟 内 ...

  3. osx安装mpd和ncmpcpp

    简介 mdp 是一款开源的音乐播放软件, 全名为 media player daemon , 从字面意思理解, 就是一个后台播放进程. 不同于传统的音乐播放软件集成了播放解码和界面, mpd 只是一个 ...

  4. 代码随想录算法训练营day16 | leetcode ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

    基础知识 二叉树的多种遍历方式,每种遍历方式各有其特点 LeetCode 104.二叉树的最大深度 分析1.0 往下遍历深度++,往上回溯深度-- class Solution { int deep ...

  5. 结合代码和内存变化图一步步弄懂JVM的FullGC

    1.年轻代存活的对象太多,老年代了放不下 01.示例代码 public class DemoTest1 { public static void main(String[] args) { byte[ ...

  6. USACO2023Feb游记

    由于学校要求,过来打 USACO. 由于上次已经打到白金了,所以继续. 然后还是 AK 了. 感觉题意很迷惑,所以都翻译一下. Hungry Cow Bessie 很饿,每天晚饭如果有干草就会吃 \( ...

  7. DevExpress gridControl 字体居住

    设置列的标题居中显示: Designer - Views -右侧输入框中输入Appearance-HeaderPanel-TextOptions-设置HAlignment为Center 设置单元格内容 ...

  8. XAF特性属性记录

    1.[XafDisplayName("名称")] (1)在类上面表示修改左侧菜单的名称 (2)在字段属性上使用表示修改字段名称 2.[ImageName("Actions ...

  9. P5318 【深基18.例3】查找文献题解(链式前向星)

    P5318 [深基18.例3]查找文献题解 用head记录这一起点的最后一条边, next记录这一起点的上一条边. 注意要按照参考文献的倒叙排序(要按顺序看,而链式前向星是逆着来的,也就是为什么最简单 ...

  10. reids 启动方法

    ---恢复内容开始--- 在windows环境下启动redis服务,前提是你安装好了,启动如下: 一,进入redis的安装目录下,在地址栏输入"cmd",回车 二,然后会进入cmd ...