Linux性能优化实战学习笔记:第二十讲

一、实验环境

1、操作系统

1
2
3
4
5
6
root@openstack:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

2、内存

1
2
3
4
root@openstack:~# free -h
total used free shared buff/cache available
Mem: 4.9G 114M 4.0G 992K 773M 4.5G
Swap: 3.9G 0B 3.9G

3、cpu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
root@openstack:~# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz
Stepping: 3
CPU MHz: 3491.930
BogoMIPS: 6983.86
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0,1

二、上传文件实验

1、窗口1

2、窗口2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 间隔 1 秒输出一组数据
# -r 表示显示内存使用情况,-S 表示显示 Swap 使用情况
# sar -r -S 1
 
root@openstack:~# sar -r -S 1
Linux 4.15.0-45-generic (openstack)     02/06/2019  _x86_64_    (2 CPU)
 
09:32:07 AM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
08:32:08 AM   4189512   4744524    906804     17.79     50276    695116    257800      2.82    527428    258832         0
 
09:32:07 AM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
09:32:08 AM   4039676         0      0.00         0      0.00
 
09:46:08 AM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
09:46:09 AM    112780   4660228   4983536     97.79     52088   4630296    284412      3.11    572084   4178412    192368
 
09:46:08 AM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
09:46:09 AM   4039676         0      0.00         0      0.00

上升截图

2分钟后

3、你可能困惑了,为什么缓冲区在不停增大?这又是哪些进程导致的呢?

 

2分钟后

 

通过cachetop的输出,我们看到rz进程的读写请求只有26.3%的命中率,并且未命中的缓存页数为29744,这说明,正是案例开始运行的rz导致了缓冲区使用升高

三、命令解释

 1、命令图解

2、文字解释

kbcommit

表示当前系统负载需要的内存,它实际上是为了保证系统内存不溢出,对需要内存的估计值,%commit就是这个值相对总内存的百分比

kbactive

表示活跃内存,也就是最近使用过的内存,一般不会被系统回收

kbinact

表示非活跃内存,也就是不常访问的内存,可能会被系统回收

四、总结

总内存使用率在不断增长,从开始的23%一直涨到了97%,并且主要内存都被缓冲区占用

刚开始,剩余内存不断减少,而缓冲区则不断增大,由此可知,剩余内存不断分配给了缓冲区

一段时间后,剩余内存已经很小,而缓冲区占用了大部分内存,这时候的使用开始逐渐增大、缓冲区和剩余内存只在小范围内波动

 

 

 

posted @   活的潇洒80  阅读(1312)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示