二进制编译

xaGear是一款二进制指令动态翻译软件,运行在Arm64服务器上,通过将x86的指令在运行时翻译为Arm64指令并执行,使得绝大部分x86应用无需重新编译就可运行在Arm64服务器上,实现低成本、快速迁移x86应用到Arm64服务器。

ExaGear安装过程中,更新Linux的binfmt_misc组件将x86应用的解析器注册为ExaGear,安装完成后主要有两个组件:指令翻译引擎和x86运行环境。

指令翻译引擎
ExaGear的指令翻译引擎是一个“中间件”软件解决方案,位于x86应用程序与Armv8架构服务器之间(见图1)。x86应用启动时,Linux内核通过binfmt_misc识别x86应用,并通过ExaGear的指令翻译引擎对x86进行加载执行,在运行时翻译为Arm指令并执行。对执行x86应用的用户而言,整个过程是简易且透明的,和操作Arm应用无差别。
在这里插入图片描述

图1 ExaGear的概念性表示

x86运行环境
x86运行环境是ExaGear创建的一个包含所有标准库、实用程序、配置文件的x86应用执行环境,这确保了x86应用程序运行所需的基础设施组件的可用性。从技术角度讲,x86运行环境是一个特定的文件目录,包含了x86库、命令、实用程序和其它系统文件(见图2)。x86应用程序的二进制文件也必须存放于x86运行环境中。
在这里插入图片描述

图2 x86运行环境的概念性表示
特性:
支持多种部署方式:支持在物理机、虚拟机、容器等平台上部署;
部署简单:一键式快速安装,x86应用部署和运行与迁移前保持一致;
支持多版本guest Linux OS:目前支持CentOS 7、Ubuntu 18、Ubuntu 20,并且根据用户需求,未来可定制支持更多Linux OS发行版;
低损耗: 大多数场景的应用,翻译损耗在10%以内。
技术约束:
只支持用户态 x86应用, 不支持驱动、虚拟化平台等内核程序的翻译。
支持x86通用指令和SSE、AVX扩展指令和AVX2,不支持AVX-512指令。
当前支持的guest OS为CentOS 7、Ubuntu 18、Ubuntu 20。
已知产生内存序问题的库已在白名单列表中,“x86强内存顺序模型”设置项关闭。在需要“功能优先”的场景,可以打开设置项。具体见2.3.5(或2.4.5) - 内存顺序模型介绍。
浮点计算相关的“x86位相同精度”和“80位x86精度”设置项默认关闭。在需要绝对浮点精确的场景下,可以分别打开对应设置项。具体见2.3.5(或2.4.5) - X86位相同精度、80位 X86精度介绍。
Linux on x86应用,在运行时涉及的文件或文件夹的绝对路径的字符串长度不大于4KB。
在64KB page size的Linux系统上,部分Linux on x86应用可能存在4KB page size的兼容性问题。
不支持ExaGear for Server 和ExaGear for Docker同时部署在同一台机器上。
在ExaGear下载页,选择“软件包下载”获取软件包。

软件包名称:ExaGear_3.1.0.1

目录结构示例
ExaGear_3.1.0.1

— ExaGear_Server_for_Centos7

------ release

— ExaGear_Server_for_Ubuntu18

------ release

— ExaGear_Server_for_Ubuntu20

------ release

— Exagear4docker

------ deb

--------- release

------ rpm

--------- release

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值