相关疑难解决方法(0)

如何从进程内部确定CPU和内存消耗?

我曾经有过从正在运行的应用程序中确定以下性能参数的任务:

  • 可用的虚拟内存总量
  • 目前使用的虚拟内存
  • 我的进程当前使用的虚拟内存
  • 总RAM可用
  • RAM目前使用
  • RAM当前由我的进程使用
  • 目前使用的CPU%
  • 我的进程当前使用的CPU百分比

代码必须在Windows和Linux上运行.尽管这似乎是一项标准任务,但在手册(WIN32 API,GNU文档)以及Internet上查找必要的信息花了我好几天,因为关于这个主题的信息太多不完整/不正确/过时了发现了那里.

为了避免其他人遇到同样的麻烦,我认为收集所有分散的信息以及我在一个地方通过反复试验找到的信息是个好主意.

c c++ memory cpu

563
推荐指数
7
解决办法
29万
查看次数

如何使用C++在运行时获取内存?

我需要在我的程序运行时获取mem使用VIRT和RES并显示它们.

到目前为止我尝试了什么:

getrusage(http://linux.die.net/man/2/getrusage)

int who = RUSAGE_SELF; 
struct rusage usage; 
int ret; 

ret=getrusage(who,&usage);

cout<<usage.ru_maxrss;
Run Code Online (Sandbox Code Playgroud)

但我总是0.

c++ linux memory-management

79
推荐指数
6
解决办法
14万
查看次数

如何记录Linux上的内存消耗?

是否有任何现成的解决方案来记录系统启动时的内存消耗?我想将数据记录到简单的文本文件或某个数据库中,以便稍后进行分析.

我正在研究基于Linux 2.4的嵌入式系统.我需要调试与内存消耗相关的问题.我的应用程序会自动启动每个系统启动.我需要从定期间隔(尽可能经常)获取带时间戳的数据的方法,这样我就可以追踪问题.

我的问题的症状:当系统启动时,它启动了我的主应用程序和GUI,以可视化系统的主要参数.GUI基于GTK +(X服务器).如果我禁用GUI和X服务器,那么我的应用程序工作正常.如果我启用GUI和X服务器,当我在主板上安装256 MiB或512 MiB的物理内存时,它不起作用.如果我安装了1 GiB内存,那么一切正常.

linux logging memory-consumption

38
推荐指数
6
解决办法
4万
查看次数

内存使用率差异:cgroup memory.usage_in_bytes与docker容器内的RSS

"Kubernetes"(v1.10.2)说我的pod(包含一个容器)使用大约5GB的内存.在容器内部,RSS更像是681MiB.可以解释如何使用以下数据从681MiB到5GB(或者描述如何从容器或在kubernetes中运行此容器的docker主机中省略的另一个命令来弥补差异)?

kubectl top pods说5GB:

% kubectl top pods -l app=myapp
NAME                             CPU(cores)   MEMORY(bytes)
myapp-56b947bf6d-2lcr7           39m          5039Mi
Run Code Online (Sandbox Code Playgroud)

Cadvisor报告了一个相似的数字(可能来自略有不同的时间,所以请忽略小的差异):

container_memory_usage_bytes{pod_name=~".*myapp.*"}      5309456384

5309456384 / 1024.0 / 1024 ~= 5063 ~= 5039
Run Code Online (Sandbox Code Playgroud)

在容器内部,此文件似乎是cadvisor获取其数据的位置:

% kubectl exec -it myapp-56b947bf6d-2lcr7 bash
meme@myapp-56b947bf6d-2lcr7:/app# cat /sys/fs/cgroup/memory/memory.usage_in_bytes
5309456384
Run Code Online (Sandbox Code Playgroud)

容器内的驻留集大小(RSS)不匹配(小于1GB):

meme@myapp-56b947bf6d-2lcr7:/app# kb=$(ps aux | grep -v grep | grep -v 'ps aux' | grep -v bash | grep -v awk | grep -v RSS | awk '{print $6}' | awk '{s+=$1} END {printf "%.0f", s}'); mb=$(expr $kb / 1024); printf …
Run Code Online (Sandbox Code Playgroud)

memory cgroups docker kubernetes cadvisor

18
推荐指数
2
解决办法
3183
查看次数

PHP实际使用了多少内存?

我注意到,与进程本身认为使用(使用)的内容相比,PHP进程的内存使用情况topps报告之间存在很大差异memory_get_usage.

该进程实际使用了多少内存?

与我的某个应用程序一起运行以下代码时:

echo "Memory usage: " . pretty_bytes(memory_get_usage()) . PHP_EOL;
echo "Peak memory usage: " . pretty_bytes(memory_get_peak_usage()) . PHP_EOL;
echo "'Actual' memory usage: " . pretty_bytes(memory_get_usage(true)) . PHP_EOL;
echo "'Actual' peak memory usage: " . pretty_bytes(memory_get_peak_usage(true)) . PHP_EOL;

$ps_output = exec("ps --pid " . getmypid() . " --no-headers -o rss");

echo "'Memory usage according to ps: " . pretty_bytes(intval($ps_output) * 1000);
Run Code Online (Sandbox Code Playgroud)

随机点的输出是:

Memory usage: 4.77 MB
Peak memory usage: 4.99 MB
'Actual' memory …
Run Code Online (Sandbox Code Playgroud)

php memory

11
推荐指数
2
解决办法
2169
查看次数

为什么JVM比指定的-Xms消耗更少的内存?

我的问题是标题,我通过搜索获得了一些知识:

  1. linux有共享内存 如何衡量应用程序或进程的实际内存使用情况?

  2. JVM将保留在Xms中设置的内存量 -Xms JVM在引用堆内存时的含义是什么?

但还是不知道为什么,有些可以提供一些帮助吗?

这是我在Ubuntu12.04(64位)上的测试运行 JDK 1.7.0_04.和顶部显示如下:

  PID USER      PR  NI  VIRT  RES       SHR S %CPU %MEM    TIME+  COMMAND
 4067 brian     20   0 5316m **262m** 7496 S    0  3.3   0:00.30 java -**Xms4096m** -Xmx4096m Test
 4066 brian     20   0 3182m **256m** 7496 S    0  3.3   0:00.30 java -**Xms2048m** -Xmx2048m Test
 4065 brian     20   0 2114m **252m** 7492 S    0  3.2   0:00.30 java -**Xms1024m** -Xmx1024m Test
 4064 brian     20   0 1314m  **76m** 7584 S    0  1.0   0:00.20 java -**Xms256m** …
Run Code Online (Sandbox Code Playgroud)

java linux garbage-collection jvm

10
推荐指数
2
解决办法
3413
查看次数

如何每隔5秒在linux中找到特定进程的内存消耗

我只是想知道如何在特定时间(比如5秒)找到特定进程的内存消耗

我是linux的新手.因此,这样做的详细步骤将不胜感激

linux memory pid process

9
推荐指数
3
解决办法
8万
查看次数

mac os x下进程使用的内存

给定PID,如何获取进程当前使用的内存?具体我正在寻找:

  • 进程使用的专用物理内存(RAM)
  • 进程使用的交换空间

但我对映射文件和共享内存不感兴趣.简而言之,我想确定通过终止PID释放多少内存(RAM和交换).

memory macos cocoa pid

7
推荐指数
2
解决办法
8578
查看次数

如何在Linux中获取一个进程的内存

可能重复:
Linux:如何衡量应用程序或进程的实际内存使用情况?

为什么我在Linux中使用'top'来显示我对一个进程的记忆,我得知进程的存储只会增加而不会减少,除非我关闭所有进程.我不知道为什么,尽管我使用'免费'只落后'malloc'.如何获得正确的实时实时存储?谢谢大家.

unix linux

6
推荐指数
2
解决办法
6704
查看次数

Golang os/exec,实时内存使用情况

我正在使用Linux,go和os/exec来运行一些命令.我想知道一个进程'实时内存使用情况.这意味着我可以在启动进程后随时询问内存使用情况,而不仅仅是在运行之后.

(这就是为什么在回答使用golang测量可执行的运行的内存使用情况一种选择对我来说)

例如:

cmd := exec.Command(...)
cmd.Start()
//...
if cmd.Memory()>50 { 
    fmt.Println("Oh my god, this process is hungry for memory!")
}
Run Code Online (Sandbox Code Playgroud)

我不需要非常精确的值,但如果它的误差范围低于10兆字节则会很好.

有没有办法做到这一点,或者我需要某种命令行技巧?

linux memory go

6
推荐指数
1
解决办法
2774
查看次数