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

633 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
633
On SlideShare
0
From Embeds
0
Number of Embeds
139
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Проектирование высоконагруженных систем
 
 Лекция №5 Быков Александр
  2. 2. HighLoad. Лекция №5 2 Пока процессоры становятся все быстрее и многочисленнее ограничивающим фактором для быстродействия большинства программ остается доступ к памяти.= Для получения максимальной производительности при проектировании программ необходимо учитывать структуру аппаратного обеспечения и его тесной связки с функциями ОС. What Every Programmer Should Know About Memory Ulrich Drepper, Red Hat Inc., November 21, 2007
  3. 3. 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 Конфигурация типичного сервера
  4. 4. 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
  5. 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! =
  6. 6. HighLoad. Лекция №5 6 Отдельно-стоящий контроллер памяти
  7. 7. HighLoad. Лекция №5 7 Контроллер памяти встроенный в процессор
  8. 8. HighLoad. Лекция №5 8 Static RAM • Транзисторная память= • Моментальный доступ к ячейке= • Простой интерфейс доступа к ячейке= • Дорогая в производстве= • Потребляет много энергии
  9. 9. HighLoad. Лекция №5 9 Dynamic RAM • Конденсаторная память= • Долгая запись/считывание= • Разрядка при считывании= • Необходимость обновления ячеек= • Дешевая в производстве= • Потребляет немного энергии
  10. 10. HighLoad. Лекция №5 10 Dynamic RAM
  11. 11. 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=
  12. 12. HighLoad. Лекция №5 12 SDRAM: RAS Precharge
  13. 13. HighLoad. Лекция №5 13 Возможности ускорения • Читать последовательно данные с запасом= • Читать без перескоков между рядами= • Prefetching
  14. 14. HighLoad. Лекция №5 14 CPU Cache: Общий вид
  15. 15. HighLoad. Лекция №5 15 Внутреннее устройство O – Смещение внутри строки= S – Идентификатор строки в кеше= T – Метка внутри строки кеша для привязки к полному адресу =
  16. 16. HighLoad. Лекция №5 16 Скорость доступа
  17. 17. HighLoad. Лекция №2 17 Latency numbers every programmer should know (Jeff Dean) L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 25 ns Main memory reference 100 ns Compress 1K bytes with Zippy 3,000 ns Send 2K bytes over 1 Gbps network 20,000 ns SSD random read 150,000 ns Read 1 MB sequentially from memory 250,000 ns Round trip within same datacenter 500,000 ns 0.5 ms Read 1 MB sequentially from SSD* 1,000,000 ns 1 ms Disk seek 10,000,000 ns 10 ms Read 1 MB sequentially from disk 20,000,000 ns 20 ms Send packet CA->Netherlands->CA 150,000,000 ns 150 ms
  18. 18. HighLoad. Лекция №5 18 Экспериментальное измерение
  19. 19. HighLoad. Лекция №5 19 Последовательный доступ
  20. 20. HighLoad. Лекция №5 20 Случайный доступ
  21. 21. HighLoad. Лекция №5 21 Литература ▪ What Every Programmer Should Know About Memory
 http://people.redhat.com/drepper/cpumemory.pdf
  22. 22. HighLoad. Лекция №5 22 Домашнее задание №3 = • Экспериментально измерить размер кешей разных уровней, время последовательного и случайного доступа к ним.
 Сравнить со спецификацией процессора. = • Предоставить отчет с результатами и программу для измерения на ближайшем семинаре.
  23. 23. СПАСИБО ЗА ВНИМАНИЕ Быков АлександрH bykov@corp.mail.ru

×