Dtrace Oracle 在 Solaris 10 上显示高 fsflush

Dtrace Oracle 在 Solaris 10 上显示高 fsflush

Solaris 10 - 区域中的 Oracle 11G

运行 mpstat 时,我注意到一个 CPU 每 5 秒使用率为 100%,持续 5 秒,而所有其他 CPU 都正常,使用率较高但分布均匀。

1    0   0    0  1154    1 1599   20  105   34    0  7416    9  15   0  76
2   95   0  120  1590  483 1727   33  124   27    0  8069   16   6   0  78
3  128   0    0   861    9 1333   18   96   34    0  6344    9   3   0  88
4    0   0    0   115    0    0    0    0    5    0     0    0 100   0   0
...
31   32   0    0   998   14 1797   15   81   74    0  6426    7   4   0  89

使用 dtrace 并仅查找系统调用

dtrace -n 'profile-997hz /arg0/ { @a[pid,execname,zonename] = count(); } tick-1s { printa(@a) ; clear(@a) } '

21603 sqlplus zone-oracle 59
21669 oracle  zone-oracle 69
21737 oracle  zone-oracle 111
21613 oracle  zone-oracle 180
3     fsflush global      644
0     sched   global      17913

该服务器有大量内存(256G),我相信我在 mpstat 中看到这种行为的原因是由于 fsflush,经过一些阅读(http://docs.oracle.com/cd/E19455-01/816-0607/816-0607.pdf)看起来我应该能够调整:autoup 和 tune_t_fsflushr,但我以前从未这样做过,并且想确保这不会产生任何不良影响。

另外我不太确定应该设置什么值(根据这个旧出版物http://oreilly.com/catalog/spt2/chapter/ch04.html)可以设置得很高。

最后,在阅读 Brendon Gregg / Jim Mauro Dtrace 一书时,我发现 sched 如此之高似乎是正常的,我们在区域中使用 cpu-share 而不是为区域专用 cpu,使用专用会有所不同吗?我只是惊讶地看到 sched 如此之高。

请让我知道您的想法以及我是否理解正确?

谢谢你的帮助。

相关内容