Python VIRT内存使用

时间:2012-02-28 09:35:27

标签: python memory

我在生产中有一个python应用程序(在CentOS 6.2 / Python 2.6.6上),最多需要:

  

800M VIRT / 15M RES / 2M SHR

运行相同的应用程序(Fedora 16 / Python 2.7.2)"仅限#34;接受:

  

56M VIRT / 15M RES / 2M SHR

这是一个问题吗? 这种差异的解释是什么? 我想知道如果有这么多的虚拟内存,它是否会出错?

2 个答案:

答案 0 :(得分:0)

该应用程序有什么作用?它使用了哪些库?这些机器还有什么不同?很难给出一般答案。

VIRT值表示进程以某种方式从操作系统请求的内存量。但Linux在这方面是懒惰的:在进程尝试使用它之前,内存实际上不会被分配给进程。

RES值表示RAM中实际驻留的内存量以及当前正在使用的内存量。这将排除尚未被进程触及或已被换出到磁盘的页面。由于这两个过程的RES值很小且相同,因此可能无需担心。

答案 1 :(得分:-2)

@RaphDG 在top命令中,如果您看到VIRT显示如下内容

top
top - 10:11:51 up 38 days,  8:51,  2 users,  load average: 0.91, 0.99, 1.02
Tasks: 907 total,   1 running, 906 sleeping,   0 stopped,   0 zombie
Cpu(s): 17.7%us,  5.6%sy,  0.0%ni, 70.5%id,  0.0%wa,  0.0%hi,  6.2%si, 0.0%st
Mem:  264493616k total, 249584324k used, 14909292k free,   147780k buffers
Swap: 33554428k total,        0k used, 33554428k free, 230646508k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4152 root  20   0 54.0g 5.5g  93m S 854.5  2.2  11863:55 java
20112 root  20   0 3234m 123m  11m S 29.6  0.0   0:42.23 java
59917 root  20   0 6691m 841m 5308 S  2.6  0.3 562:21.06 java
 8494 root  20   0 17788 1940  952 R  1.0  0.0   0:18.95 top

g是千兆位,m是兆位(非字节)。 800兆位只有100兆字节

@RaphDG

似乎版本,顶部3.3.10,已经摆脱了以g,m或G显示这些值。 请安装顶级新版本(3.3.10),它会显示KiB中的值以及未以后缀显示的值,该值应在KiB中考虑(在VIRT列中。) 搜索在网上将KiB转换为技嘉并转换它。

顶部反转   procps-ng版本3.3.10 用法:   顶部-hv | -bcHiOSs -d secs -n max -u | U user -p pid(s)-o field -w [cols]

顶 top - 15:39:20 up 139天,23:58,1位用户,平均负载:1.86,2.16,2.23 任务:总共107次,3次跑步,104次睡眠,0次停止,0次僵尸 Cpu(s):60.0%us,34.7%sy,0.0%ni,5.3%id,0.0%wa,0.0%hi,0.0%si,0.0%st

KiB Mem:3883016总计,276344免费,2766720使用,839952 buff / cache KiB掉期:总共630780,免费586468,使用44312。 610484可以使用Mem

PID用户PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND    11 root 20 0 0 0 0 S 0.7 0.0 200:30.37 rcu_sched