gpt4 book ai didi

solaris - 解释 Solaris 上 prstat 与 'prstat -m' 的差异

转载 作者:行者123 更新时间:2023-12-02 12:16:18 28 4
gpt4 key购买 nike

我最近经常使用 prstat 和 prstat -m 来调查性能问题,我想我基本上已经理解了 Solaris 10 中采样与微状态记帐的差异。所以我不希望两者总是显示完全相同的数字。

今天我遇到了一个场合,两者显示的输出相差很大,以至于我在解释它们和理解输出时遇到了问题。该机器是一台重负载的 8-CPU Solaris 10,具有多个大型 WebSphere 进程和一个 Oracle 数据库。今天系统实际上停止了大约 15 分钟(平均负载>700)。我很难获得任何 prstat 信息,但能够从“prtstat 1 1”和“prtstat -m 1 1”中获得一些输出,这些输出很快相继发出。

输出的顶行:

prstat 1 1:

    PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP  8379 was      3208M 2773M cpu5    60    0   5:29:13  19% java/145  7123 was      3159M 2756M run     59    0   5:26:45 7.7% java/109  5855 app1     1132M   26M cpu2    60    0   0:01:01 7.7% java/18 16503 monitor   494M  286M run     59   19   1:01:08 7.1% java/106  7112 oracle     15G   15G run     59    0   0:00:10 4.5% oracle/1  7124 oracle     15G   15G cpu3    60    0   0:00:10 4.5% oracle/1  7087 app1       15G   15G run     58    0   0:00:09 4.0% oracle/1  7155 oracle     96M 6336K cpu1    60    0   0:00:07 3.6% oracle/1...Total: 495 processes, 4581 lwps, load averages: 74.79, 35.35, 23.8

prstat -m 1 1(几秒钟后)

   PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/NLWP    7087 app1     0.1  56 0.0 0.2 0.4 0.0  13  30  96   2  33   0 oracle/1  7153 oracle   0.1  53 0.0 3.2 1.1 0.0 1.0  42  82   0  14   0 oracle/1  7124 oracle   0.1  47 0.0 0.2 0.2 0.0 0.0  52  77   2  16   0 oracle/1  7112 oracle   0.1  47 0.0 0.4 0.1 0.0 0.0  52  79   1  16   0 oracle/1  7259 oracle   0.1  45 9.4 0.0 0.3 0.0 0.1  45  71   2  32   0 oracle/1  7155 oracle   0.0  42  11 0.0 0.5 0.0 0.1  46  90   1   9   0 oracle/1  7261 oracle   0.0  37 9.5 0.0 0.3 0.0 0.0  53  61   1  17   0 oracle/1  7284 oracle   0.0  32 5.9 0.0 0.2 0.0 0.1  62  53   1  21   0 oracle/1...Total: 497 processes, 4576 lwps, load averages: 88.86, 39.93, 25.51

我很难解释输出。 prstat 似乎告诉我,正在进行大量的 Java 处理,以及一些 Oracle 的东西,正如我在正常情况下所期望的那样。 prtstat -m 显示机器完全被 Oracle 控制,消耗大量系统时间,并且整体 CPU 严重过载(LAT 中数字很大)。

我倾向于相信 prstat -m 的输出,因为它与系统在这段时间的感受更加匹配。完全缓慢,几乎不再处理来自 WebSphere 等的用户请求。但是为什么 prstat 显示的数字差异如此之大?

欢迎对此进行任何解释!

乔,CU

最佳答案

Solaris 上的 prstat -m 在计算 cpu 使用率数据时存在一个已知问题 - 您看到的值是进程中所有线程 (LWP) 的平均值,因此远非如此对于大量多线程进程来说太低了 - 例如您的 Java 应用程序服务器,每个服务器可以有数百个线程(请参阅您的 NLWP)。其中不到一打可能是 CPU 占用者,因此 java 的 CPU 使用率看起来“低”。您需要使用 prstat -Lm 调用它来获取每个 LWP(线程)的详细信息才能看到效果。引用:

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6780169

如果没有进一步的性能监控数据,很难对您在那里看到的内容给出非推测性的解释。我假设java中存在锁争用。可能导致这种情况的一种特定工作负载是大量多线程内存映射 I/O,它们都会堆积在进程地址空间锁上。但当然它也可能是一个纯粹的java用户端锁。 Java 进程之一上的 plockstat 和/或简单的 dtrace 分析会很有帮助。

关于solaris - 解释 Solaris 上 prstat 与 'prstat -m' 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4319459/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com