- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在分析我扭曲的服务器。它使用的内存比我预期的要多得多。它的内存使用量会随着时间的推移而增长。
ps -o pid,rss,vsz,sz,size,command
PID RSS VSZ SZ SZ COMMAND
7697 70856 102176 25544 88320 twistd -y broadcast.tac
如您所见,它花费了 102176 KB,即 99.78125 MB。我使用来自扭曲检修孔的孔雀鱼来观察内存使用情况。
>>> hp.heap()
Partition of a set of 120537 objects. Total size = 10096636 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 61145 51 5309736 53 5309736 53 str
1 27139 23 1031596 10 6341332 63 tuple
2 2138 2 541328 5 6882660 68 dict (no owner)
3 7190 6 488920 5 7371580 73 types.CodeType
4 325 0 436264 4 7807844 77 dict of module
5 7272 6 407232 4 8215076 81 function
6 574 0 305776 3 8520852 84 dict of class
7 605 1 263432 3 8784284 87 type
8 602 0 237200 2 9021484 89 dict of type
9 303 0 157560 2 9179044 91 dict of zope.interface.interface.Method
<384 more rows. Type e.g. '_.more' to view.>
嗯……好像哪里不对。 Guppy 显示内存总使用量为 10096636 字节,即 9859.996 KB 或 9.628 MB。
这是一个巨大的差异。这个奇怪的结果是怎么回事?我做错了什么?
更新:我昨晚写了一个监控脚本。它记录了内存使用情况和在线用户数。它是一个 radio 服务器,因此您可以看到有 radio 和所有听众。这是我用 matplotlib 生成的图。
有点奇怪。有时候ps打印出来的内存占用很低,像这样
2010-01-15 00:46:05,139 INFO 4 4 17904 36732 9183 25944
2010-01-15 00:47:03,967 INFO 4 4 17916 36732 9183 25944
2010-01-15 00:48:04,373 INFO 4 4 17916 36732 9183 25944
2010-01-15 00:49:04,379 INFO 4 4 17916 36732 9183 25944
2010-01-15 00:50:02,989 INFO 4 4 3700 5256 1314 2260
内存占用超低值是什么原因?而且,即使没有在线广播,没有听众,内存占用仍然很高。
最佳答案
可能是由于交换/内存预留,根据 ps 的定义:
RSS: resident set size, the non-swapped physical memory
that a task has used (in kiloBytes).
VSZ: virtual memory usage of entire process.
vm_lib + vm_exe + vm_data + vm_stack
这可能有点令人困惑,可以看到 4 种不同的尺寸指标:
# ps -eo pid,vsz,rss,sz,size,cmd|egrep python
PID VSZ RSS SZ SZ CMD
23801 4920 2896 1230 1100 python
虚拟大小包括进程保留但未使用的内存、已加载的所有共享库的大小、换出的页面以及已被您的进程释放的 block ,因此它可能更大比 python 中所有事件对象的大小都大。
一些额外的工具来研究内存性能:
Heapy(您正在使用的 Guppy 的一部分): http://guppy-pe.sourceforge.net/
Python 内存验证器 http://www.softwareverify.com/python/memory/index.html
PySizer http://pysizer.8325.org/
使用 pdb 和 objgraph 在 python 中跟踪内存泄漏的好指南:
http://www.lshift.net/blog/2008/11/14/tracing-python-memory-leaks
关于python - guppy 报告的内存使用情况与 ps 命令不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066279/
tl/dr:如何使用 Guppy 获取 python 程序的当前内存使用情况?有没有简单的命令? 我正在尝试使用 guppy 跟踪 python 程序中的内存使用情况。这是我第一次使用孔雀鱼,所以我不
我正在尝试安装 guppy .我的程序使用 python3,所以我必须专门使用 pip3。当我运行时: pip3 install guppy 我得到: src/sets/sets.c:77:1: er
我正在分析我扭曲的服务器。它使用的内存比我预期的要多得多。它的内存使用量会随着时间的推移而增长。 ps -o pid,rss,vsz,sz,size,command PID RSS V
我正在尝试安装 guppy .我的程序使用 python3,所以我必须专门使用 pip3。当我运行时: pip3 install guppy 我得到: src/sets/sets.c:77:1: er
我正在使用 python 的 guppy 来查看 python 程序中的堆使用情况。我愿意: h = hpy hp = h.heap() print hp 这是产生的输出: Partition of
我记得 reading很难确定 Python 中对象的确切内存使用情况。然而,该线程是从 2009 年开始的,从那时起我就阅读了 Python 中的各种内存分析器(参见 this thread 中的示
我对特定 python 脚本的内存使用情况感到非常困惑。尽管 advice,我想我真的不知道如何分析使用情况来自几个 SO 问题/Answers . 我的问题是:memory_profiler 和 g
所以我在两台架构相同但 C 编译器略有不同的不同机器上使用 Python Stackless 和 heapy。 Heapy 在第一个上工作得很好,但我在第二个上得到了核心转储。 Python 2.7.
我刚刚安装了 guppy 0.1.10。然后输入 Ipython 2.1.0 from guppy import hpy hp = hpy() 使控制台崩溃,即 Windows 告诉我,python.
我是一名优秀的程序员,十分优秀!