第三周 ——内存性能(15~22)
Contents
本周学习了内存优化,对linux内存这一块内容需要再深入学习,补足基础知识。
打算用问答的方式总结知识点:
内存性能指标:
-
1.系统内存指标
- 已用内存:已经使用的内存
- 剩余内存:还未使用的内存
- 共享内存:通过tmpfs实现,高效率,
df -h
命令查看 - 可用内存:新进程可以使用的最大内存,它包括剩余内存和可回收缓存
- 缓存:一部分是磁盘读取文件的页缓存,另一部分是 Slab 分配器中的可回收内存
- 缓存区:对原始磁盘块的临时存储,用来缓存将要写入磁盘的数据。
- 工具:free、ps、top、vmstat、sar、/pro/meminfo
-
2.进程内存指标
- 虚拟内存(vss):包括了进程代码段、数据段、共享内存、已经申请的堆内存和已经换出的内存等。
- 常驻内存(rss):是进程实际使用的物理内存
- 共享内存(uss):包括与其他进程共同使用的真实共享内存,还包括加载的动态链接库以及程序的代码段
- Swap内存:通过 Swap 换出到磁盘的内存
- 内存缺页
- 工具:pmap、top、/proc/pid/status
-
3.SWAP
- 已用空间
- 剩余空间
- 换入速度:每秒内存换入的速度
- 换出速度:每秒内存换出的速度
- 工具:free、sar、vmsat
优化思路:
- 禁止swap(看情况)
- 减少内存的动态分配
- 尽量使用缓存(类似数据库的查询缓存)
- 使用cgroups等方式限制进程的内存使用情况
- 调整核心应用的oom_scor
Author zhuyhan
LastMod 2020-06-14