我在生产中有一个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
这是一个问题吗? 这种差异的解释是什么? 我想知道如果有这么多的虚拟内存,它是否会出错?
答案 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