(KVM连载) 8.2.3 KVM CPU性能测试方法

8.2.3 性能测试方法

本节的CPU性能测试选取了SPEC CPU2006、内核编译和Super PI这三个基准测试来对比KVM客户机与原生系统的性能。下面分别介绍一下在本次性能中使用的具体测试方法。

1)SPEC CPU2006

在获得SPEC CPU2006的测试源代码后,进入其主目录后,运行install.sh脚本即可安装SPEC CPU2006,然后用source命令执行shrc脚本来配置运行环境,最后执行bin/runspec这个Perl脚本即可正式开始运行基准测试。SPEC CPU2006还提供了在Windows系统中可以执行的对应的.bat脚本文件。在Linux系统中,将这些基本执行步骤整合到一个Shell脚本中,如下:

#!/bin/bash

cd /root/cpu2006/

./install.sh

echo "starting SPECCPU2006 at $(date)"

source shrc

bin/runspec --action=validate -o all -r 4 -c \ Example-linux64-amd64-gcc43.cfg all

echo "SPECCPU2006 ends at $(date)"

本次示例中runspec脚本用到的参数中,--action=validate表示执行validate这个测试行为(包括编译、执行、结果检查、生成报告等步骤),-o all表示输出测试报告的文件格式为尽可能多的格式(包括html、pdf、text、csv、raw等),-r 4(等价于--rate --copies 4)表示本次将会使用4个并发进程执行rate类型的测试(这样可以最大限度地消耗分配的4个CPU线程资源),--config xx.cfg表示使用xx.cfg配置文件来运行本次测试,最后的all表示执行整型(int)和浮点型(fp)两种测试类型。runspec的参数比较多也比较复杂,可以参考其官方网站的文档[4]了解各个参数的细节。

在执行完上面整合的测试脚本后,在SPEC CPU2006的主目录下的result目录中,就会出现关于本次运行测试的各种测试报告,本次示例使用的报告是HTML格式的CINT2006.001.ref.html(对整型的测试报告)和CFP2006.001.ref.html(对浮点型的测试报告)两个文件。在这两个报告文件中,在报告的第一部分中有总体的测试分数,在报告中部的结果表格中记录了各个具体的基准测试的得分情况。分别在非虚拟化的原生系统和KVM客户机系统执行SPEC CPU2006,然后对比它们的测试报告中的分数即可得到对KVM虚拟化环境中CPU虚拟化性能的评估。

2)内核编译

本次内核编译的基准测试中,采用的方法是:对Linux 3.7.0正式发布版本的内核进行编译,并用time命令对编译过程进行计时。关于内核编译测试中的内核配置,可以随意进行选择,只是需要注意:不同的内核配置,它们的编译时间长度可能会相差较大。内核编译过程可以参考3.3.3节“编译KVM”中的详细介绍。执行make命令进行编译,用time命令计时,命令行操作如下:

[root@kvm-guest linux.git]# time make -j 4

<!-- 省略编译过程的输出信息;下面是时间只是演示需要,并非编译用的真实时间 -->

real    1m0.259s

user    0m18.103s

sys     0m3.825s

time输出信息中,第一行real的时间标识表示实际感受到的从程序开始执行到程序终止所经过的时间长度,第二行user的时间表示CPU在用户空间执行的时间长度,第三行sys表示CPU在内核空间执行的时间长度。在本次内核编译测试中,统计的时间是time命令输出信息的第一行(用real标识)中的时间长度。

3)Super PI

从http://superpi.ilbello.com/ 网页下载Linux版本的Super PI,然后运行super_pi这个可执行程序,本次Super PI的基准测试中选择执行了计算圆周率π的小数点后1048576(2的20次方)个数据位。在计算完成后,程序会输出本次计算花费的时间,命令行示例如下:

[root@kvm-guest super-pi]# ./super_pi 20

<!--省略其余输出信息 -->

Start of PI calculation up to 1048576 decimal digits

<!--省略其余输出信息 -->

Total calculation(I/O) time=       10.236(       0.284) Sec.

在x86-64架构的系统上运行该Super PI执行程序,可能会遇到找不到ld-linux.so.2共享库的一个错误提示,这是由于该Super PI程序比较老,是用32位的glibc链接而生成的,所以只需要在该64位系统中安装上32位的glibc库即可,命令行示例如下:

[root@kvm-guest super-pi]# ./super_pi 20

./super_pi: ./pi: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

[root@kvm-guest super-pi]# yum install glibc-2.12-1.80.el6.i686

(KVM连载) 8.2.3 KVM CPU性能测试方法的更多相关文章

  1. KVM 介绍(2):CPU 和内存虚拟化

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  2. <Mastering KVM Virtualization>:第二章 KVM内部原理

    在本章中,我们将讨论libvirt.QEMU和KVM的重要数据结构和内部实现.然后,我们将深入了解KVM下vCPU的执行流程. 在这一章,我们将讨论: libvirt.QEMU和KVM的内部运作方式. ...

  3. [ kvm ] 学习笔记 4:KVM 高级功能详解

    1. 半虚拟化驱动 1.1 virtio 概述 KVM 是必须使用硬件虚拟化辅助技术(如 Intel VT-x .AMD-V)的 Hypervisor,在CPU 运行效率方面有硬件支持,其效率是比较高 ...

  4. [ kvm ] 学习笔记 3:KVM 基础功能详解

    1. 构建 KVM 环境 KVM 从诞生开始就需要硬件虚拟化的支持,KVM 必需的硬件虚拟化扩展分别是:Intel 的虚拟化技术(Intel VT)和 AMD 的 AMD-V 技术.首先处理器(CPU ...

  5. Centos6下通过 oprofile分析CPU性能

    Centos6下通过 oprofile分析CPU性能 2014-01-18 10:55:15 bobpen 阅读数 2218更多 分类专栏: linux   版权声明:本文为博主原创文章,遵循CC 4 ...

  6. kvm初体验——linux之kvm安装及使用qemu工具安装系统【转】

    本文转载自:https://blog.csdn.net/Heimerdinger_Feng/article/details/79119445 一.安装虚拟机之前先升级软件仓库 sudo apt-get ...

  7. intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!

    http://www.365pcbuy.com/article-411.html 特别提示:此文已经于2016年10月12日更新!内容变动较大,请细细品鉴! 如何为客户推荐高性价比机型是我站的重要工作 ...

  8. linux查看CPU性能及工作状态的指令

    http://www.aikaiyuan.com/9347.html http://blog.csdn.net/jk110333/article/details/8683478 http://www. ...

  9. (转)linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top

    衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运行常规用户进程CPU运行niced processCPU运行实时进程 2,系统使用CPU情况:用于I/O管理:中断和驱动用于内存管理:页面交换 ...

随机推荐

  1. 第17 章 : 深入理解 etcd:etcd 性能优化实践

    深入理解 etcd:etcd 性能优化实践 本文将主要分享以下五方面的内容: etcd 前节课程回顾复习: 理解 etcd 性能: etcd 性能优化 -server 端: etcd 性能优化 -cl ...

  2. ISP算法:深入聊聊lens shading

    一.简介 关于什么是成像中的lens shading这里直接引用一句英文的definition:"The term shading describes the light fall-off ...

  3. kubernetes 的负载均衡策略

    Kubernetes提供了两种负载分发策略: RoundRobin和SessionAffinity ◎ RoundRobin:轮询模式,即轮询将请求转发到后端的各个Pod上. ◎ SessionAff ...

  4. Day12_59_Java多线程

    多线程 1. 什么是进程? * 每个进程是一个应用程序,都有独立的内存空间,一个进程对应一个应用程序. * 例如:在windows操作系统中启动了word就是启动了一个进程,一边听音乐,一边打游戏就是 ...

  5. 记一次 .NET WPF布草管理系统 挂死分析

    一:背景 1. 讲故事 这几天看的 dump 有点多,有点伤神伤脑,晚上做梦都是dump,今天早上头晕晕的到公司就听到背后同事抱怨他负责的WPF程序挂死了,然后测试的小姑娘也跟着抱怨...嗨,也不知道 ...

  6. 太全了!Redis主从复制原理以及常见问题总结

    相信很多小伙伴都已经配置过主从复制,但是对于redis主从复制的工作流程和常见问题很多都没有深入的了解.这次给大家整理一份redis主从复制的全部知识点. 下方可视频观看,效果更佳 Redis实战精讲 ...

  7. mooc人大单元测试1

    @font-face { font-family: Wingdings } @font-face { font-family: 宋体 } @font-face { font-family: " ...

  8. 【MQ中间件】RabbitMQ -- RabbitMQ死信队列及内存监控(4)

    1.RabbitMQ TTL及死信队列 1.1.TTL概述 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取:过了之后消息将自动被删除.RabbitMQ可以对消息和队列设 ...

  9. 基于MATLAB的手写公式识别(9)

    基于MATLAB的手写公式识别(9) 1.2图像的二值化 close all; clear all; Img=imread('drink.jpg'); %灰度化 Img_Gray=rgb2gray(I ...

  10. Spring Boot的自动配置原理及启动流程源码分析

    概述 Spring Boot 应用目前应该是 Java 中用得最多的框架了吧.其中 Spring Boot 最具特点之一就是自动配置,基于Spring Boot 的自动配置,我们可以很快集成某个模块, ...