peeling the onion for ipdc forum09 mix ver1

33
1 Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance defects defects defects defects defects defects defects defects 抽丝剥茧 抽丝剥茧 抽丝剥茧 抽丝剥茧 抽丝剥茧 抽丝剥茧 抽丝剥茧 抽丝剥茧 : : : : : : : : 优化 优化 优化 优化 优化 优化 优化 优化 IPDC IPDC IPDC IPDC IPDC IPDC IPDC IPDC 应用性能缺陷 应用性能缺陷 应用性能缺陷 应用性能缺陷 应用性能缺陷 应用性能缺陷 应用性能缺陷 应用性能缺陷 1 Dr. Paresh Pattani [email protected] Director, HPC and Workstations Applications 何万青 博士 [email protected] HPC/IPDC Engineering Mgr. / CRT China Special thanks to: 许进, 金君 [email protected] & [email protected] The 3 rd Intel Internet DataCenter Forum YiBin 2009. August Life is like an onion: you peel it off one layer at a time, and sometimes you weep- Carl Sandburg

Upload: hutuworm

Post on 12-Jul-2015

1.672 views

Category:

Documents


20 download

TRANSCRIPT

Page 1: Peeling The Onion For Ipdc Forum09 Mix Ver1

1

Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance Peeling the Onion: Optimize IPDC Performance defects defects defects defects defects defects defects defects

抽丝剥茧抽丝剥茧抽丝剥茧抽丝剥茧抽丝剥茧抽丝剥茧抽丝剥茧抽丝剥茧: : : : : : : : 优化优化优化优化优化优化优化优化IPDCIPDCIPDCIPDCIPDCIPDCIPDCIPDC应用性能缺陷应用性能缺陷应用性能缺陷应用性能缺陷应用性能缺陷应用性能缺陷应用性能缺陷应用性能缺陷

1

Dr. Paresh Pattani [email protected]

Director, HPC and Workstations Applications

何万青 博士 [email protected]

HPC/IPDC Engineering Mgr. / CRT China

Special thanks to: 许进, 金君

[email protected] & [email protected]

Th

e 3

rdIn

tel In

tern

et D

ata

Ce

nte

rF

oru

m –

YiB

in2

00

9. A

ug

ust “Life is like an onion: you peel it off one layer at a time, and sometimes you weep”

- Carl Sandburg

Page 2: Peeling The Onion For Ipdc Forum09 Mix Ver1

2

� Worldwide SW Support OrganizationWorldwide SW Support OrganizationWorldwide SW Support OrganizationWorldwide SW Support Organization

� System performance defectsSystem performance defectsSystem performance defectsSystem performance defects

� Typical Application performance defectsTypical Application performance defectsTypical Application performance defectsTypical Application performance defects

� Summary Summary Summary Summary

� P.S: MicroP.S: MicroP.S: MicroP.S: Micro----arch optimizationarch optimizationarch optimizationarch optimization

Page 3: Peeling The Onion For Ipdc Forum09 Mix Ver1

3

ASE Global Cloud/IPDC EnablingASE Global Cloud/IPDC EnablingASE Global Cloud/IPDC EnablingASE Global Cloud/IPDC Enabling

� Software Optimization

– Single application or complex multi-tier systems

– Customer Software & Open Source

� Consultation

– Software Architecture

– Hardware and Software Configuration

�Benchmarking

3

Page 4: Peeling The Onion For Ipdc Forum09 Mix Ver1

4

Cloud / IPDC CustomersCloud / IPDC CustomersCloud / IPDC CustomersCloud / IPDC Customers

� Internet Portals

– Social Networking, Media, etc.

� Service Providers

– Search, Mapping, Video, Auction, Web Applications, etc.

� Software Component Providers

– Open Source and Proprietary (Ex. Hadoop)

� Cloud Providers

– General Purpose and HPC

4

Page 5: Peeling The Onion For Ipdc Forum09 Mix Ver1

5

� Dedicated Infrastructure

– Visitors have logins, storage areas

– Multi TB storage.

– GigE network infrastructure

– Power measurement tools

– Secure (private network, locked lab)

� Variety of machines available

– Some older machines, some “bleeding edge”

– Intel and competitor systems

– Windows and Linux

� Hosts both on-site and remote visitors

– For optimization efforts and hardware evaluation

– Remote access by prior arrangement only

Page 6: Peeling The Onion For Ipdc Forum09 Mix Ver1

6

� Resent Success with Visitors to Lab:

– Two Search Engine Customers: 2 week (plus prep) visit .

�Both: performance improvements >2×

– Customers’ post-visit e-mail (etc.) very positive

�We would like more visitors

– Good results when they come…

� Virtual visitors (remote access):

– Short term, customer evaluations

– Hadoop clustering experiments

– other Intel sites, etc.

� Loaned/Resident software:

– Hadoop

– LAMP stack elements

– Search and Mapping software

Page 7: Peeling The Onion For Ipdc Forum09 Mix Ver1

7

内容内容内容内容

� 全球的软件支持组织全球的软件支持组织全球的软件支持组织全球的软件支持组织

�系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷

�典型的应用级缺陷典型的应用级缺陷典型的应用级缺陷典型的应用级缺陷

�总结总结总结总结

� 附附附附: : : : 基于微架构的优化方法基于微架构的优化方法基于微架构的优化方法基于微架构的优化方法

Page 8: Peeling The Onion For Ipdc Forum09 Mix Ver1

8

解决性能缺陷解决性能缺陷解决性能缺陷解决性能缺陷: 概念和方法及策略概念和方法及策略概念和方法及策略概念和方法及策略

次序 优化级别 目标 主要关注的问题

获益

1 高:

系统级

通过改善应用和整个软硬件系

统的相互关系来提升性能

� 网络

� 磁盘

� 内存访问

2 中:

应用级

通过改善应用本身的算法等 � 进程/线程的同步

� 堆竞争

� 线程的实现

� API的选择

� 库函数的选择

� 数据结构

3 低:

微架构级

通过在特定的微架构级优化来

改善应用性能

� 微架构调优的复杂性

� 数据/操作的局部性(

缓存的效率)

� 数据对齐

� 向量化 / SSE

Page 9: Peeling The Onion For Ipdc Forum09 Mix Ver1

9

应用灵活,基于开放的标准应用灵活,基于开放的标准

支持不同的的并行化支持不同的的并行化

Extracting Performance via Intel tools & Lib.Extracting Performance via Intel tools & Lib.Extracting Performance via Intel tools & Lib.Extracting Performance via Intel tools & Lib.

软件类型软件类型软件类型软件类型

线程级并行线程级并行线程级并行线程级并行

数据并行数据并行数据并行数据并行

任务并行任务并行任务并行任务并行

串行串行串行串行

循环级并行循环级并行循环级并行循环级并行

Intel Tools & Libraries Intel Tools & Libraries Intel Tools & Libraries Intel Tools & Libraries

Thread Building Block Open Standards

OpenMP

Ct, C/C++ Stds

Message Passing Interface (MPI)

Open MP

C/C++ Standards Inte

l C

om

pli

ers

, Ma

th K

ern

el,

Lib

rari

es,

In

tel

Pe

rfo

rma

nce

Pri

mit

ive

s, V

ect

ori

zati

on

SS

E,

AV

X …

Page 10: Peeling The Onion For Ipdc Forum09 Mix Ver1

10

2008年的硬件概述年的硬件概述年的硬件概述年的硬件概述

�理论计算能力– 3.2GHz * 8核心 * 4指令/周期= 102.4G指令

/秒

�内存(FSB)– 带宽:4通道FD-DIMM:21GB/s

– 延时:~120ns

�磁盘系统(15K SAS RAID5 x6)– 带宽:<1GB/s

– IOPS:~1000s

�网络– 每秒处理的包数 (PPS)

– 带宽例子:Harpertown

Xeon 5400

Xeon 5400

MCH

RAM

ICH HDD

Page 11: Peeling The Onion For Ipdc Forum09 Mix Ver1

11

2009年的硬件概述年的硬件概述年的硬件概述年的硬件概述

�理论计算能力

– 3.2GHz * 8核心 * 4指令/周期 = 102.4G指令/秒

�内存带宽

– 6通道DDR3:64GB/s (3倍提高)

–延时: NUMA: 67ns/117ns

�磁盘系统(SSD RAID5 x6)– IOPS:100,000s (上百倍提升)

–带宽:~1GB/s

–容量:800GB (1/10)

�网络

–多队列 / 10GbE

11

Xeon 5500

Xeon 5500

IOH

RAM

ICH SSD

RAM

结论: 要充分发挥系统性能,开发人员必须了解硬件

系统限制,最大限度的平衡整个系统的不同组成部分

Page 12: Peeling The Onion For Ipdc Forum09 Mix Ver1

12

ContentsContentsContentsContents

�全球的软件支持组织全球的软件支持组织全球的软件支持组织全球的软件支持组织

�系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷

�典型的应用级缺陷典型的应用级缺陷典型的应用级缺陷典型的应用级缺陷

�总结总结总结总结

�附附附附: : : : 基于微架构的优化方法基于微架构的优化方法基于微架构的优化方法基于微架构的优化方法

Page 13: Peeling The Onion For Ipdc Forum09 Mix Ver1

13

系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷

�内存配置

–容量和速度的平衡 (max BW, balanced or max capacity?)

�磁盘的配置

– SSD vs. HDD

– RAID0 vs. RAID1 vs. RAID5, stripe size

� BIOS 设置

– SMT / EIST / Turbo / NUMA / Prefetcher

更新OS版本并且调整软件架构来配合新的硬件

平台,以此获得更好的性能

Page 14: Peeling The Onion For Ipdc Forum09 Mix Ver1

14

SSD SSD SSD SSD vsvsvsvs HDHDHDHD

�一般情况下,索引文件都比较大

�在更新索引文件的过程中,磁盘压力较大,SSD能获得较好性能

更新索引过程中磁盘压力较大

采用SSD使性能得到提高

Page 15: Peeling The Onion For Ipdc Forum09 Mix Ver1

15

应用级的性能缺陷应用级的性能缺陷应用级的性能缺陷应用级的性能缺陷

�多核环境下,多线程程序的设计需要非常细致的设

–锁的粒度

–并发

–软件流水线的设计

–选择合适的线程库 (TBB)

15

Page 16: Peeling The Onion For Ipdc Forum09 Mix Ver1

16

锁的粒度锁的粒度锁的粒度锁的粒度

Computation threads

Cache memory

Computation threads

Split one lock in to different sets of locks

Cache memory

� 在多线程应用中,需要对共享数据加锁保护

� 对频繁访问的大块数据区域加锁可能造成线程阻塞

� 下面这个例子显示了对应用程序内部缓存加锁造成的线程冲突

� 将缓存拆分成多个部分,分别加以保护大大缓解了冲突,应用程序性能提高了21%

Page 17: Peeling The Onion For Ipdc Forum09 Mix Ver1

17

软件流水线设计软件流水线设计软件流水线设计软件流水线设计

�合理分解和分配任务

–在下面这个实际案例中,系统idle 50%, user% 仅 40%,磁盘利用率未达到最大

–两个IO线程无法充分利用磁盘系统的能力,也无法满足8个计算线程的需求

–适度增加IO线程数目,系统性能提高了27%

Search Thread

Search Thread

IO Thread Wrapper

IO threads

Thread Profiler中可以看

到,两个IO线程无法满

足8个计算线程的需求

增加IO线程可以增加磁

盘的利用率.

Page 18: Peeling The Onion For Ipdc Forum09 Mix Ver1

18

典型的应用性能缺陷典型的应用性能缺陷典型的应用性能缺陷典型的应用性能缺陷

�滥用STL –通常,STL 容器和C的数组有同样的性能

–但是,滥用STL容器可能会造成非常密集的内存管理操作

–在实际应用中我们观测到最大50%的性能下降

–多线程环境下情况会更糟糕

– Glibc的malloc/free在多核环境下扩展性很差

–如果在多线程环境下需要频繁分配和释放内存,可以考虑SmartHeap,Hoard或者Intel TBB

18

Page 19: Peeling The Onion For Ipdc Forum09 Mix Ver1

19

典型的应用性能缺陷典型的应用性能缺陷典型的应用性能缺陷典型的应用性能缺陷

�内存操作

–Memcpy / Memset

–实际例子中,消耗了超过50% CPU

–memset/memcpy是耗时的, 特别是在Xeon E5400平台上,每秒memcpy/memset 2GB 将会对整个系统的性能造成极大的影响.

–Bitmap

–问题:随机写位映射序列的某些位

–如果造成了缓存缺失,每次访问都会造成上百个CPU cycle

19

Page 20: Peeling The Onion For Ipdc Forum09 Mix Ver1

20

算法的选择算法的选择算法的选择算法的选择

� JPEG缩略图生成

–通过在频率域减采样可以将原图非常快的缩小到1/(2^n) 大小,然后再缩小到合适的大小,与直接缩小相比,性能

提高了2.5倍

20

Page 21: Peeling The Onion For Ipdc Forum09 Mix Ver1

21

算法的选择算法的选择算法的选择算法的选择

�加密算法AES vs TEA

–AES比TEA要快3倍以上,并且提供了强的多的加密效果,在一个需要对流量进行加密的应用程序中,相对于使用

TEA,AES使整体应用程序性能提升了43% - 96%

21

Page 22: Peeling The Onion For Ipdc Forum09 Mix Ver1

22

算法的选择算法的选择算法的选择算法的选择

� PForDelta vs. VBYTE

–搜索引擎应用中,为了减少磁盘访问,通常倒排表被压缩后存放,SSE4.2 优化后的PForDelta算法可以达到3GB/s的解压速度, 是VBYTE速度的10倍,而压缩率更好

0

200

400

600

800

1000

1200

1400

250 500 1000 2000 4000 8000 10000 20000 40000 80000 160000320000

un

Co

mp

res

s S

pe

ed

(M/s

)

lArrSize

Comprare of unCompress Speed V-Byte:F2/2,4,6

V-Byte:F2/3,6,9

V-ByteF3/4,6,8,10,12,14,16

PForDelta Generic

Page 23: Peeling The Onion For Ipdc Forum09 Mix Ver1

23

用用用用SSE4.2SSE4.2SSE4.2SSE4.2优化优化优化优化P_FOR_DELTAP_FOR_DELTAP_FOR_DELTAP_FOR_DELTA解压缩解压缩解压缩解压缩

• 搜索引擎中,解压缩通常是热点函数• 基本方法

• P_FOR_DELTA可以达到上GB每秒解压缩速度,因此被广泛应用• 通过SSE 4.2优化的P_FOR_DELTA可以达到更好的性能

Compare of Compress Rate

0

0.1

0.2

0.3

0.4

0.5

0.6

0.725

0

500

1000

2000

4000

8000

1000

0

2000

0

4000

0

8000

0

1600

00

3200

00

lArrSize

Co

mp

res

s R

ate

V-Byte:F2/2,4,6

V-Byte:F2/3,6,9

V-Byte:F3/4,6,8,10,12,14,16

PForDelta Generic

GB/s Decompress speed by P_FOR_DELTA!

Different Kind of P_FOR_DELTA Decode algorithm

0

1000

2000

3000

4000

5000

6000

7000

generic decode for D-

gap

generic decode for

non-D-gap

SSE decode for D-gap SSE decode for non

D-gap decode

Method

Sp

eed

(M

B/s

)

~2x speedup than generic

Page 24: Peeling The Onion For Ipdc Forum09 Mix Ver1

24

典型应用的性能缺陷典型应用的性能缺陷典型应用的性能缺陷典型应用的性能缺陷

�采用正确的IO API– Synchronized IO vs. Posix AIO vs. Native AIO

– SSD的IO延迟很小,并且能同时处理几十个IO请求,单线程上的同步IO不能最大化发挥SSD的性能

– 相对于Native IO来说,Linux POSIX AIO 存在局限, 使用这些IO函数之前,必须要正确理解

– read/readv/mmap/directio

– Buffered IO会造成内核的内存拷贝,如果需要每秒钟需要处理上GB的磁盘读操作,则需要考虑是否需要采用Direct-IO或者mmap等无需拷贝的方式

– 当文件大于系统内存的情况下,通过mmap的方式随机的访问会造成频繁缺页,

24

HTN平台上内存带宽

受限,Read系统调用

会消耗较多的CPU时

间.NHM平台的内存带宽

得到改善(3x)

Page 25: Peeling The Onion For Ipdc Forum09 Mix Ver1

25

典型的应用性能缺陷典型的应用性能缺陷典型的应用性能缺陷典型的应用性能缺陷

�采用高性能库函数

– Intel IPP库可以提供更高的性能

– JPEG resize应用中,IPP是libjpeg性能的2倍

–对于AES, IPP性能稍好,但是Westmere上的新的AES指令可以提供10倍于普通AES的性能, IPP将会在第一时间提供支持

25

Page 26: Peeling The Onion For Ipdc Forum09 Mix Ver1

26

总结总结总结总结

� Intel对云计算的研究可以更好的支持IPDC应用的优化

�理解Xeon5500可以为IPDC的应用提供些什么

�我们必须关注IPDC应用的典型的性能缺陷

�系统的评估和解决应用的性能缺陷是一种有效的做

�附:为了最大程度的释放CPU的性能,基于微架构的优化手段有时是有必要的

Page 27: Peeling The Onion For Ipdc Forum09 Mix Ver1

27

Contents

� 全球的软件支持组织全球的软件支持组织全球的软件支持组织全球的软件支持组织

� 系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷系统级的性能缺陷

� 典型的应用级缺陷典型的应用级缺陷典型的应用级缺陷典型的应用级缺陷

� 总结总结总结总结

� 附附附附: 基于微架构的优化方法基于微架构的优化方法基于微架构的优化方法基于微架构的优化方法

Page 28: Peeling The Onion For Ipdc Forum09 Mix Ver1

28

Page 29: Peeling The Onion For Ipdc Forum09 Mix Ver1

29

NHM上通过上通过上通过上通过SSE 4.2来提升应用性能来提升应用性能来提升应用性能来提升应用性能

- Intel® SSE4.2 Instruction Set Architecture (ISA) Leadership

� 如何使用如何使用如何使用如何使用SSE指令指令指令指令?

– 编译器报告,自动向量化(采用编译器报告可以加快开发)

– ASM汇编语言(开发难度较大)

– 采用编译器内嵌intrinsic函数 (相对汇编来说,简单的多,多数内嵌函数和一一对应于SIMD指令)

– Vector类 (应用于C++面向对象的编程)

– 大量的开发文档的支持

X0X1X2X3

Y0Y1Y2Y3

X0opY0X1opY1X2opY2X3opY3

Page 30: Peeling The Onion For Ipdc Forum09 Mix Ver1

30

用用用用SSE4.2优化优化优化优化P_FOR_DELTA解压缩解压缩解压缩解压缩

� 为了减少IO磁盘的压力,倒排表中docId表通常是被压缩存放的,并在归并计算之前被解压缩

� P_FOR_DELTA由UNIVERSITEIT VAN AMSTERDAM的SandorHeman 提出

� 基本算法介绍

– 问题的提出: 压缩/解压缩数个整型数据(比如:128 integers)

– 采用多少位来进行压缩?

– 对每个数都采用不同的位数(如:vbyte,但由于分支判断,解压缩速度会变慢)

– 或者用统一的位数来压缩所有的数? (压缩率不好)

– 更好的选择:采用统一的位数来压缩90%的数,把剩余的10%的数当作异常数据

– 假设有128个整型,90% 小于32 ,选择压缩位数为5;

– 分配128 x 5 位,同时存放10%的异常数据(每个异常4个字节)到压缩流的末尾

Exceptions:32bits

5bits

1 2 5 11 21 8 7 19 1 49 132 92

黄色数据存放的是异常数据的偏移距离

Page 31: Peeling The Onion For Ipdc Forum09 Mix Ver1

31

用用用用SSE4.2优化优化优化优化P_FOR_DELTA解压缩解压缩解压缩解压缩

F E D C B A 9 8 7 6 5 4 3 2 1 0

42...

1. Load a pre-fetched 128-bit segment of input data into SSE register.

3. Align the values from unequally shifted DWORDs. By packed and, packed multiply and packed shift right

4. Store uncompressed values.

22702177265536110300

42227021772

42227021772

2. Copy compressed values to target DWORDs “32-bit segment”.

_mm_shuffle_epi8 by SHUFFLE MASK

• 采用SSE intrinsic (17 bits 解压缩为例)

• 使用使用使用使用SSE 4.2的的的的 super shuffle engine (_mm_shuffle_epi8) • SSE 4.2中加强的中加强的中加强的中加强的 cache line split load• 红色部分是解压缩第一步完成之后的一些必须被清除的位红色部分是解压缩第一步完成之后的一些必须被清除的位红色部分是解压缩第一步完成之后的一些必须被清除的位红色部分是解压缩第一步完成之后的一些必须被清除的位

SHUFFLE MASK: _mm_set_epi8 (0xFF, 8, 7, 6, 0xFF, 6, 5, 4, 0xFF, 4, 3, 2, 0xFF, 2, 1, 0);

5. Use PTEST to check exceptions.

Page 32: Peeling The Onion For Ipdc Forum09 Mix Ver1

32

Buffer Alignment Affects (Xeon5500 vs. Xeon 5400)

a,b,c are 16 Bytes aligned: 13.2sec

• HTN平台上,由于需要对齐,向量化的代码性能显著下降 (最大~3.9x slowdown)• NHM平台上,对齐对性能影响不大 (最大 ~1.03x slowdown)

a,b 16 Bytes aligned, c has a 4B offset: 44.7sec (3.4x slowdown)

cycles

Ratio (Vecto

r/scalar)

a,b,c are 16 Bytes aligned: 8.2sec

a,b 16 Bytes aligned, c has a 4B offset: 8.5sec (1.03x slowdown)

Page 33: Peeling The Onion For Ipdc Forum09 Mix Ver1

33

Backups