Това са цифрите, които всеки компютърен инженер трябва да знае

През 2010 г. Джеф Дийн от Google изнесе прекрасна беседа в Станфорд, която го направи доста известен. В него той обсъди няколко числа, които са от значение за изчислителните системи. Тогава Питър Норвиг публикува тези цифри за първи път в интернет.

Мина време и цифрите се промениха. Ето един много добър интерактивен потребителски интерфейс на тези числа, който приблизително показва колко са се променили през годините като функция от времето.

Тази статия е не само компилация от изчислените данни на Джеф Дийн, но по-скоро обединява всички такива числа от различни източници. Това трябва да ви помогне като системен дизайнер и архитект. Докато проектирате, можете да използвате тези числа, за да оцените количеството ресурси, от които се нуждае вашата система.

Груба оценка на данните за латентност за 2019 г .:

  1. Препратка към кеша L1: 1 наносекунда.
  2. Препратка към L2 кеша: 4 наносекунди.
  3. Заключване / отключване на Mutex: 17 наносекунди.
  4. Основна памет / RAM справка: 100 наносекунди.
  5. Компресирайте 1 KB с Zippy (в момента се нарича Snappy): 2000 наносекунди или 2 микросекунди.
  6. Неправилно предсказване на клон на процесора: 3 наносекунди.
  7. Случайно четене на SSD (SSD): 16 микросекунди.
  8. Търсене на диск (твърд диск / магнитно устройство): 3 милисекунди.
  9. Прочетете последователно 1 000 000 байта от основната памет: 4 микросекунди.
  10. Прочетете последователно 1 000 000 байта от SSD: 62 микросекунди.
  11. Прочетете последователно 1 000 000 байта от диска: 947 микросекунди.
  12. Заявка за двупосочна мрежа в същия център за данни: 500 микросекунди.
  13. Изпратете 2000 байта по стокова мрежа: 62 наносекунди.

Отнема време за полезен товар за пътуване през TCP:

Ето количеството време, необходимо за предаване на различни полезни натоварвания на данни в типични клетъчни мрежи по света, при условие че няма загуба на данни.

RTT - Време за двупосочно пътуване - Общото време, необходимо на пакета данни (куп байтове данни) да премине от подател до получател и приемник до подател по мрежата. Накратко, нарича се Ping time.

  1. Прехвърлянето на данни от 1 байт до 13 000 байта (приблизително 13 KB) отнема 1 двупосочно пътуване или 1 RTT. Грубо време - САЩ: 150 милисекунди, Индия: 1200 милисекунди, Бразилия: 600 милисекунди.
  2. 13 001 байта - 39 000 байта (13 KB до 39 KB) отнема 2 RTT. Грубо време - САЩ: 300 милисекунди, Индия: 2400 милисекунди, Бразилия: 1200 милисекунди.
  3. 39 001 байта - 91 000 байта (39 KB до 91KB) отнема 3 RTT. Грубо отнемано време - САЩ: 450 милисекунди, Индия: 3600 милисекунди, Бразилия: 1800 милисекунди.
  4. 91 001 байта - 195 000 байта (от 91 KB до 195 KB) отнема 4 RTT. Грубо време - САЩ: 600 милисекунди, Индия: 4800 милисекунди, Бразилия: 2400 милисекунди.

Така че колкото по-голям е размерът на отговора, това означава повече байтове, по-дълго пътуване в обратна посока, повече латентност на API и в крайна сметка по-малко удобно за потребителя приложение.

Тази публикация ще бъде актуализирана, когато бъдат намерени нови или актуализирани номера. Моля, уведомете ме, ако знаете нови номера.

Тази статия е публикувана първоначално на средната стена на автора. Ако ви харесва, моля, дайте ръкопляскания.

Справка:

  1. //colin-scott.github.io/blog/2012/12/24/latency-trends/
  2. //blog.std.in/2015/05/23/http-response-sizes-and-tcp/
  3. //medium.com/@kousiknath/must-know-numbers-for-every-computer-engineer-6338a12c292c