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

我有一个在Solaris系统上运行的数据库的多个实例。 我想certificate每个数据库进程正在由不同的CPU处理。 从本质上讲,我希望能够像ps -ef | grep <process_name>这样做 ps -ef | grep <process_name>获取PID,然后运行另一个命令(如果需要)来标识CPU …

prstat能做到这一点吗?

我假设每个数据库实例启动时,每个实例使用不同的CPU。 我不知道如果我正确地理解这个…

我想这样做的原因是因为Sun硬件的CPU速度很慢,但其中很多。 因此,为了获得最佳的性能,我需要尝试在CPU之间传播负载。

谢谢

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

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

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

使用pbind -Qpsrset -q来判断是否是这种情况。

这篇文章说:

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

Prstat在STATE列显示CPU。 这就像cpu0,cpu1等。这些信息是非常dynamic的,当CPU准备运行时,进程将在CPU之间跳转。 大多数情况下,他们可能不会在CPU上,而是等待I / O。 我不确定你想要certificate什么。 操作系统将根据需要使用所有的CPU。

所以,这听起来像是dynamic的。 基本上,我想certificate的是,系统在可用的CPU之间传播负载。 我做了一个假设,当这个过程开始的时候,它被分配给一个CPU,并坚持到死亡。 据说,这听起来好像是由内核在CPU之间传播的呢? 因此,可以假设系统内的负载平衡

问题的原因,Sun CPU的速度很慢。 我们有一个硬件被replace的情况,因为虽然它有32个CPU,但只有一个正在使用,所以它被更大的硬件取代,所以时钟速度可以增加…

我们没有与英特尔和Linux的这个问题,因为CPU只是更快…