Vraag Zijn netwerken nu sneller dan schijven?


Dit is een vraag over softwareontwerp

Ik werkte altijd aan de volgende regel voor snelheid

cache memory > memory > disk > network

Met elke stap 5-10 maal de vorige stap (bijvoorbeeld is het cachegeheugen 10 keer sneller dan het hoofdgeheugen).

Nu lijkt het erop dat gigabit-ethernet latentie minder heeft dan lokale schijf. Dus, misschien zijn operaties om uit een grote externe DB-in-memory uit te lezen sneller dan lokale disk-reads. Dit voelt als ketterij voor een oude timer zoals ik. (Ik heb net wat tijd besteed aan het bouwen van een lokale cache op schijf om te voorkomen dat ik netwerkrondreizen moet maken - vandaar mijn vraag)

Heeft iemand ervaring / cijfers / advies op dit gebied?

En ja, ik weet dat de enige echte manier om erachter te komen is om te bouwen en te meten, maar ik vroeg me af wat de algemene regel is.

Bewerk:

Dit zijn de interessante gegevens van het belangrijkste antwoord:

  • Rondvaart binnen hetzelfde datacenter 500.000 ns

  • Schijf zoekt 10.000.000 ns

Dit is een schok voor mij; mijn mentale model is dat een netwerkrondvaart inherent traag is. En het is niet - het is 10x sneller dan een schijf 'heen en terug'.

Jeff Attwood heeft dit goede blog over het onderwerp gepost http://blog.codinghorror.com/the-infinite-space-between-words/


118
2018-02-21 23:46


oorsprong


Soms wel, soms nee. Welk netwerk? Welke schijf? - John Gardeniers
De andere interessante gegevens van het beste antwoord: 1 MB sequentieel lezen van netwerk versus schijf. Ik vermoed dat de "round trip" -tijd geen significante gegevensoverdracht bevat. - Paul
Paul: Ik ben er zeker van dat dit afhangt van je MTU. (1 MB MTU? Geweldig!) - Matt Simmons
Ik zou graag zien dat sommige van deze antwoorden opnieuw worden bekeken in het licht van het feit dat 10Gbps-netwerkapparatuur alom beschikbaar is. - chicks
gigabit netwerk vs raid 5? - SoilSciGuy


antwoorden:


Hier zijn enkele cijfers waarnaar u waarschijnlijk op zoek bent, zoals geciteerd door Jeff Dean, een Google Fellow:

Nummers die iedereen moet weten

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

Het is uit zijn presentatie getiteld Ontwerpen, lessen en advies voor het bouwen van grote gedistribueerde systemen en je kunt het hier krijgen:

Het gesprek werd gegeven op Grootschalige gedistribueerde systemen en middleware (LADIS) 2009.

Andere informatie


Het is gezegd dat gcc -04 je code naar Jeff Dean stuurt voor een herschrijving.



127
2018-02-22 07:38



+1 Heel interessant! - 9dan
Sommige presentaties hebben verschillende waarden die tussen haakjes zijn aangegeven. Ik neem aan dat de enen in de haak niet kloppen en heeft de waarden bijgewerkt. - David d C e Freitas
Is dit het hele pre-SSD-tijdperk? zien hier voor meer actuele nummers. - matt
Ik heb deze getallen eigenlijk gebruikt om een ​​te bouwen presentatie die laat zien waarom SSD-stations zichzelf terugbetalen, om onze officemanager ervan te overtuigen dat we inderdaad snellere machines nodig hadden om aan te werken. Omvat de nummers voor de technische info, maar richtte zich zoveel mogelijk op non-tech management. - brichins


Er zijn veel variabelen als het gaat om netwerk versus schijf, maar over het algemeen is de schijf sneller.

De SATA 3.0- en SAS-bussen zijn 6 Gbps, tegenover een overhead van 1Gbps minusprotocol-netwerken. Met RAID-10 15k SAS zal het netwerk traag lijken. Daarnaast hebt u schijfcache en ook de mogelijkheid van vaste-schijf-harde schijven, die, afhankelijk van het scenario, ook de snelheid kunnen verhogen. Willekeurige versus sequentiële gegevenstoegang speelt een factor, evenals de blokgrootte waarin gegevens worden overgedragen. Dat hangt allemaal af van de applicatie die wordt gebruikt om toegang tot de schijf te krijgen.

Nu heb ik het nog niet eens gehad over het feit dat wat je ook via het netwerk wilt transporteren hoe dan ook van de schijf komt of komt ... dus ....... opnieuw, de schijf is sneller.


19
2018-02-22 01:41



Punten voor het vermelden van RAID die u parallelle waarden geeft, iets dat u waarschijnlijk binnenkort niet in een netwerk zult krijgen. Natuurlijk, als we het hebben over lokale laptop harde schijven, dan is de combinatie van snel SAN en snel netwerk misschien wel sneller. Vooral met de SSD's in dat SAN. - Michael Dillon
Netwerken zijn inherent paralleliseerbaar - waar heb je het over? Het is ongelooflijk triviaal om in totaal te lezen van meerdere systemen op een netwerk; dit is het hele punt achter systemen als Hadoop en MPI, om nog te zwijgen van de voor de hand liggende BitTorrent. - jgoldschrafe
Met SONET / SDH kunt u nog 38 Gbps sneller hebben dan SAS. En netwerkaggregatie kan met zoiets worden gedaan en.wikipedia.org/wiki/Link_aggregation - Mircea Vutcovici
@Jake Als je het over 6 Gbps hebt, wil je misschien een duidelijk onderscheid maken tussen de interfacebandbreedte en de snelheid waarmee een schijf daadwerkelijk gegevens kan leveren. - NPE
ik zei in mijn vraag dat ik het had over een remote in memory database in vergelijking met een local op disk cache - pm100


Welnu, dat hangt ervan af of de netwerkbron de gegevens bevat die u gemakkelijk beschikbaar wilt stellen (in het geheugen of iets dergelijks) of dat deze op zijn beurt op een harde schijf zou worden gelezen.

In elk geval kan de doorvoer in sommige gevallen hoger zijn, maar ik denk dat de latentie hoger zal zijn.


10
2018-02-21 23:51



Bedoel je dat de zoektijd op de schijf groter is dan een verzoek van 10 Gbit / s? - Mircea Vutcovici
@Mircea, hij bedoelt dat het 10 Gbit-netwerk zijn gegevens ergens vandaan moet halen, dus het zal worden beperkt tot de latentie van die bron en de latentie van het netwerk. - Chris S
De opslag kan een RAM-schijf zijn. Zien: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based - Mircea Vutcovici


IMX de schijf is nog steeds sneller. De theoretische overdrachtssnelheid van het netwerk is hoog, maar in de praktijk kom je daar niet dichtbij.

Ongeveer twee jaar geleden had ik problemen met de harde schijf op mijn laptop en ging de DMA uit. Dit maakte de harde schijf dramatisch langzamer, en in het bijzonder langzamer dan het netwerk. Maar toen ik naar een andere computer schakelde, was ik sneller teruggekeerd naar mijn oorspronkelijke staat van de harde schijf dan internet.


2
2018-02-21 23:50





Mijn ervaring met gigabit-netwerken is, gegeven de juiste server, dat je de lokale prestaties kunt verslaan in termen van doorvoer en latentie. Zien Netwerktests: krijgen we gigabitprestaties?

Voor alle praktische doeleinden zou ik aanraden om netwerk- en lokale opslag als gelijkwaardig te behandelen en alleen geheugencaches te gebruiken.

Standaard voorbehoud is zoals je zei waar, er zijn geen algemene regels; en dat eigenlijk het grootste deel van de tijd zou moeten werken met goed geconfigureerde servers en metrics gebruiken om de beste methode voor gegevensoverdracht te evalueren.

Als u een low-end machine met een langzame harde schijf gebruikt, zal het vrijwel zeker sneller zijn om een ​​gigabit netwerkverbinding te gebruiken met een server met een snelle opslagarray.

Evenzo, als u met twee machines van bijna identieke hardware werkt, zou de latentie en netwerkoverhead de lokale opslag sneller maken; het is gezond verstand echt.


2
2018-02-22 00:18





Het hangt er van af. Als uw I / O voornamelijk willekeurige toegang is, is de platte doorvoer waarschijnlijk niet zo goed in vergelijking met de netwerkbandbreedte die beschikbaar zou kunnen zijn. Het meeste netwerkverkeer wordt echter uiteindelijk gegenereerd door processen waarbij I / O betrokken is. Als de werkset van welk proces ook het netwerkverkeer genereert, past deze in de cache, dan wordt deze niet beperkt door de bandbreedte van de schijf. Als het de cache raakt, wordt de schijf een knelpunt.

Ik werk aan datawarehouse-systemen en de canonieke DW-query is een tafelscan. Als uw query meer dan een paar procent van de rijen in de feitentabel (of partitie) treft, wordt een tabel- of partitiescan met behulp van sequentiële I / O efficiënter dan een zoekplan voor willekeurige toegang met behulp van zoekacties op indexen en zoekt.

Netwerkopslag (dat wil zeggen SAN's) heeft de neiging om niet goed te presteren op streaming werklasten tenzij deze op geschikte wijze is afgestemd. Als het SAN wordt gebruikt voor een consolidatieomgeving voor algemeen gebruik, zal het vrijwel zeker behoorlijk sub-optimaal worden afgesteld voor een streaming, stekelige lading zoals een datawarehouse. Ik heb gezien dat een white paper van een leverancier suggereert dat je ongeveer 3x het aantal schijven nodig hebt om dezelfde doorvoer te krijgen op een SAN die niet is afgestemd voor het streamen van I / O als voor een die dat wel is.

Mijn ervaring komt daarmee overeen. Ik heb zelfs nog nooit een datawarehouse geïmplementeerd in een consolidatieomgeving waar ik niet veel sneller hetzelfde ETL-proces kon uitvoeren op mijn desktop-pc.  Ik heb ook verkopers van een grote leverancier van SAN-apparatuur laten vertellen dat veel van hun klanten Direct Attach-opslag gebruiken voor het DW-systeem omdat SAN's niet snel genoeg zijn.

Netwerkopslag is minstens een orde van grootte duurder per IOPS dan Direct Attach-opslag voor workloads met willekeurige toegang en dichter bij twee ordes van grootte duurder voor streaming.


2
2018-02-27 21:11





De ervaring die ik hiermee heb, is dat wanneer je een 1Gbit-verbinding hebt en je een bestand probeert te downloaden, je harddisk meestal de bottleneck is. Een ding waar u echter rekening mee moet houden, is dat u eerst een verbinding tot stand moet brengen, wat ook tijd kost. Dus voor het verzenden van grote hoeveelheden gegevensnetwerk kan het eigenlijk sneller zijn dan schijf.


1
2018-02-21 23:49



Tenzij de schijf ook het knelpunt is aan de andere kant van de netwerkverbinding ...
@Argote: True, maar als de serversoftware correct is geschreven, wordt deze in het geheugen opgeslagen voordat naar de schijf wordt geschreven. - amphetamachine


Ja, over het algemeen worden netwerken nu sneller dan harde schijven, maar dit kan na verloop van tijd achterblijven.

Ik denk dus ik ben

Wanneer een applicatie wordt uitgevoerd, betekent dit dat de hostcomputer werkt, terwijl voor het werken via het netwerk een gemeenschappelijk protocol vereist is, controleert of de peer beschikbaar is, of de kanaalbeveiliging ... en als de peers andere platforms gebruiken, is het moeilijker om te bereiken wat u op een enkele machine kunt doen.

Ik kijk hier liever naar in termen van compromissen dan wie de sterkste is ...


1
2018-02-22 00:00



Ik betwijfel het, daarom zou ik dat wel zijn. - John Gardeniers


U moet een exact gebruik van deze vergelijking beschrijven. Harde schijven hebben zoektijd + overdrachtsnelheid en cache. Netwerken hebben latency, overdrachtsnelheid en protocoloverhead ...

Ik denk dat je originele cachegeheugen> geheugen> schijf> netwerk in het algemeen nog steeds waar is


1
2018-02-22 00:02





De schijf is verbonden met de CPU via een SCSI-, SAS- of IDE-bus. Dat is een intern netwerk met een specifiek protocol - SCSI of ATAPI. Ethernet is ontworpen om op langere afstanden te werken en kan veel langzamer zijn dan SAS / SCSI / IDE. Dus welke sneller is, hangt af van welke technologieën u vergelijkt. Als je een 20 jaar oude laptop HDD vergelijkt met een 10 Gbps RAM-opslag, zal de winnaar altijd het netwerk zijn. En wanneer u een opslag koopt, moet u het vergelijken met prijs en beheersbaarheid.


0
2018-02-22 02:13