Articles of 资源

Linux中每个进程的编程资源监视

我想知道是否有一个有效的解决scheme来监视Linux中的进程资源消耗(CPU,内存,networking带宽)。 我想用C ++编写一个守护进程来监视某些给定的PID。 据我所知,经典的解决scheme是周期性地从/ proc读取信息,但这似乎并不是最有效的方式(涉及很多系统调用)。 例如,为了监视50个进程每秒的内存使用情况,我必须每秒从/ proc打开,读取和closures50个文件(这意味着150个系统调用)。 更不用说在读这些文件时涉及的parsing。 另一个问题是networking带宽消耗:对于我想要监视的每个进程,这是不容易计算的。 NetHogs采用的解决scheme涉及到相当高的开销,我认为它使用libpcap捕获和分析每个数据包,然后为每个数据包确定本地端口并在/ proc中search以find相应的进程。 你知道是否有更有效的替代方法提出这些方法或任何图书馆处理这个问题?

跟踪线程内存和CPU消耗

我正在编写一个观察其他应用程序并跟踪资源消耗的Linux应用程序。 我正在计划使用Java,但编程语言对我来说并不重要。 目标很重要,所以我可以切换到其他技术或使用模块。 我的应用程序作为subprocess运行任何选定的第三方应用 大多数孩子软件解决了一些algorithm,如graphics,stringsearch等。观察程序跟踪孩子的资源,而它结束了工作。 如果子应用程序是multithreading的,也许有可能跟踪多less资源消耗每个线程? 可以使用任何非分配内存线程技术来编写应用程序:Java线程,Boost线程,POSIX线程,OpenMP,任何其他。

我如何检测Linux中的文件访问?

我有一些stream量和数据处理应用程序,我偶尔需要监视,这意味着我需要知道他们读的是什么文件。 这主要是为了帮助包装testing用例,但在debugging时也很有用。 有没有办法以这样的方式运行可执行文件,生成这样的列表? 我有两个想法: 有一个命令,我可以调用,该命令调用我的应用程序。 GDB的一些东西。 我调用GDB,给它一个可执行文件的path,一些参数和GDB为我调用它。 也许有类似的东西告诉我如何使用系统资源。 也许更有趣(但是不必要的方法)解决scheme。 创build名为libc.so的库,它实现了fopen(和其他一些库) 将LD_LIBRARY_PATH更改为指向新库 复制真正的libc.so,并在编辑器中重命名fopen(也许是nepof) 我的库加载副本并根据需要调用重命名的函数来提供fopenfunction。 调用应用程序,然后调用我的代理打开。 替代scheme1肯定会是更好的select,但是如何更容易做到2的评论也是受欢迎的。

在Windows上的Qt可执行文件中设置应用程序信息

任何人都有提示从Qt设置应用程序信息(即右键单击.exe->属性)? 我可以添加任意版本的string到Qt资源文件(qrc)并显示它们。 但大多数Windows安装程序检查版本号,我找不到一个Qt的方式来设置这些字段,而不是手动维护一个单独的.RC文件 某种方式可以让你从一个自动化版本更新这也是很好的!

使用UpdateResource更新string表

我问这里的问题 – 通过UpdateResource更新STRING TABLE(添加多个string) 现在我又问了一遍,因为这次我可以在这个问题上增加更多的细节。 我一直在尝试这个过去的一天,或没有真正有用的东西。 我想要的结果是这样的(我手动添加MSVS中的string):正如你可以看到,多个条目,它是“干净”,可以很容易地被程序访问! 现在,我的来源: wstring buffer[5] = {L" Meow",L" I",L" Am",L" A",L" Dinosaur"}; // ignore the string if (HANDLE hRes = BeginUpdateResource("Output.exe",TRUE)) { for (int i = 0; i < 5; i++) { wchar_t * temp; temp = new wchar_t[(buffer[i].length()+1)]; wcscpy(temp,buffer[i].c_str()); wcout << temp << endl; UpdateResource(hRes,RT_STRING,MAKEINTRESOURCE(1),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), temp, 48); //buffer[i].length()+1 […]

学习编程Windows驱动程序

你会推荐什么样的资源来学习驱动程序。 我正在通过编程Microsoft Windows驱动程序模型的方式,但我想知道是否有任何示例是Vista兼容。 另外,本书更是目前内核function的参考。 是他们的一个资源,将采取手中的初学者做一个更midmid wdm司机? 我已经做了基本的“你好世界”的驱动程序。 谢谢

适用于Linux的Windows资源编辑器

有没有Linux(FreeBSD等)的命令行工具,可以修改像exe文件资源黑客版本信息? 在Windows下有一些这样的工具,但是我正在FreeBSD上交叉构buildWindows Tcl Starpacks。 在源文件中,可以用我的versioninfo和图标重新编译TclKit,但是我不想为每个不同的应用程序执行它 – 看起来,调整starpack的.exe后来是一个更好的解决scheme。 提前致谢。

如何使用资源文件(txt – 制表符分隔)作为win32应用程序的数据源

我正在一个win32应用程序。 我目前正在使用具有制表符分隔的数据作为源的文本文件。 我想embedded这个作为一个资源,所以我不用担心运输这个文件与.exe文件一起。 谁能告诉我怎么做?

我怎么知道我的进程是CPU限制,I / O限制,内存限制还是

我试图加快编译我的应用程序的时间,而我正在研究的一件事是检查哪些资源(如果有的话)可以添加到构build机器中以加快速度。 为此,我该如何确定是否应该投入更多的CPU,更多的内存,更好的硬盘或者是否有其他资源绑定进程? 我已经看到了这个( 如何检查应用程序是cpu绑定还是内存绑定? ),我正在寻找更多的技巧和指针。 我到目前为止所尝试的是: 在构build机器上对我的本地计算机上的进程计时。 我发现构build机器的时间是我的机器的两倍。 运行“资源监视器”,在进程运行时查看CPU使用情况,内存使用情况和磁盘使用情况 – 在这样做的时候,我很难解释这些数字,主要是因为我不明白每列的含义以及如何转化为一台虚拟机与一台物理机箱,以及它对多CPU机箱的意义。

在multithreading应用程序中等待variables的最佳方法是什么?

我想为multithreading程序做如下的事情: // wait for variable to become true but don't hog resources // then re-sync queues 这是一个很好的解决scheme吗? while (!ready) { Thread.Sleep(250); // pause for 1/4 second; };