【问题标题】:How about the performance for running 32bit app in 64bit Linux?在 64 位 Linux 上运行 32 位应用程序的性能如何?
【发布时间】:2011-11-02 20:28:46
【问题描述】:

我在 64 位 Linux 上运行一些 32 位应用程序。我发现 CPU 使用率很高,并且 3/4 的 CPU 用于“顶部”输出窗口中的“sy”。我不明白为什么内核使用了这么多 CPU —— 应用程序中没有太多的 IO 操作。

所以我的问题是:在 64 位 Linux 中运行 32 位应用程序的性能如何?例如,如果应用程序在 32 位 Linux 中占用 10% 的 CPU,那么在相应的 64 位 Linux 中它会占用更多的 CPU 吗?操作系统是否使用某些软件方法来模拟应用程序的运行环境?

【问题讨论】:

标签: linux linux-kernel 32bit-64bit


【解决方案1】:

在 64 位 Linux 上运行 32 位应用程序的性能如何?

我认为,性能是相似的。

例如,如果应用在 32 位 Linux 中占用 10% 的 CPU,那么在相应的 64 位 Linux 中它会占用更多的 CPU 吗?

您应该拆分用户和系统时间。

用户时间将非常相同(相同的代码在 CPU 上运行)

系统时间可能有点大,因为内核需要将来自用户空间的 32 位请求转换为 64 位(尤其是在传递结构时,如在readv syscall 中)。此外,内核应该将 CPU 切换到 32 位“传统”模式(更重的 switch_to 或上下文切换)。内核也应该以不同的方式创建页表。

但是如果您的应用程序在系统调用上花费的时间很少并且执行少量系统调用,那么性能会很好。

操作系统是否使用某些软件方法来模拟应用程序的运行环境?

不,几乎没有仿真(在 x86-64/x86、SPARC64/32、PowerPC64/32 和其他使用_compat 技术的拱门对的情况下)。 Linux 内核仅使用_compat 版本的系统调用处理程序将 32 位系统调用接口转换为内部格式。

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 1970-01-01
    • 2012-03-12
    • 2013-01-19
    • 2011-03-19
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    相关资源
    最近更新 更多