23
Проектирование высоконагруженных систем Лекция 5 Быков Александр

HighLoad весна 2014 лекция 5

Embed Size (px)

Citation preview

Page 1: HighLoad весна 2014 лекция 5

Проектирование высоконагруженных

систем

Лекция №5

Быков Александр

Page 2: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

2

Пока процессоры становятся все быстрее и многочисленнее ограничивающим фактором для быстродействия большинства программ остается доступ к памяти.=Для получения максимальной производительности при проектировании программ необходимо учитывать структуру аппаратного обеспечения и его тесной связки с функциями ОС.

What Every Programmer Should Know About Memory

Ulrich Drepper, Red Hat Inc., November 21, 2007

Page 3: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

3

▪ 16 CPU: 2 (Sockets) x 4 (Cores) x 2 (Threads per Core)=▪ 64 CPU: 4 (Sockets) x 8 (Cores) x 2 (Threads per Core)==

▪ 16 Gb MEM: 8 Gb x 2 (Channels)=▪ 192 Gb MEM: 16 Gb х 6 (Channels) x 2 (per Channel)==

▪ 2 SATA x 2Tb=▪ 16 SAS x 300 Gb==

▪ 2 NIC x 4 pools=▪ 4 NIC x 8 pools

Конфигурация типичного сервера

Page 4: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

4

$ lscpu!=Architecture: x86_64!CPU op-mode(s): 32-bit, 64-bit!Byte Order: Little Endian!CPU(s): 16!On-line CPU(s) list: 0-15!Thread(s) per core: 2!Core(s) per socket: 4!CPU socket(s): 2!NUMA node(s): 2!Vendor ID: GenuineIntel!CPU family: 6!Model: 44!Stepping: 2!CPU MHz: 1600.000!BogoMIPS: 4799.88!Virtualization: VT-x!L1d cache: 32K!L1i cache: 32K!L2 cache: 256K!L3 cache: 12288K!NUMA node0 CPU(s): 0-3,8-11!NUMA node1 CPU(s): 4-7,12-15!

$ cat /proc/cpuinfo!=processor : 0!vendor_id : GenuineIntel!cpu family : 6!model : 44!model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz!stepping : 2!cpu MHz : 1600.000!cache size : 12288 KB!physical id : 0!siblings : 8!core id : 0!cpu cores : 4!apicid : 0!initial apicid : 0!fpu : yes!fpu_exception : yes!cpuid level : 11!wp : yes!bogomips : 4800.59!clflush size : 64!cache_alignment : 64!address sizes : 40 bits physical, 48 bits virtual

Page 5: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

5

# dmidecode!=Memory Device! Array Handle: 0x0035! Total Width: 72 bits! Data Width: 64 bits! Size: 8192 MB! Form Factor: DIMM! Set: None! Locator: DIMM A1! Bank Locator: CHANNEL A! Type: Other! Type Detail: Other! Speed: 1333 MHz! Manufacturer: NOT SUPPORT! Serial Number: NOT SUPPORT! Asset Tag: NOT SUPPORT! Part Number: NOT SUPPORT!

# dmidecode!=Memory Device! Array Handle: 0x0035! Total Width: 72 bits! Data Width: 64 bits! Size: 8192 MB! Form Factor: DIMM! Set: None! Locator: DIMM A2! Bank Locator: CHANNEL A! Type: Other! Type Detail: Other! Speed: 1333 MHz! Manufacturer: NOT SUPPORT! Serial Number: NOT SUPPORT! Asset Tag: NOT SUPPORT! Part Number: NOT SUPPORT!=

Page 6: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

6

Отдельно-стоящий контроллер памяти

Page 7: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

7

Контроллер памяти встроенный в процессор

Page 8: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

8

Static RAM

• Транзисторная память=• Моментальный доступ к ячейке=• Простой интерфейс доступа к ячейке=• Дорогая в производстве=• Потребляет много энергии

Page 9: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

9

Dynamic RAM

• Конденсаторная память=• Долгая запись/считывание=• Разрядка при считывании=• Необходимость обновления ячеек=• Дешевая в производстве=• Потребляет немного энергии

Page 10: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

10

Dynamic RAM

Page 11: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

11

SDRAM: Read Timing

64 bit (8 bytes) - data bus==DDR SDRAM:=Dual-pumped 200MHz bus = 3.2GB/s==DDR2 SDRAM:=Quad-pumped 200MHz bus = 6.4GB/s=

Page 12: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

12

SDRAM: RAS Precharge

Page 13: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

13

Возможности ускорения

• Читать последовательно данные с запасом=• Читать без перескоков между рядами=• Prefetching

Page 14: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

14

CPU Cache: Общий вид

Page 15: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

15

Внутреннее устройство

O – Смещение внутри строки=S – Идентификатор строки в кеше=T – Метка внутри строки кеша для привязки к полному адресу =

Page 16: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

16

Скорость доступа

Page 17: HighLoad весна 2014 лекция 5

HighLoad. Лекция №2

17

Latency numbers every programmer should know (Jeff Dean)

L1 cache reference 0.5 nsBranch mispredict 5 nsL2 cache reference 7 nsMutex lock/unlock 25 nsMain memory reference 100 nsCompress 1K bytes with Zippy 3,000 nsSend 2K bytes over 1 Gbps network 20,000 nsSSD random read 150,000 nsRead 1 MB sequentially from memory 250,000 nsRound trip within same datacenter 500,000 ns 0.5 msRead 1 MB sequentially from SSD* 1,000,000 ns 1 msDisk seek 10,000,000 ns 10 msRead 1 MB sequentially from disk 20,000,000 ns 20 msSend packet CA->Netherlands->CA 150,000,000 ns 150 ms

Page 18: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

18

Экспериментальное измерение

Page 19: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

19

Последовательный доступ

Page 20: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

20

Случайный доступ

Page 21: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

21

Литература

▪ What Every Programmer Should Know About Memoryhttp://people.redhat.com/drepper/cpumemory.pdf

Page 22: HighLoad весна 2014 лекция 5

HighLoad. Лекция №5

22

Домашнее задание №3

=• Экспериментально измерить размер кешей разных уровней,

время последовательного и случайного доступа к ним.Сравнить со спецификацией процессора. =

• Предоставить отчет с результатами и программу для измерения на ближайшем семинаре.

Page 23: HighLoad весна 2014 лекция 5

СПАСИБО ЗА ВНИМАНИЕ

Быков Александр[email protected]