我有一款多线程软件,它在最新的 ubuntu 服务器、redhat enterprise 和 CentOS 下以不同的速度运行 - 所有这些都安装在同一台服务器上以供比较。
Ubuntu 服务器最慢,其次是 CentOS,然后是 Redhat Enterprise。差异在 10-20% 之间。
centOS 和 redhat 之间的差异可能通过较新的 gcc 版本来解释,但至少在最后两个操作系统中使用了相同版本的 gcc。
我在 ubuntu 运行中看到,尽管该程序使用了 13 个核心,但“top”报告的总 CPU 约为 1220%,而在 redhat(和 centOS)上则为 1300%
有人能解释一下吗?我更喜欢使用 Ubuntu(它是免费的),但我无法承受速度变慢的后果。我尝试了其他多线程基准测试,这些测试似乎也表明 ubuntu 的速度稍慢一些 - 在同一个下载的可执行文件上,而不是在本地编译的。
答案1
这不是一个结论性的答案,只是一些太长而无法评论的想法。
尝试使用
atop
而不是top
。它提供了更好的视图来查看正在发生的事情。我发现这些天的输出top
也非常不一致。我无法解释原因,但我看到了与多核相同的行为。这些安装是否偶然发生在 VMWare 中?我使用各种工具在 5 个不同的 VM 上运行了一些基准测试,这些 VM 运行了 5 个不同的发行版:Ubuntu、CentOS、RHEL、SUSE 和 Debian。我得到了截然不同的结果,似乎与我能找到的任何东西都无关。当我将这个问题上报给 Red Hat 时,我收到的建议是,某些发行版的内核比其他发行版的内核更适合 VMWare。不过这是几年前的事了,所以情况可能已经发生了变化。
您能否更好地描述您在应用中运行的内部基准测试?这个问题很容易最终被搁置在 serverfault 和 stackoverflow 之间……