当前位置: 首页 > 面试题库 >

在Linux(2.6.30)中损坏了getrusage

长孙景天
2023-03-14
问题内容

此代码

 void print_usage(char * msg)
{
    struct rusage usage;
    getrusage(RUSAGE_SELF, &usage);
    printf("Limits: %s\n", msg);
    printf("  %s, %li\n",  " maximum resident set size "    , usage.ru_maxrss  );
    printf("  %s, %li\n",  " integral shared memory size "  , usage.ru_ixrss   );
    printf("  %s, %li\n",  " integral unshared data size "  , usage.ru_idrss   );
    printf("  %s, %li\n",  " integral unshared stack size " , usage.ru_isrss   );
    printf("  %s, %li\n",  " page reclaims "                , usage.ru_minflt  );
    printf("  %s, %li\n",  " page faults "                  , usage.ru_majflt  );
    printf("  %s, %li\n",  " swaps "                        , usage.ru_nswap   );
    printf("  %s, %li\n",  " block input operations "       , usage.ru_inblock );
    printf("  %s, %li\n",  " block output operations "      , usage.ru_oublock );
    printf("  %s, %li\n",  " messages sent "                , usage.ru_msgsnd  );
    printf("  %s, %li\n",  " messages received "            , usage.ru_msgrcv  );
    printf("  %s, %li\n",  " signals received "             , usage.ru_nsignals);
    printf("  %s, %li\n",  " voluntary context switches "   , usage.ru_nvcsw   );
    printf("  %s, %li\n",  " involuntary context switches " , usage.ru_nivcsw  );

}

即使我在相当大的程序中使用它(在jvm启动之后),对于许多字段也只报告零。

   maximum resident set size , 0
   integral shared memory size , 0
   integral unshared data size , 0
   integral unshared stack size , 0
   page reclaims , 2514
   page faults , 0
   swaps , 0
   block input operations , 0
   block output operations , 0
   messages sent , 0
   messages received , 0
   signals received , 0
   voluntary context switches , 137
   involuntary context switches , 1

非零字段是“ *vcsw”,“ *flt”。

所有*rss*swapmsg**block*signals均为零。

有东西坏了吗?

Linux是x86 2.6.30。


问题答案:

是的,它被部分破坏了。并非所有字段都由内核填充。http://www.kernel.org/doc/man-
pages/online/pages/man2/getrusage.2.html

工作领域:

   ru_utime
   ru_stime
   ru_maxrss (since Linux 2.6.32)
   ru_minflt
   ru_majflt
   ru_inblock (since Linux 2.6.22)
   ru_oublock (since Linux 2.6.22)
   ru_nvcsw (since Linux 2.6)
   ru_nivcsw (since Linux 2.6)

未使用的字段:

   ru_ixrss (unmaintained)
   ru_idrss (unmaintained)
   ru_isrss (unmaintained)
   ru_nswap (unmaintained)
   ru_msgsnd (unmaintained)
   ru_msgrcv (unmaintained)
   ru_nsignals (unmaintained)


 类似资料:
  • 问题内容: 我的箭头键在家里不能在vi的插入模式下工作,它们只能插入一个换行符和一个大写字母,例如“ A”。有办法解决吗? 问题答案: 我假设您正在使用vim,因为它被标记为Linux。尝试: (您可能希望通过向其添加此命令来配置.vimrc。如果主目录中尚不存在新的.vimrc文件,请创建一个新的.vimrc文件,运行以检查主目录路径。)

  • Iv创建了两个Springboot应用程序,Iv对其进行了文档化并创建了本地容器。当我通过intellij在我的机器上本地运行应用程序时,它们工作正常。localhost:8080上的应用程序A有一个Spring WebClient,其中有一个base Urllocalhost:8081配置为调用在端口8081上运行的应用程序B。这工作得很好。 当我将这些容器添加到 docker compose

  • 问题内容: 我最近在Mac上安装了许多点文件以及其他一些应用程序(我改为使用iTerm代替Terminal,将Sublime设置为默认文本编辑器),但此后,尽管它们的文件夹位于.virtualenvs中,但我所有的虚拟环境都停止了工作仍然在那里,每当我尝试在其中运行任何命令时,它们都会给出以下错误: 我已经删除了所有与dotfiles相关的文件,并将.bash_profile还原到以前的状态,但是

  • 问题内容: 我正在尝试做一个简单的例子… 在IE10中 窗口/标签页之间(相对于iframe) 跨起源 删除这些条件中的任何一个,一切正常:-) 但是据我所知,只有两个窗口共享一个原点时,窗口间才在IE10中起作用。(事实上​​,而且很奇怪,这种行为比这更宽松:共享 宿主的 两个不同来源似乎也起作用)。 (注意:此问题涉及问题,但答案是关于IE8和IE9的,而不是10) 更多详情+示例… 启动器页

  • 问题内容: 从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 人们经常说在Python 2中应该避免使用它。我在Python 2中的使用中发现,除非我提供所有示例这样的参数,否则它永远不会达到我期望的方式: 在我看来,

  • 问题内容: 有些人认为这样做存在一些缺陷,即使正确使用也无法保护您的查询。 带一些化石的物品作为证明。 因此,问题是:mysql [i] _real escape_string()完全不可接受吗? 还是仍然可以使用此功能来创建自己的预备语句? 请提供校对码。 问题答案: 从MySQL的C API函数描述 : 如果需要更改连接的字符集,则应使用函数而不是执行(或)语句。的工作方式类似,但也会影响所使