【问题标题】:Why I'm not using 100%? [closed]为什么我没有使用 100%? [关闭]
【发布时间】:2013-12-04 03:35:28
【问题描述】:

我正在 IBM WebSphere Application Server v8.5.5.1 中执行一个长时间运行的批处理,它从 ECM 存储库获取数据,然后将其转换为 PDF 文档。它运行大约 20k 个小文档,构成整个批次。

现在我的速度约为 20 文档/秒,但系统的 CPU 使用率只有 45-55%,所以有些东西阻止我让它全速工作

我在 HP Proliant DL385p Gen8 上运行 Windows 2012 R2 Standard(32GB RAM,2 个 AMD Opteron 6272,每个具有 16 个 2.1GHz 内核)

所有资源都存储在本地,因此几乎不会影响网络流量。

我也尝试将 PDF 输出文档写入 RAMDISK,但完全没有改进。

我应该从哪里偷看让这个进程使用我的服务器的全部功能?

谢谢!!

PS:请看附件图片

CPU Usage graph

【问题讨论】:

  • 如果我没记错的话,47% 的 CPU 使用率意味着 16 个核心中有 8 个处于全速运转状态。代码线程是否正确?
  • 我实际上是在使用 ThreadPoolExecutor(64 个线程池大小)对进程进行多线程处理。在我看来,它只使用了 1 个 CPU,但 Java 应该跨越所有可用的 CPU,我说得对吗?
  • 您可能应该查看资源监视器并确保您的瓶颈不在硬盘驱动器或网络上。在我看来,这种活动很快就会被 I/O 阻止。
  • Peek,我已经查看了网络和 HDD,但它们没有显示百分比使用情况,这就是我什至尝试 RAMDISK 方法的原因。有什么建议吗?
  • 我会建议使用线程数并找出测试 I/O 饱和度的方法。

标签: java performance websphere windows-server-2012-r2


【解决方案1】:

我认为实际问题是您完全使用了一个 CPU 而不是另一个。

好消息是,您可以轻松地对应用程序进行多线程处理以使用两个处理器;只需设置一个任务队列并调整您拥有的工作线程数量,直到达到 100% 的使用率。

【讨论】:

  • 正如所有内容都指出只使用了 1 个 CPU,我决定创建一个新的 WAS 配置文件并并行触发 2 个批次,结果 CPU 使用率最终跃升了 50% 至 75% 左右。因此不知何故,IBM 的 JVM 仍然使用绿色线程,或者单个 ThreadGroup(来自 ThreadPoolExecutor)仅绑定到单个 CPU。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2011-06-20
相关资源
最近更新 更多