pmap中的mode列,脏页,写时复制
写时复制(Copy-on-Write,简称 COW) 是一种计算机编程中的优化技术,主要用于内存或存储资源的管理。其核心思想是:只有在真正需要修改数据时,才会执行实际的复制操作,从而避免不必要的资源开销。
核心原理
初始共享
多个进程/线程访问同一份数据时,最初共享同一份物理资源(如内存页、文件块),而不是立即创建副本。
延迟复制
当某个进程尝试修改数据时,系统才会透明地为该进程创建一份独立的副本,后续修改仅影响副本,其他进程仍访问原始数据。
对用户透明
整个过程由操作系统或运行时环境自动处理,无需程序员显式干预。
USS 可以通过pmap的所有值减去共享的包括-s的内存部分,得到吗??
脏页:
Linux 调参示例:
# 查看当前脏页阈值
sysctl vm.dirty_ratio # 内存脏页占比阈值(默认20%)
sysctl vm.dirty_background_ratio # 后台异步写回阈值(默认10%)# 手动触发所有脏页写回
sync
- 正确获取 USS 的方法
(1) 使用 smem 工具
smem -u -P <进程名> # 直接显示 USS
(2) 解析 /proc//smaps
awk '/Private/ {sum += $2} END {print sum " KB"}' /proc/<PID>/smaps # 精确 USS
输出示例:
Private_Clean: 100 KB # 未修改的独占内存
Private_Dirty: 200 KB # 已修改的独占内存
USS = 100 + 200 = 300 KB