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 如此之高。
请让我知道您的想法以及我是否理解正确?
谢谢你的帮助。