Nämä numerot jokaisen tietokoneinsinöörin tulisi tietää

Vuonna 2010 Googlen Jeff Dean piti Stanfordissa upean puheen, joka teki hänestä melko kuuluisan. Siinä hän keskusteli muutamista numeroista, jotka ovat merkityksellisiä tietojenkäsittelyjärjestelmien kannalta. Sitten Peter Norvig julkaisi nämä numerot ensimmäistä kertaa Internetissä.

Aika kului, ja numerot muuttuivat. Tässä on erittäin hyvä interaktiivinen web-käyttöliittymä noista numeroista, joka kertoo karkeasti kuinka paljon ne ovat muuttuneet vuosien varrella ajan funktiona.

Tämä artikkeli ei ole vain kooste Jeff Deanin arvioiduista tiedoista, vaan se kokoaa kaikki tällaiset luvut eri lähteistä. Tämän pitäisi auttaa sinua järjestelmän suunnittelijana ja arkkitehtina. Suunnittelun aikana voit käyttää näitä lukuja arvioidaksesi järjestelmän tarvitsemien resurssien määrän.

Karkea arvio latenssitiedoista vuodelle 2019:

  1. L1-välimuistin viite: 1 nanosekunti.
  2. L2-välimuistin viite: 4 nanosekuntia.
  3. Mutex-lukitus / avaus: 17 nanosekuntia.
  4. Päämuisti / RAM-viite: 100 nanosekuntia.
  5. Pakkaa 1 kt Zippyllä (tällä hetkellä nimellä Snappy): 2000 nanosekuntia tai 2 mikrosekuntia.
  6. Suorittimen haaran ennakointi väärin: 3 nanosekuntia.
  7. Kiinteän aseman (SSD) satunnaisluku: 16 mikrosekuntia.
  8. Levyn (kiintolevy / magneettinen asema) haku: 3 millisekuntia.
  9. Lue 1 000 000 tavua peräkkäin päämuistista: 4 mikrosekuntia.
  10. Lue 1 000 000 tavua peräkkäin SSD-asemalta: 62 mikrosekuntia.
  11. Lue 1 000 000 tavua peräkkäin levyltä: 947 mikrosekuntia.
  12. Edestakaisen verkon pyyntö samassa palvelinkeskuksessa: 500 mikrosekuntia.
  13. Lähetä 2000 tavua hyödykeverkossa: 62 nanosekuntia.

Hyötykuormalle kuluva aika matkustaa TCP: n yli:

Tässä on aika, joka tarvitaan erilaisten datan hyötykuormien lähettämiseen tyypillisissä soluverkoissa ympäri maailmaa olettaen, ettei tietoja menetä.

RTT - edestakainen aika - Kokonaisaika, jonka datapaketti (joukko datatavuja) kuluu lähettäjältä vastaanottimelle ja vastaanottimelta lähettäjälle verkon kautta. Lyhyesti sanottuna sitä kutsutaan Ping-ajaksi.

  1. Yhden tavun siirtäminen 13 000 tavuun (noin 13 kt) vie yhden edestakaisen matkan tai yhden RTT: n. Karkea aika - USA: 150 millisekuntia, Intia: 1200 millisekuntia, Brasilia: 600 millisekuntia.
  2. 13001 tavua - 39000 tavua (13 kt - 39 kt) kestää 2 RTT. Karkea aika - USA: 300 millisekuntia, Intia: 2400 millisekuntia, Brasilia: 1200 millisekuntia.
  3. 39001 tavua - 91000 tavua (39 kt - 91 kt) kestää 3 RTT. Karkea aika - USA: 450 millisekuntia, Intia: 3600 millisekuntia, Brasilia: 1800 millisekuntia.
  4. 91001 tavua - 195000 tavua (91 kt - 195 kt) kestää 4 RTT. Karkea aika - USA: 600 millisekuntia, Intia: 4800 millisekuntia, Brasilia: 2400 millisekuntia.

Joten suurempi vastauskoko tarkoittaa enemmän tavuja, pidempää edestakaista matkaa, enemmän API-viivettä ja lopulta vähemmän käyttäjäystävällistä sovellusta.

Tämä viesti päivitetään, kun uusia tai päivitettyjä numeroita löytyy. Kerro minulle, jos tiedät uudet numerot.

Tämä artikkeli on alun perin julkaistu Kirjoittajan keskiseinällä. Jos pidät siitä, anna taputuksia.

Viite:

  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