监控 Linux(Red Hat)上单个进程的负载和资源使用情况

监控 Linux(Red Hat)上单个进程的负载和资源使用情况

有谁知道监控单个程序的负载和资源使用情况的方法吗?我有一个进程,我想知道它给服务器带来了多少负载,但我不能仅仅通过“监控”来了解它。

我想做的是

$ 监控“someapp”&

并让它运行,然后查看某种日志。是否有任何 Red Hat 软件包或可下载的程序可以或多或少地监控整个进程的负载和资源使用情况?

答案1

系统水龙头就是你要找的东西。这不会很容易(但也不会太难),但会有回报。

SystemTap 是 RH 指定并支持用于此类数据收集的工具。rpm 包名称为systemtap。它类似于 Solaris 的 Dtrace。

不,这不是一个模糊的问题。但是……是的,只看一个进程的行为而忽略系统的其余部分可能会给你一个模糊的回答

答案2

问题在于您的请求定义不明确。您说要监视“它对服务器施加了多少负载”,但这不是单一的事情。程序可能导致 i/o 负载、cpu 负载、网络负载、内存“负载”(即内存耗尽),甚至中断负载(如果它们与硬件交互),但所有这些事情都会由内核聚合起来以提高效率。

例如,如果您的进程使用另一个程序正在使用的共享库,那么它要计入哪个程序?如果它使用当前未使用的共享库(因此未加载)怎么办?如果两个进程同时请求加载共享库,磁盘 i/o 会计入哪一个?如果那些磁盘块在预读缓存中,因为一个完全不相关的进程恰好读取了磁盘上“附近”的文件怎么办?操作系统是一种操作系统系统...因此,它表现出复杂的相互作用,不一定允许单独分析各个部分。

以下列出一些可以给你提供有用信息的内容:

  • 当然,top 会根据一些指标向你展示一个排名列表,不过请阅读手册页仔细了解内存核算之类的事情是如何完成的。

  • /proc/ 是内核介导的进程视图,包括它打开了哪些文件句柄、它映射了哪些内存,等等。请参阅手册页了解详细信息。

  • strace 将跟踪程序进行的系统调用,以便您至少可以在一定程度上了解程序正在做什么。同样,手册页有详细的信息。

相关内容