linux性能优化实战 倪朋飞,Linux性能优化实战:系统的swap变高(09)

一、实验环境

1、操作系统

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、内存

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

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

612147c13c8a0c8282e7ce349c4dba48.png

2、窗口2

# 间隔 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

上升截图

ba2339f4ae444b484c852b6c4e2cd34f.png

2分钟后

8a4b7daf661515fe1a1bbb5cfbb315dc.png

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

2480da04986a988d90d84eef48a81038.png

2分钟后

2eccf3ce8c89384a9bad20009b0cdbf1.png

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

三、命令解释

1、命令图解

37533622f6542294fb2e9976c584ef09.png

2、文字解释

kbcommit

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

kbactive

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

kbinact

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

四、总结

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

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

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

abd25281e0668682a9ad150cefb1623f.png

c2d91889684b3da3c8178537a2197698.png

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

一.上节回顾 上一期,我们一起梳理了,网络时不时丢包的分析定位和优化方法.先简单回顾一下.网络丢包,通常会带来严重的性能下降,特别是对 TCP 来说,丢包通常意味着网络拥塞和重传,进而会导致网络延迟增 ...

《Linux 性能优化实战—倪朋飞 》学习笔记 CPU 篇

平均负载 指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,即平均活跃进程数 可运行状态:正在使用CPU或者正在等待CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态 (Run ...

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

一.上节回顾 上一节,我们一起学习了怎么使用动态追踪来观察应用程序和内核的行为.先简单来回顾一下.所谓动态追踪,就是在系统或者应用程序还在正常运行的时候,通过内核中提供的探针,来动态追踪它们的行为,从 ...

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

一.上节回顾 上一节,我带你一起梳理了,性能问题分析的一般步骤.先带你简单回顾一下. 我们可以从系统资源瓶颈和应用程序瓶颈,这两个角度来分析性能问题的根源. 从系统资源瓶颈的角度来说,USE 法是最为 ...

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

一.上节总结 专栏更新至今,四大基础模块的第三个模块——文件系统和磁盘 I/O 篇,我们就已经学完了.很开心你还没有掉队,仍然在积极学习思考和实践操作,并且热情地留言与讨论. 今天是性能优化的第四期. ...

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

一.上节回顾 上一节,我们学了网络性能优化的几个思路,我先带你简单复习一下. 在优化网络的性能时,你可以结合 Linux 系统的网络协议栈和网络收发流程,然后从应用程序.套接字.传输层.网络层再到链路 ...

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

一.上节回顾 上一节,我带你一起梳理了常见的性能优化思路,先简单回顾一下.我们可以从系统和应用程序两个角度,来进行性能优化. 从系统的角度来说,主要是对 CPU.内存.网络.磁盘 I/O 以及内核软件 ...

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

一.坏境准备 1.拓扑图 2.安装包 在第9节的基础上 在VM2上安装hping3依奈包 wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.g ...

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

一.怎么查看系统上下文切换情况 通过前面学习我么你知道,过多的上下文切换,会把CPU时间消耗在寄存器.内核栈以及虚拟内存等数据的保存和回复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个元凶 既 ...

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

一.内存的分配和回收 1.管理内存的过程中,也很容易发生各种各样的“事故”, 对应用程序来说,动态内存的分配和回收,是既核心又复杂的一的一个逻辑功能模块.管理内存的过程中,也很容易发生各种各样的“事故 ...

随机推荐

poj 2488

http://poj.org/problem?id=2488 题意:就是让马把棋盘都走完,每一个点都要走到,出口就是a,b. #include #include &lt ...

Linux 文件锁

当多个进程同时访问操作同一个文件时,我们怎么保证文件数据的正确性. linux通常采用的方法是文件上锁,来避免共享资源的产生竞争状态. 文件锁包括建议性锁和强制性的锁: 建议性的锁 :顾名思义,相对温 ...

JavaScript、jQuery获取页面及个元素高度、宽度

Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.client ...

JavaScript继承的实现

怎样在JavaScript中实现简单的继承?  以下的样例将创建一个雇员类Employee,它从Person继承了原型prototype中的全部属性. function Employee(name, ...

MySql 安装及0基础使用具体解释

1. sudo apt-get install mysql-server, input administrator password , '123' 2. enter mysql promot in ...

关于springmvc时request的getReader()和getInputStream()只能调用一次的解决办法

最近准备在原有的SSM项目的基础上添加完善的日志分析,由于是APP的后台系统,之前在规划APP的时候,并没有在APP上做埋点的处理,而如果想要进行埋点处理的话,对于未能新升级的APP用户来说,就是去了 ...

HTML学习笔记之三(localstorage的使用)

localstorage的使用 1.获取对象 var localstroage = window.localStorage; 2.存储值 localstroage.setItem('openid',' ...

使用Socket对序列化数据进行传输(基于C#)

客户端代码 [Serializable] // 表示该类可以被序列化 class Person{ public string name; public void HI() { Debug.Log(na ...

segmentedControl设置字体和字体颜色问题

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor],UITextAttributeT ...

【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)

Starting from a joke 问:把大象放冰箱里,分几步? 答:三步啊,第一.把冰箱门打开,第二.把大象放进去,第三.把冰箱门带上. 问:实现Spring事务,分几步? 答:三步啊,第一. ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值