我正在设置一台新服务器(64位Debian),并试图使apache进程尽可能小,从而禁用了我不需要的任何模块.然后,我将pmap输出与32位Debian机器上的apache进行了比较,并打开了更多模块.我很惊讶地看到64位计算机上的“优化”磁盘似乎正在消耗更多的内存.

pmap -d(仅是摘要行)显示:

64bit: mapped: 188584K writeable/private: 14680K shared: 72K

32bit: mapped: 33824K writeable/private: 7304K shared: 888K

仔细观察输出.我看到.so库的内存分配有所不同.以libc为例…

64位:

00007f9988e8d000 1380 r-x-- 0000000000000000 008:00001 libc-2.11.3.so

00007f9988fe6000 2044 ----- 0000000000159000 008:00001 libc-2.11.3.so

00007f99891e5000 16 r---- 0000000000158000 008:00001 libc-2.11.3.so

00007f99891e9000 4 rw--- 000000000015c000 008:00001 libc-2.11.3.so

32位:

b7501000 1364 r-x-- 0000000000000000 008:00001 libc-2.7.so

b7656000 4 r---- 0000000000155000 008:00001 libc-2.7.so

b7657000 8 rw--- 0000000000156000 008:00001 libc-2.7.so

因此,区别在于64位输出中的第二行.我找不到用Mode =“ —–”分配的解释,每个.so似乎都有一个,大小始终为2044或2048.

这与64but机器上的内存分配有关吗?与32bit机器上的内存相比,我每GB RAM会获得更少的处理吗?

解决方法:

经过更多研究,我最终发现this article,它表示pmap输出中的这些“ —–” 2MB行并不表示实际的内存使用情况,而是出于性能原因如何在64位上使用地址空间的怪癖.给出的摘要是:

“据报道,在64位Linux上具有许多共享库的应用程序每个共享库使用的内存比实际占用的内存多2MB.这额外的开销不会花费您任何RAM或交换空间,而只是在每个进程内分配地址空间,这是很多的它是在64位平台上提供的.根本原因是与保持库的有效共享有关,但是实现有些奇怪.”

我仍然很难相信,很难找到有关此基本错误/功能的信息,以了解如何在64位Linux上报告进程内存使用情况!

标签:pmap,memory-management,linux

来源: https://codeday.me/bug/20191201/2083005.html

linux 内存使用很大,在32位和64位Linux上,为什么同一进程的pmap的内存使用量会有很大差异?...相关推荐

  1. linux 32位和64位的区别 内存,32位、64位的区别

    如果你的"支持64位"指支持64位的可执行文件或者"支持64位内存寻址",那么很显然,一个32位的操作系统无法支持64位的可执行文件,由于硬件的限制也不支持64 ...

  2. linux系统32和64的区别,32位和64位的Linux系统区别

    区别之一:当初设计的定位不同 64位操作系统的设计定位是:满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域,这些应用领域的共同特点就是需要有大量的系统内存和浮点性能 ...

  3. 64位linux,sizeof(int),C中sizeof()的用法——32位和64位下的sizeof()

    机器平台:X86_64 处理器 操作系统:Red Hat 4.1.2-14 编译器: gcc version 4.1.2 20070626 Size of char is:               ...

  4. 微信计算机内存是32位吗?,windows7旗舰版32位和64位的区别是什么

    大部分朋友电脑还是安装win7的系统,如果你是大于4gb内存的用户就要了解一下你电脑系统是多少位的了,小编建议如果你大于4gb最好都安装window 64位,因为这样运行会比较通畅.很多朋友问小编wi ...

  5. 32位uefi引导64位Linux,维护版win8pe(32位+64位+纯64位,支持BIOS+EFI)

    此文件包的ISO格式,下载后解压即可得到ISO文件. 本合盘启动方式支持BIOS+32位EFI+64位EFI启动.写入方式支持量产,刻盘,B+,U+(不隐藏.普通隐藏.高端隐藏).最大化支持新老机型启 ...

  6. linux cpu运行模式,Linux上的32位,64位CPU操作模式

    lscpu告诉您您的架构是i686(Intel 32位CPU),并且您的CPU支持32位和64位操作模式.您将无法安装x64构建的应用程序,因为它们是专门为x64体系结构构建的. 您的特定CPU可以处 ...

  7. linux环境下shellcode的编写:32位和64位

    linux环境下shellcode的编写 shellcode的理解 使用pwntools工具编写 自己实现更精炼的 32位shellcode 64位shellcode shellcode的理解   我 ...

  8. 查看linux机器是32位还是64位的方法

    查看linux机器是32位还是64位的方法: 1.方法1: file /sbin/init 或者 file /bin/ls /sbin/init: ELF 64-bit LSB executable, ...

  9. Linux系统查看系统是32位还是64位方法总结 in 创新实训

    这篇博客是总结.归纳查看Linux系统是32位还是64位的一些方法,很多内容来自网上网友的博客.本篇只是整理.梳理这方面的知识,方便自己忘记的时候随时查看. 方法1:getconf LONG_BIT ...

最新文章

  1. Swift - 使用CoreLocation实现定位(经纬度、海拔、速度、距离等)
  2. jsp中jquery传值给Java_jsp中利用jquery+ajax在前后台之间传递json格式参数
  3. java --replaceAll方法
  4. CentOS7安装OpenFire
  5. 【机器学习】 LightGBM——优于XGBoost提升的集成算法(安装+对比XGBoost改进+参数说明+python代码实例)
  6. mysql索引为啥要选择B+树 (下)
  7. 为什么很多人上班好好的,却选择去创业?
  8. 你选书我买单,包邮送50本!《R语言实战》或者任何什么书都可以!
  9. Flink 流批一体在阿里的落地
  10. Tips for ASP.NET Application Performance Enhancement
  11. 华硕afudos刷bios_华硕M2N-MX SE PLUS主板 如何用afudos命令刷BIOS
  12. 常用PC/手机浏览器UA
  13. Rational Team Concert 2
  14. 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署
  15. 源码分析学习记录(11)——半边结构
  16. 《重装系统后弹出对话框(无法打开这个应用(无法使用内置管理员账户打开xx,请使用其他账户登录,……))》
  17. 核磁共振 Nuclear Magnetic Resonance (NMR), H1-NMR, C13-NMR, DEPT, COSY 等分析技术
  18. 百度地图JavaScript版api使用说明
  19. Oracle闪回恢复区(fast recovery area,FRA)
  20. 2.系统测试流程规范

热门文章

  1. vue-slicksort拖拽组件
  2. tensorflow 根据节点获取节点前的整张图
  3. 你不知道的JS之作用域和闭包(二)词法作用域
  4. 2017.7.17数据类型
  5. Vue.js之初印象
  6. 去除tabbar的灰线
  7. 4-3-串的块链存储结构-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
  8. js报错,Uncaught SyntaxError: Unexpected token }
  9. android studio 使用开源库
  10. vb显示文件列表_VB基本操作题4/150