X86

從 arm 虛擬化 x86 與從 x86 虛擬化 x86 的性能損失

  • April 15, 2019

我不完全確定這是否是這個問題的正確位置,但我想建構一個伺服器來執行一些實驗並且我正在考慮 arm,我的大部分程式碼都可以編譯為在 arm 上執行,但會有一些外部依賴項它可能必須在 x86 上執行,所以我試圖了解它的外觀。

我知道從 arm 執行 x86 應用程序會降低性能。我不完全清楚這是如何處理的——例如,我假設如果給定的應用程序沒有為 arm 編譯,它將不會在 arm 環境中本地執行,那麼呼叫這樣一個應用程序的過程是什麼——例如作業系統是否辨識它作為一個執行檔並以某種方式在後台模擬 x86 呼叫(我猜可能依賴於作業系統),或者您是否必須啟動一個完整的虛擬化 x86 環境才能執行這些 x86 應用程序。

我使用了一系列虛擬化技術,我對這將如何影響典型的 2 類管理程序特別感興趣(從 x86 到 x86 與 arm 到 x86 是否有額外的懲罰,以及無論如何映射視窗呼叫的 wine 之類的東西 - 是在這個時候甚至支持這個?

希望簡要說明其工作原理以及所描述操作的任何性能基準的連結

在 ARM 上執行 x86 需要仿真。透明度和易用性取決於您的環境。

ARM 上的 Windows 10 擴展了 WOW64。目標是一個可與 x86 應用程序一起使用的 ARM 設備。還沒有建構伺服器,儘管大概這樣的東西正在 Azure 內部進行測試。

另一個使用者仿真範例:Linux 上的 QEMU 使用 binfmt_misc 使其更加使用者友好。無需模擬硬體並執行另一個核心。但是,您確實需要像交叉編譯時那樣提供其他架構的庫。

模擬硬體,您可以創建任何您想要的虛擬機。使用 QEMU 在 x86 上的 ARM VM就是一個例子。這是虛擬硬體上的不同核心,但虛擬機現在很熟悉。

性能成本,再次變化。本地二進製文件當然是最好的,CPU 指令重寫可以接近本地,模擬整個電腦有點慢。

最壞的情況是,您為各自的工作負載購買了 ARM 和 x86 機器。操作有點複雜,但您可以獲得硬體多樣性。

引用自:https://serverfault.com/questions/963136