2. HighLoad. Лекция №5
2
Пока процессоры становятся все быстрее и
многочисленнее ограничивающим фактором для
быстродействия большинства программ остается доступ
к памяти.=
Для получения максимальной производительности при
проектировании программ необходимо учитывать
структуру аппаратного обеспечения и его тесной связки с
функциями ОС.
What Every Programmer Should Know About Memory
Ulrich Drepper, Red Hat Inc., November 21, 2007
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. 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. 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!
=
8. HighLoad. Лекция №5
8
Static RAM
• Транзисторная память=
• Моментальный доступ к ячейке=
• Простой интерфейс доступа к ячейке=
• Дорогая в производстве=
• Потребляет много энергии
9. HighLoad. Лекция №5
9
Dynamic RAM
• Конденсаторная память=
• Долгая запись/считывание=
• Разрядка при считывании=
• Необходимость обновления ячеек=
• Дешевая в производстве=
• Потребляет немного энергии
15. HighLoad. Лекция №5
15
Внутреннее устройство
O – Смещение внутри строки=
S – Идентификатор строки в кеше=
T – Метка внутри строки кеша для привязки к полному адресу =
22. HighLoad. Лекция №5
22
Домашнее задание №3
=
• Экспериментально измерить размер кешей разных уровней,
время последовательного и случайного доступа к ним.
Сравнить со спецификацией процессора.
=
• Предоставить отчет с результатами и программу для
измерения на ближайшем семинаре.