参数:
- -u:默认参数,显示各进程的 CPU 使用统计
- -r:显示各进程的内存使用统计
- -d:显示各进程的 IO 使用情况
- -p:指定进程号,ALL 表示所有进程
- -C:指定命令
- -l:显示命令名和所有参数
示例:
查看指定进程所占用内存的使用情况
每隔1秒监控一次mysql进程使用内存情况,总共监控1000次
stress
作用:stress 是 Linux 的一个压力测试工具,可以对 CPU、 Memory、 IO、磁盘进行压力测试。
语法:
stress [OPTION [ARG]]
参数:
- -c, --cpu N:产生 N 个进程,每个进程都循环调用 sqrt 函数产生 CPU 压力。
- -i, --io N:产生 N 个进程,每个进程循环调用 sync 将内存缓冲区内容写到磁盘上,产生 IO 压力。通过系统调用 sync 刷新内存缓冲区数据到磁盘中,以确保同步。如果缓冲区内数据较少,写到磁盘中的数据也较少,不会产生 IO 压力。在 SSD 磁盘环境中尤为明显,很可能 iowait 总是 0,却因为大量调用系统调用 sync,导致系统 CPU 使用
率 sys 升高。 - -m, --vm N:产生 N 个进程,每个进程循环调用 malloc/free 函数分配和释放内存。
- –vm-bytes B:指定分配内存的大小
- –vm-keep:一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)
- -d, --hdd N:产生 N 个不断执行 write 和 unlink 函数的进程(创建文件,写入内容,删除文件)
- –hdd-bytes B:指定文件大小
- -t, --timeout N:在 N 秒后结束程序
- -q, --quiet:程序在运行的过程中不输出信息
示例:
创建 1一个进程,对cpu来进行压力测试
stress -c 1
cgroup试验
cgroups 信息查看
cgroups 版本查看
查看支持的版本
cgroups 子系统查看
可以查看到可以控制的资源
cgroups 挂载信息查看
查看控制组的存储路径
查看一个进程上的 cgroup 限制
下面的示例是通过以一个进程来如何找到自己的控制组
1.以当前 shell 进程为例,查看进程的 cgroup
2.比如 cpu 在 user.slice,我们可以找到这个目录,里面有对 init 进程的详细限制信息
使用 cgroups 对内存进行控制
1.创建内存的 cgroup 控制组,我们进入到 cgroup 的内存控制目录/sys/fs/cgroup/memory,我们创建目录 test_memory
[root@VM-0-11-centos memory]# mkdir test\_memory
[root@VM-0-11-centos memory]# ls
cgroup.clone_children memory.kmem.slabinfo memory.memsw.limit_in_bytes memory.swappiness
cgroup.event_control memory.kmem.tcp.failcnt memory.memsw.max_usage_in_bytes memory.usage_in_bytes
cgroup.procs memory.kmem.tcp.limit_in_bytes memory.memsw.usage_in_bytes memory.use_hierarchy
cgroup.sane_behavior memory.kmem.tcp.max_usage_in_bytes memory.move_charge_at_immigrate notify_on_release
memory.failcnt memory.kmem.tcp.usage_in_bytes memory.numa_stat release_agent
memory.force_empty memory.kmem.usage_in_bytes memory.oom_control tasks
memory.kmem.failcnt memory.limit_in_bytes memory.pressure_level test_memory
memory.kmem.limit_in_bytes memory.max_usage_in_bytes memory.soft_limit_in_bytes YunJing
memory.kmem.max_usage_in_bytes memory.memsw.failcnt memory.stat
2.可以看到内存限制文件已经自动在 test_memory 中创建完成了, cgroups 文件系 统会在创建文件目录的时候自动创建相应的配置文件
[root@VM-0-11-centos memory]# cd test_memory/
[root@VM-0-11-centos test_memory]# ll
total 0
-rw-r–r-- 1 root root 0 Sep 12 14:27 cgroup.clone_children
–w–w–w- 1 root root 0 Sep 12 14:27 cgroup.event_control
-rw-r–r-- 1 root root 0 Sep 12 14:27 cgroup.procs
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.failcnt
–w------- 1 root root 0 Sep 12 14:27 memory.force_empty
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.failcnt
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.limit_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.max_usage_in_bytes
-r–r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.slabinfo
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.tcp.failcnt
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.tcp.limit_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.tcp.max_usage_in_bytes
-r–r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.tcp.usage_in_bytes
-r–r–r-- 1 root root 0 Sep 12 14:27 memory.kmem.usage_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.limit_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.max_usage_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.memsw.failcnt
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.memsw.limit_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.memsw.max_usage_in_bytes
-r–r–r-- 1 root root 0 Sep 12 14:27 memory.memsw.usage_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.move_charge_at_immigrate
-r–r–r-- 1 root root 0 Sep 12 14:27 memory.numa_stat
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.oom_control
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.soft_limit_in_bytes
-r–r–r-- 1 root root 0 Sep 12 14:27 memory.stat
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.swappiness
-r–r–r-- 1 root root 0 Sep 12 14:27 memory.usage_in_bytes
-rw-r–r-- 1 root root 0 Sep 12 14:27 memory.use_hierarchy
-rw-r–r-- 1 root root 0 Sep 12 14:27 notify_on_release
-rw-r–r-- 1 root root 0 Sep 12 14:27 tasks
3.配置 cgroup 的策略为最大使用 20M 内存
4.启动 1 个消耗内存的进程,每个进程占用 50M 内存
5.打开一个新的 shell 窗口 B 窗口,使用 pidstat 查看状态
6.将进程 id 移动到我们的 cgroup 策略
cd /sys/fs/cgroup/memory echo 20968 > tasks
7.可以看到进程无法申请到足够内存退出
可以看到进程消失了
使用 cgroups 对 cpu 进行控制
1.创建内存的 cgroup 控制组,我们进入到 cgroup 的内存控制目录 /sys/fs/cgroup/cpu,创建目录 test_cpu,可以看到系统会自动为我们创建 cgroup 的 cpu 策略
[root@VM-0-11-centos cpu,cpuacct]# mkdir test\_cpu
[root@VM-0-11-centos cpu,cpuacct]# cd test\_cpu/
[root@VM-0-11-centos test_cpu]# ls
cgroup.clone_children cpuacct.stat cpu.cfs_period_us cpu.rt_runtime_us notify_on_release
cgroup.event_control cpuacct.usage cpu.cfs_quota_us cpu.shares tasks
### 总结
根据路线图上的重点去进行有针对性的学习,在学习过程中,学会写笔记,做总结。
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**
这里分享一些前端学习笔记:
* **html5 / css3 学习笔记**
![](https://img-blog.csdnimg.cn/img_convert/c7aea89db6b059151c753196f8f4e9b5.png)
* **JavaScript 学习笔记**
![](https://img-blog.csdnimg.cn/img_convert/af0c75f32f6618baccf39ce440a0fb5c.png)
* **Vue 学习笔记**
![](https://img-blog.csdnimg.cn/img_convert/94cca01f6717f672208838e9ac549be1.png)