2018年4月22日 simics.

在WindRiver®Simics®虚拟平台上运行“大”软件,然后现在

由嘉宾作者Jakob Engblom

jakob-for-wr-jive

这是一系列帖子中的第一个,它将查看WindRiver®Simics®虚拟平台的过去,现在和未来。2018年,自商业推出作为产品以来是20年。当时回来于1998年,Simics是由一个名为Virtutech的初创公司销售,该公司于2010年由英特尔公司的Wind River收购。

要在虚拟平台上运行真实世界软件,Simics团队始终竞争目标可扩展性和仿真速度。实际服务器工作负载20年前已经在SIMICS上运行。但是算作“大”软件,那么今天的意思是两种不同的东西。让我们回顾一下,然后与今天的混合物进行比较。

然后……

一个精英纸20年前发布的已描述Quad-Processor虚拟的Simics如何启动未经修改的Sun * 2.6和Linux * 2.0.30操作系统(OSS)Sun4m-架构基于SPARCstation*使用来自真实机器的磁盘映像。该设置用于运行Mozilla* 5.0 web浏览器,以及使用PostgreSQL*数据库的事务处理委员会的TPC-D数据库基准测试软件。这在当时是很了不起的:全系统模拟和虚拟平台仍然是新事物。仅仅从一台真实的机器上获取一个软件堆栈,并在模拟器中快速运行它,以便进行交互使用,这几乎是闻所未闻的。

模拟的Sun4M架构用于使用各种32位SPARC V8 RISC处理器的工作站和服务器。这些平台最多支持512 MB的RAM,最多四个处理器,最多为200 MHz时钟频率。

大多数实际的硬件系统都比较普通,时钟在100兆赫兹以下,内存在100 MB以下。一个大的软件安装可能需要几百兆的内存——今天,微软Word在我写这篇博客的时候就在我的笔记本电脑上使用了这么大的内存。

混合回来然后在核心仿真指令集处理引擎中使用纯粹的解释器。这使得它比实际硬件慢25-100倍。尽管如此,它仍然足够快,以便在合理的时间内启动Solaris所需的亿目标指示。当时,这是最先进的。

…现在

今天,一个高端系统可以拥有512 GB RAM (SPARCstation上面的1000倍),40多个核(10倍),处理器核心时钟频率为2到5 GHz(25倍)。由于微架构的改进、新的指令和其他创新,我们在今天的系统上运行代码的速度可能比20年前快100倍。

SIMICS也有所改善以跟上时间。这些天1998年使用的解释器模式很少使用。相反,SIMICS依赖于VMP(使用IA-32,英特尔®44和英特尔®架构(VT-X)的英特尔®虚拟化技术直接在主机上运行英特尔®架构的目标代码)和即时(JIT)编译器技术将目标代码转换为主机代码。这些技术在运行代码时使虚拟机的放缓低至1倍。因此,Simics在现代硬件的型号上运行大量工作负载。

要了解工作负载和虚拟平台的范围是否已更改,让我们看看多年来我们在SIMICS上运行的一些软件示例。我们从一些Java示例 - 在1998年,大多数服务器软件都是本机,用于特定处理器体系结构和操作系统。但Java正在客户端开始,几年后,它跳到了服务器端。由于使用Java虚拟机(JVM)来运行字节代码而不是本机代码,为构建业务应用程序提供了一个多主题独立的环境。因此,今天在SIMICS上运行JVMS非常常见。

just -in- time及时运行

在SIMICS上运行的Java *基于基准测试提供了堆叠计算图层的有趣示例。在顶级级别,Java代码在Java虚拟机(JVM)的顶部运行。JVM使用JIT编译器将JVM字节代码转换为目标系统代码以进行执行。接下来,目标代码在包含自己JIT的SIMICS虚拟平台上运行。SIMICS JIT将目标系统代码转换为主机系统代码。主机系统代码在SIMICS主机上运行 - 请参阅下图:

SIMICS主机图1

虚拟平台和虚拟机的堆叠工作得很好!注意,除了JIT之外,Simics“VMP”技术通过使用用于IA的Intel®虚拟化技术(Intel®VT)直接在主机上运行Intel architecture (IA)目标代码。这使得Simics的性能类似于在实际硬件上运行的典型虚拟机(VM)或管理程序。

specederprise在simics上

我们的第一个Java示例是specjenterprise 2010.,一个基准从标准性能评估公司(规范)将业务工作负载与Java *编写的应用程序服务器模仿业务工作负载,与后端数据库交谈。安装程序包含一个驱动程序实用程序,可向应用程序服务器发送刺激,又使用数据库。specjenterprise测量系统性能,包括硬件,JVM,数据库引擎,网络和其他组件。我们在Simics上运行Specjenterprise作为平台测试案例,因为它是测试操作系统集成的好刺激,统一可扩展固件接口(UEFI)和硬件平台。

specjenterprise需要至少两台机器运行:一个用于数据库,一个用于应用程序服务器。驱动程序实用程序可以在与应用程序服务器上的同一台计算机上运行。SIMICS设置如下所示,单个SIMICS过程中有两个目标系统。这提供了整洁的封装,不依赖于运行外部软件或协调多个仿真程序。在实践中,使用的两个Linux发行版略有不同,因为每个软件堆栈都附带了自己推荐的Linux操作系统。

风河模拟图2

两个目标机器具有相同的硬件配置,它们使用10Gbps以太网连接。每个目标都有四个处理器核心分为两个套接字,192 GB的模拟RAM(每个插座连接96 GB)。总的来说,Simics Setup模拟了384 GB的目标RAM。每个目标系统的四个处理器核心是一个足以运行基准设置的小配置;SIMICS平台可以支持更多的核心。截至1998年,Simics支持各种方式到物理平台的极限,及以后

运行时,此配置在300到400 GB之间使用的主机物理RAM - 大多数模拟目标RAM最终被使用,因此在SIMICS中表示。如上所述以前的博客文章如果内存不用于活动数据,则Simics可以模拟非常大的目标存储器而不使用主机RAM。

这两个系统都有自己的模拟磁盘,每个磁盘都有自己的映像。这个映像是一个完整的可引导磁盘,与您在物理系统上使用的磁盘基本相同。进行全栈软件开发和执行独立于硬件硬件出现之前是虚拟平台的主要优点。

根据服务器负载,虚拟平台放缓大约为4倍。每个基准测试在目标机器上运行大约3.5小时,然后在12到14小时之间运行,以在实际时间(墙上时钟)中运行,具体取决于服务器上的负载,它适用于左右4次。这是适用于这种工作量 - 以及比1998年更好的数量级!

specjb上的simics.

SpecJBB 2015.被称为“Java Server Business Benchmark”。它测量Java虚拟机的性能,包括三层“业务应用程序”。SpecJBB 2015可以使用不同数量的JVM实例。在我们的设置中,我们使用单个JVM。基准在一个目标机器上运行,在现实世界和Simics上。

Wind River Simics图3

上面显示了SIMICS中的设置。它包含一个具有384 GB的模拟RAM的单个服务器目标系统,以及跨两个套接字分隔的四个处理器核心。软件堆栈在Linux上运行,就像specjenterprise一样。目标系统服务器使用真实的UEFI从正在建模的真实平台,服务器模型是服务器平台的完整模型,其中包含特定硬件平台的所有细节和特点,包括处理器核心,uncore, 和平台控制器集线器(PCH)。它不是“通用系统”,而是一个相当特定的模型。

SIMICS上的每个SPECJBB目前在虚拟平台上运行大约3.5小时,并且大约12个实际时间完成(取决于在运行SIMICS上运行的其他负载)。这是一个低于4倍的放缓,类似于specjenterprise。

对西米奇HammerDB

哈默德是一个开源数据库负载测试和基准测试工具。它不是一个数据库,而是一个数据库,而是一个“锤子”数据库的工具与交易以在负载下测试其性能。要运行HAMMERDB,您可以使用两个单独的机器,一个与数据库,一个运行HAMMERDB工具。通过将两个服务器计算机放入单个SIMICS实例,就像使用specjenterprise一样,通过将两个服务器计算机置于SIMICS中复制了此设置。

Wind River Simics图4

HAMMERDB在每个模拟目标机器中需要“仅”128 GB RAM,每个处理器插座连接64GB。根据同时从服务器上运行的其他软件的负载,HAMMERDB最多需要20小时的主机时间来运行1.5到2小时的虚拟时间 - 仍然在10倍的时间内。我认为虚拟的非常合理平台,特别是考虑系统的规模。它比1998年观察到的放缓更好。

HammerDB具有图形用户界面(GUI),用于执行测试和检查结果。GUI在连接到SIMICS模型的控制台上显示。大多数其他测试使用串行控制台运行,因为服务器工作负载被设计为无头。SIMICS脚本用于自动化测试执行并确保运行的再现性

HHVM oss-performance

我们的最后一个示例是一个基于web的工作负载,它使用另一个虚拟机系统,它的目标是PHP和Hack语言,而不是Java。HHVM(“HIPHOP虚拟机”)是PHP和Hack的开源虚拟机,提供了运行许多web应用程序和框架的高性能方法。的HHVMOSS-Performance.基准使用nginx.作为Web服务器,在HHVM下面。要为Web服务器生成流量以及运行的应用程序,OSS性能使用围攻基准测试工具,它“包围”web服务器,以测试其流量处理能力。

整套软件在单个Simics目标计算机上运行,​​在单个Linux操作系统中,:

Wind River Simics图5

运行OSS性能基准所需的硬件资源比上面讨论的软件堆栈更加适度。24 GB的目标RAM就足够了。这示出了不同软件堆栈展示的规模的变化。例如,SpecJBB需要一个数量级的内存来运行,因此以非常不同的方式强调目标系统软件和硬件。

OSS-Performance Benchmark是一套Web应用程序测试,在一次运行期间按顺序运行。每个组件基准通过启动Nginx和HHVM启动,然后启动Web应用程序在HHVM之上测试。一旦Web应用程序启动并运行,筛选基准引擎启动,并且特定于应用程序的基准程序运行。筛选在同一目标机器内使用网络套接字连接到nginx。每个组件基准从SIMICS脚本开始。它观看目标系统的串行端口,用于输出字符串,并发出命令到串行端口 - 一个很好的例子,了解如何从外部自动化目标系统上的长期操作,并通过目标上的复杂操作序列工作系统。

根据主机和另一个负载,每个运行OSS-Perficitional基准需要大约一小时的虚拟时间,需要六到八个实际时间。因此,放缓小于10个倍数。

二十年的虚拟平台

我们从目前的用例中看到的是,当技术是新的,20年前,它的态度是它的同样的事情:它在虚拟平台上运行了建模最新硬件的虚拟平台上的软件,它可以使用足够快的方式虚拟平台上的全尺寸标准软件,用于软件验证,集成测试和开发。

工作负载现在在虚拟平台上使用多个数量级更多的内存和处理器时钟周期而不是物理系统。根据模拟的处理器频率,需要一个小时才能在虚拟时间内运行的工作负载将通过40到60个目标时间和数十万亿指令的浮动。1998年的OS启动需要十亿个指令,但今天的OSS需要略高

幸运的是,主机和模拟程序随着工作量的增加而增加。正如Simics可以在1998年运行当代服务器工作负载一样,它也可以在2018年运行当代服务器工作负载。在实践中,随着JIT编译器、VMP技术的出现,模拟机器和主机之间的差距实际上已经缩小了多线程

欲了解更多信息,请访问风河系统公司西米奇页。

*最初发表的文章英特尔软件开发人员区域

以前的2018年世界移动大会视频:创新生态系统合作伙伴
下一个Wind River和Vector合作研发汽车行业适配的autosar空中更新解决方案