我们在 AIX 机器上运行两个进程,一个是 Oracle,另一个是 Business Objects。运行时 BO 占用了近 100% 的 CPU 周期,Oracle 显然无法以可接受的速度进行处理。BO 没有为我们提供特定于应用程序的解决方案来防止其使用所有资源。
AIX 中是否有任何方法可以将 BO 进程限制在特定的 CPU 周期百分比或核心数?目前无法将 BO 从这台机器上移走。任何建议都将不胜感激。
答案1
这里我找到了一个关于 AIX 上进程优先级和控制的相当详尽的解释。根据它,你可以得到N
通过输入以下内容来执行流程:
ps -elf | egrep -v "STIME|$LOGNAME" | sort +<N> -r | head -n 15
然后,当您知道哪些进程正在终止系统时(在您的情况下您已经知道..),您可以使用 2 个命令:
nice
- 让您优先考虑内核如何安排其处理。例如,以下命令将把默认值 20 加 10,并创建新的 nice 值 30,优先级为 70。:
# nice -n 10 thisjob
renice
- 允许您再次优先处理已在运行的进程。例如,以下命令将使进程 1683 的 nice 值为 30:
# renice -n 10 -p 1683
这应该足够了,但您可以在上面提到的链接中找到更详细的解释。
答案2
应用程序 WPAR 提供进程隔离,
http://www.ibm.com/developerworks/aix/library/au-wpar61aix/
根据您的硬件,您可能会发现微分区选项或系统 WPAR。
微分区允许您将少于一个 CPU 分配给不同的 OS 实例,但仍允许它们灵活使用,并且系统 WPAR 提供了类似的功能,但在 OS 映像内部。
两者各有优势,但也带来不同的挑战。
或者,您可以像其他人建议的那样,使用优先级来提升 Oracle 的性能。