Linux Top命令使用命令行输出两个cpu内核

时间:2016-04-22 20:27:09

标签: linux cpu-usage

我有一个运行linux的2核心系统。我想以15分钟的固定间隔记录各个核心的CPU使用情况。

我可以使用top和regex来获取信息。但它给了我cpu的整体信息。当我手动按“1”时,两个核心用法都会单独显示。

我的问题是如何在调用top命令后无需手动按“1”来显示核心cpu使用情况。

我目前的研究: - 我可以使用-b选项以批处理模式运行并输出到文件。但接下来的问题是如何在批处理模式下将数据输入到top命令。是否有一个脚本,top命令读取以批处理模式运行?

1 个答案:

答案 0 :(得分:1)

Linux top命令从/proc/stat获取其信息,该信息(某种程度上)取决于内核版本。也许你可以编写一个从中读取的程序。以下是来自具有20个核心的2.6.32系统的示例:

cpu  46832272 794980 8521784 1312627944 853989 247 34947 0 0
cpu0 6404288 173468 806918 60455445 377313 1 1799 0 0
cpu1 2980140 137898 937163 64278592 68373 0 118 0 0
cpu2 5099227 86676 841568 62395343 27685 0 64 0 0
cpu3 11255325 20062 767603 56427120 9388 0 85 0 0
cpu4 2618170 1002 501629 65394095 4369 0 62 0 0
cpu5 635453 867 154898 67725523 2981 212 58 0 0
cpu6 343657 32 66510 68113208 2769 0 64 0 0
cpu7 327935 688 38431 68158263 1703 0 55 0 0
cpu8 118687 78 27436 68382190 1992 0 33 0 0
cpu9 329990 49 42224 68138515 1643 0 49 0 0
cpu10 3462177 160918 814788 63701724 202763 3 5444 0 0
cpu11 3006524 112533 484490 64877526 37455 0 6840 0 0
cpu12 2696919 61285 695966 65004324 17277 0 133 0 0
cpu13 3453005 34509 957663 64035215 10938 0 101 0 0
cpu14 2068954 2039 679830 65764151 6418 0 50 0 0
cpu15 628390 159 367213 67531841 2593 0 41 0 0
cpu16 331139 77 76690 68120995 2971 0 51 0 0
cpu17 616895 2482 182239 67595814 70070 29 19797 0 0
cpu18 343472 51 38712 68148369 2481 0 46 0 0
cpu19 111916 96 39803 68379681 2797 0 47 0 0
intr 1991637171 173 2 0 0 2 0 0 0 1 0 0 0 4 0 0 0 0 1 56 1416833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1644 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2285 0 0 0 0 0 0 0 3211641 4799987 3235 31624105 11000098 0 ...
ctxt 3201588026
btime 1460672984
processes 2430161
procs_running 2
procs_blocked 0
softirq 1391193131 0 626556634 166050 33864038 3892307 0 11210298 67287467 2880340 645335997

根据手册页(man 5 proc然后搜索/proc/stat),cpu条目的行为:

  • 以USER_HZ为单位的时间量(大多数架构的1/100秒,使用sysconf(_SC_CLK_TCK)获取正确的值),系统在用户模式下花费的时间,用户模式分别具有低优先级(漂亮),系统模式空闲任务。最后一个值应为USER_HZ乘以uptime伪文件中的第二个条目。
  • iowait - 等待I / O完成的时间; irq - 服务中断的时间; softirq - 为softirqs服务的时间。
  • 窃取 - 被盗时间,这是在虚拟化环境中运行时在其他操作系统上花费的时间
  • guest ,这是在Linux内核的控制下为客户操作系统运行虚拟CPU所花费的时间。
  • guest_nice 运行niced guest虚拟机所花费的时间(用于在Linux内核的控制下获取操作系统的虚拟CPU)。

我也查看了4.4.6内核系统。 cpu条目有第十项。