问题标签 [getrusage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何获取给定 ID 的线程使用的 CPU 时间?
因此,我想获取给定 ID 的线程使用的 cpu 时间。getrusage
在这里不适用,因为getrusage(RUSAGE_THREAD, &r_usage);
返回调用它的线程使用的资源,在这里我想获取一个线程的资源,而不是我所在的线程。
c - 这个“警报”错误是什么意思?
我正在尝试获取算法消耗的内存,因此我创建了一组函数,它们会在 10 毫秒内停止执行,让我使用 getrusage() 函数读取内存。这个想法是设置一个计时器,该计时器将向进程发出警报信号,该信号将由处理程序 medir_memoria() 接收。
但是,程序在中间停止并显示以下消息:
读取内存的代码是:
main() 函数按以下顺序调用它们:
- rastrear_memoria()
- 我正在测试的算法的功能
- detener_rastreo()
我该如何解决这个问题?那个报警信息是什么意思?
c++ - getrusage中的“ru_maxrss”是什么意思
test.cpp
我在我的 macOS Sierra 上编译并运行了以下 c++ 代码。
然后得到:
然后我发现这里ru_maxrss
的单位是千字节 ,所以程序使用了663552千字节?但我只是创建了一个整数。
另一个问题是:ru_maxrss
计数int b = 2
吗?或者它只是在调用之前计算内存使用量ru_maxrss
。
c - 子进程的getrusage
我正在开发一个 C 程序,其中我必须处理fork()
一个进程并使用该getrusage()
函数来打印子进程的用户时间和内核时间。
这是我的代码:
而且我的输出都是零......可能我误解了它的getrusage()
工作原理。否则我看不到错误在哪里。
c - C - 对儿童用户和内核时间使用 getrusage
正如我的教授所说,我有这个编程任务,我需要使用 getrusage 来查找“孩子们在做什么”。我RUSAGE_CHILDREN
在switch(fork())
. 我只需要占用内核和用户时间。
这是我的程序。我总是得到内核的时间小于用户的时间,即使对于 I/O 命令,所以我认为某处有错误,但我不知道它在哪里,这是我第一次使用 getrusage。
c - 程序的编译是否在执行前将一些数据存储在缓存中?(C,Linux)
程序的编译是否在执行前将一些数据存储在缓存中?
我在 Linux 中编写了一个 C 程序,它在一个线程中启动 Sublime Text,并在另一个线程中进行手动系统调用。(我将在最后解释为什么我这样做,因为这与这个问题无关)
我正在使用getrusage来测量 I/O 的数量。
我的问题是,编译后 I/O 输入的数量减少了很多。换句话说,如果我在编译和执行之间不释放缓存和内存,I/O 的数量就会减少很多。为什么以及如何发生这种情况?请参阅以下案例。
案例 A - 1) 编译 2) 执行
案例 B 1) 编译 2)释放内存和缓存 3) 执行
如您所见,输入的数量是 Case A < Case B。这意味着在其编译过程中发生了某些事情,并且受到释放缓存和内存的影响。
为什么以及如何发生这种情况?我在哪里可以了解更多信息?
完整代码:https ://pastebin.com/R6v00LLW
我的代码的缩写版本:
该计划的目的:
我试图想出一些方法来改善应用程序的启动/加载时间。我在想也许我可以通过使用多线程进行手动系统调用来加快这个过程。我只是一名学生,所以我的方法可能完全错误。我已经可以想到为什么这不起作用,因为线程是并发执行的,可能会在这些系统调用之前调用 execvp :(
func1 进行手动系统调用,而 func2 执行 Sublime Text。
这是我在操作系统课上的学期项目的一部分。我正在通过 Windows 10 上的 VirtualBox 在 Linux MintMate 上运行它。
c++ - Linux getrusage() maxrss 最大驻留集大小不随分配增加(C++)
我正在尝试使用getrusage(.)和最大驻留集大小 (maxrss) 来检查内存泄漏。但是,当我故意尝试创建泄漏时,maxrss 不会改变。也许我对 maxrss 的理解不够深入。这是代码:
在分配(~15000kb)之后我得到了完全相同的值。在 Ubuntu x86 上。
c++ - 可移植的相当于 C++ 中的 getrusage()?
在 Linux 上编译时,我们使用getrusage()
它来深入了解某些操作在每个线程中占用多少 CPU 时间:
但是,由于该调用在 Windows 上不可用,因此我们必须#ifdef
在平台上进行调用。
我敢肯定,Windows 有自己的方法来获取相同的信息,但我想知道是否有一种可移植的方式——要么使用标准 C++11,要么使用我们已经在项目中使用的 Boost反正...
c++ - 测量函数调用期间的最大内存使用量
我有一个 Linux/Mac C++ 库,它以函数调用的形式执行一系列步骤。我想测量每个步骤中的最大内存使用量。
我对临时解决方案不感兴趣,比如启动另一个轮询内存使用情况的线程、运行分析器等。
到目前为止,我发现getrusage()
它存在于 Mac 和 Linux 上并且确实返回了最大内存使用量,但是似乎没有办法在每次函数调用后重置这个最大值。
有没有办法绕过这个限制?
编辑:要清楚,我不想征用malloc()
/free()
并记录所有内容。我想要一个适合继续运行生产代码的解决方案。
c++ - getrusage 不适合我吗?为什么?
我正在尝试测量最大驻留集大小,我发现您可以使用 getrusage 做到这一点:
- https://linux.die.net/man/2/getrusage
- http://pubs.opengroup.org/onlinepubs/009695399/functions/getrusage.html
当我运行这个
当我评论向量的声明时,我得到了相同的值。
有什么我做错了吗?
谢谢!