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%,并且主要内存都被缓冲区占用
刚开始,剩余内存不断减少,而缓冲区则不断增大,由此可知,剩余内存不断分配给了缓冲区
一段时间后,剩余内存已经很小,而缓冲区占用了大部分内存,这时候的使用开始逐渐增大、缓冲区和剩余内存只在小范围内波动
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
分类:
深挖计算机基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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语句:使用策略模式优化代码结构