Linux 性能实战 | 附录:动态链接库是如何影响多个进程内存占用的? 📅 发布时间:2026/7/17 11:59:11 👁️ 浏览次数: Linux 性能实战 | 附录动态链接库是如何影响多个进程内存占用的在 Linux 内存分析中很多工程师都会遇到一个现象psaux|grepmy_program发现多个进程的 RSS 都很大例如进程A RSS 200MB 进程B RSS 200MB 进程C RSS 200MB直觉上会认为系统用了600MB 内存但实际物理内存可能只增加了220MB为什么会这样答案就是shared page共享页而 shared page 最常见的来源就是动态链接库 (.so)。这篇文章将从工程角度彻底讲清楚什么是 shared page动态链接库如何产生 shared page为什么多个进程 RSS 很大但实际内存没增加多少RSS / PSS / USS 的本质区别一、shared page 是什么一句话定义shared page 多个进程映射到同一个物理内存页关键点每个进程有自己的虚拟地址空间但不同进程的虚拟页可以指向同一个物理页示意图PhysicalMemoryProcessBProcessAvirtual pagevirtual pagephysical page结果两个进程 共享同一份物理内存不是复制。二、shared page 最常见来源动态链接库 (.so)例如系统中的/lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libstdc.so.6当程序启动./my_programLinux 不会把 libc.so 复制进进程。而是通过mmap(libc.so,MAP_SHARED)把文件映射进内存。流程ProgramLoadermmapPageCacheProcessAProcessB关键多个进程共享 page cache 中的物理页三、核心机制page cacheLinux 有一个全局结构page cache作用缓存文件内容对应的物理页例如libc.so只加载一次libc.so on diskphysical pagesProcessAProcessBProcessC结果100个进程 只使用一份物理内存四、为什么 RSS 看起来很大RSS 定义RSS 进程映射的物理页数量注意RSS 不关心页是否共享示例libc.so 占用10MB运行 100 个进程每个进程RSS 10MB但真实物理内存仍然是 10MB不是1000MB五、PSS 才是真实物理占用的更好指标PSS 定义PSS shared page 按进程数量平均分配示例libc.so 10MB 进程数 10每个进程PSS 1MB系统总 PSS10MB符合真实物理内存。六、USS进程真正独占的内存USS 定义USS 进程独占页不包含shared page示例heap 50MB shared libc 10MB结果RSS 60MB PSS ≈ 51MB USS 50MB七、动态链接库为什么可以共享因为动态库是文件-backed memory read-onlyLinux 可以安全共享。而不是匿名内存heap匿名内存不能共享。八、如果使用静态链接会发生什么静态链接gcc main.c-static结果每个进程都有一份 libc 副本示意ProcessClibcCProcessBlibcBProcessAlibcA无法共享。内存占用线性增长九、fork 也会产生 shared pageCopy-on-Writefork 后ParentPageChild共享同一页。只有写入时才复制这叫Copy-on-Write十、如何查看 shared page查看cat/proc/pid/smaps示例Shared_Clean: 2048 kB Private_Clean: 0说明全部共享推荐工具smem-r输出PID RSS PSS USS十一、shared page 如何影响 RSS / PSS / USS关系图not countednot countedlibc.sophysical pagesProcessAProcessBRSS includesRSS includesPSS splitPSS splitUSSAUSSB总结指标是否包含 sharedRSS包含PSS按比例USS不包含十二、工程中的典型误解误解RSS 大 内存真的占用大正确理解RSS 包含 shared page真实占用更接近PSS 或 USS十三、一个真实工程案例系统运行100 个 nginx worker 每个 RSS 50MB直觉5000MB实际物理内存 ≈ 800MB原因libc libssl libcrypto 共享十四、总结shared page 本质多个进程共享 page cache 中的物理页主要来源动态链接库 (.so) mmap 文件 fork (COW)对内存指标影响RSS 包含 shared PSS 按比例分摊 USS 只统计独占工程实践建议看真实内存占用 优先看 PSS 其次看 USS 不要只看 RSS
新特技术解析:基于光伏和蓄电池的三端口系统在Matlab Simulink中的实现 Matlab/simulink 基于光伏和蓄电池的三端口最近在捣鼓一个离网微电网项目,需要把光伏板、蓄电池和直流母线整合成一套能自主调节能量的系统。传统方案总得用两三个独立变换器,不仅成本高,控制时序还容易打架。尝试用Matlab/Simulink搭了个三… 2026/7/13 19:33:23
【AI渗透】——专为渗透测试工程师和安全研究员设计的新一代集成化安全测试平台(Venom) 🎯 简介 Venom 是专为渗透测试工程师和安全研究员设计的新一代集成化安全测试平台。在传统安全工具分散、操作复杂的痛点下,Venom 通过模块化设计将多种安全检测功能整合于统一界面,提供从资产发现到漏洞利用的全链路攻击模拟能力。 区别于市… 2026/7/17 4:11:19
单目相机当深度传感器用,不用双目/结构光。通过阴影估测3D高度。 单目相机阴影3D高度估测系统一、实际应用场景描述在工业生产线上,经常需要对散装物料(如粮食、矿石、塑料颗粒等)的堆积高度进行实时监测,以便进行库存管理、质量控制或工艺控制。传统方案通常依赖:- 激光测距仪&#… 2026/7/12 9:38:52
Deep Agents 框架:从入门到精通 1. 引言 在人工智能快速发展的今天,智能体(Agent)框架已成为构建复杂 AI 应用的核心工具。Deep Agents 是一个轻量级、模块化的 Python 框架,专为构建基于大语言模型(LLM)的智能体而设计。它提供了简洁的 A… 2026/7/17 11:57:27
AI助手技能精简指南:提升效率的核心策略 1. 为什么我们需要精简Agent技能清单?在AI助手和自动化工具泛滥的今天,很多用户都陷入了"技能囤积症"的怪圈。我见过不少人的Agent里安装了上百个技能,但实际常用的不到10%。这不仅造成了资源浪费,更严重影响了工作效率… 2026/7/17 11:55:27
最新有效的rtsp流媒体测试地址 提示:地址如果失效请大家提醒会及时更新,此文章一直在更新希望点赞收藏! rtsp 公网地址 2023年11月21可能流量太大地址已被加密! rtsp地址:rtsp://zephyr.rtsp.stream/pattern?streamKey1fd73653a094b877b9bd78468c9… 2026/7/17 11:53:25
Fable 5 的 7 月 19 日不是发布延期:模型可用性正在变成动态资源(九维可用性 + SLO 重构) TL;DR(三行:场景/结论/产出) 场景:AI 应用开发者把 “Fable 5 延期到 7 月 19 日” 当作模型发布延期,影响生产系统能力契约设计结论:Fable 5 已于 2026-06-09 正式发布(模型 ID claude-fable-5);7 月 19 日延长的是付费套餐访问窗口和 Claude Code 提高 50% 后的周限额,不是模… 2026/7/17 11:47:22
2026届秋招薪资表曝光:国企vs大厂真相揭秘,收藏这份高薪求职攻略! 文章对比了互联网大厂和国企的薪资待遇,指出虽然大厂账面薪资高,但国企在时薪、职业周期、福利等方面更具优势。文章通过三张表格详细分析了不同岗位类型、职业周期和福利待遇的差距,并建议求职者在选择工作时综合考虑各种因素,而… 2026/7/17 11:45:22
Python并发编程中的线程、进程与协程强制终止方案 1. Python并发编程中的强制终止需求在Python并发编程实践中,我们经常会遇到需要强制终止线程、协程或进程的场景。想象这样一个场景:你开发了一个Web爬虫系统,某个子线程负责下载任务,但由于目标网站响应异常,导致该线… 2026/7/17 11:41:20
【WPS AI表格避坑白皮书】:实测发现87%用户正在误用AI函数——这5个致命错误导致结果偏差超42% 更多请点击: https://intelliparadigm.com 第一章:WPS AI表格的核心能力与适用边界 WPS AI表格将大语言模型能力深度集成于电子表格环境中,实现从自然语言指令到结构化数据操作的端到端转化。其核心并非替代传统公式或宏编程,而是… 2026/7/17 0:00:08
Cursor终端插件生态避坑指南:23个实测低效插件黑名单,附3个自研轻量替代方案 更多请点击: https://intelliparadigm.com 第一章:Cursor终端插件生态避坑指南概览 Cursor 作为基于 VS Code 内核构建的 AI 原生编辑器,其终端插件生态虽活跃,但存在兼容性断层、权限策略突变与调试链路断裂等典型风险。开发者常… 2026/7/17 0:00:08
ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表) 更多请点击: https://codechina.net 第一章:ChatGPT写作提示词效率革命:单条提示词响应质量提升3.8倍的关键变量(附可复用提示词矩阵表) 提示词工程已从经验试错迈入变量驱动的科学阶段。实证研究表明,影响… 2026/7/17 0:00:08
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/17 0:28:39
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/17 6:02:24
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/16 12:08:13