Solaris 10:识别 PID 及其运行的 CPU

Solaris 10:识别 PID 及其运行的 CPU

我在 Solaris 系统上运行了多个数据库实例。我想证明每个数据库进程都由不同的 CPU 处理。本质上,我希望能够执行类似以下操作ps -ef | grep <process_name>来获取 PID,然后运行另一个命令(如果需要)来识别 CPU...

prstat 能做到这一点吗?

我假设每个数据库实例启动时都会使用不同的 CPU。我不确定我是否理解正确...

我之所以要这样做,是因为 Sun 硬件的 CPU 速度较慢,但​​数量众多。因此,为了获得最佳性能,我需要尝试在 CPU 之间分散负载...

谢谢

答案1

使用ps -Pps -o psr(除其他选项外)来显示进程被分配给哪个处理器。

答案2

默认情况下,进程不绑定到特定的 CPU。

您可以使用 pbind 命令将它们绑定到单个 CPU(非独占绑定),或者使用 psrset 命令将它们绑定到一组 CPU(独占绑定)。

使用pbind -Qpsrset -q来确定是否是这种情况。

答案3

邮政说:

top(1) 命令将显示哪些进程正在哪个处理器上运行。

答案4

所以,听起来一切都是动态的。基本上,我想证明的是系统正在将负载分散到可用的 CPU 中。我曾假设,当进程启动时,它会被分配给一个 CPU,并一直停留到被杀死。从所说的内容来看,听起来它会被内核分散到 CPU 中?因此,可以假设系统内的负载平衡

提出这个问题的原因是 Sun 的 CPU 很慢。我们曾经遇到过这样的情况,硬件被替换了,因为虽然它有 32 个 CPU,但只有一个正在使用,所以它被替换为更大的硬件,以便可以提高时钟速度……

使用 Intel 和 Linux 时,我们不会遇到这个问题,因为它们的 CPU 速度更快……

相关内容