分享

linux 没有设置swap交换分区,则进程的virt虚拟内存大于实际占用的内存,这个时候...

linshenyuan00 发表于 2015-10-9 16:38:16 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 43447
例如:

自己linux环境内存94G,通过top命令看到内存占用了24G,但是进程mysql当当VIRT的虚拟内存就占用了32g,并且没有设置交换空间(swap=0),
那mysql中那么大的虚拟内存是从哪里申请的? 是从物理内存直接分配的吗?

[root@host1]# free -m
             total       used       free     shared    buffers     cached
Mem:         96639      24291      72347          0        152       3497
-/+ buffers/cache:      20641      75997
Swap:            0          0          0
[root@host1]# top
top - 11:57:02 up  1:15,  4 users,  load average: 0.87, 0.92, 1.14
Tasks: 681 total,   2 running, 679 sleeping,   0 stopped,   0 zombie
Cpu(s):  4.5%us,  1.6%sy,  0.0%ni, 92.4%id,  1.5%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  98958696k total, 24897824k used, 74060872k free,   156120k buffers
Swap:        0k total,        0k used,        0k free,  3582552k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
89164 keystone  20   0  227m  20m 3556 R 46.5  0.0   0:00.28 keystone-manage
89148 root      20   0 15432 1596  832 R  8.3  0.0   0:00.15 top
22335 qemu      20   0 10.5g 1.6g 5200 S  5.0  1.7   2:14.76 qemu-kvm
  6060 mysql     20   0 32.9g 1.7g  30m S  3.3  1.8   4:18.05 mysqld

那mysql中那么大的虚拟内存是从哪里申请的?
由于没有swap分区,虚拟内存就都 是从物理内存直接分配的吗?

如果大家有推荐的链接也可以发过来看看,谢谢了。

已有(2)人评论

跳转到指定楼层
Alkaloid0515 发表于 2015-10-9 17:33:54
看着挺费劲的,楼主是不是看错了。可以标注的更加清晰些
回复

使用道具 举报

linshenyuan00 发表于 2015-10-9 17:40:11
Alkaloid0515 发表于 2015-10-9 17:33
看着挺费劲的,楼主是不是看错了。可以标注的更加清晰些


Ok,我描述不清晰,我再说下:


      1、linux 环境没有设置swap交换分区,则进程的virt虚拟内存大于实际占用的内存,这个时候虚拟内存从哪分配的?

      2、从top命令看到环境上mysql进程资源占用情况:
top
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
6060 mysql     20   0 32.9g 1.7g  30m S  3.3  1.8   4:18.05 mysqld

       3、可以看到mysql的虚拟内存占用32.9g,实际占用物理内存1.7g,网上都说swap = 32.9 - 1.7 = 31.2g。
这个时候,linux环境没有设置交换分区,则 这个31.2g是从哪里分配的? 物理内存 还是硬盘?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条