Ağlar artık disklerden daha mı hızlı?


126

Bu bir yazılım tasarım sorusudur

Hız için aşağıdaki kural üzerinde çalışırdım

cache memory > memory > disk > network

Her adım önceki adımın 5-10 katıdır (ör. Önbellek ana bellekten 10 kat daha hızlıdır).

Şimdi, gigabit ethernetin yerel diskten daha az gecikme olduğu görülüyor. Bu nedenle, belki de büyük bir uzak bellek içi DB'den okuma işlemleri yerel diskten daha hızlıdır. Bu benim gibi eski bir zamanlayıcı için sapkınlık gibi geliyor. (Ağ tur gezileri yapmak zorunda kalmamak için diskte yerel bir önbellek oluşturmak için biraz zaman harcadım - bu yüzden sorumu)

Bu alanda herhangi bir tecrübesi / numarası / tavsiyesi olan var mı?

Ve evet, öğrenmenin tek gerçek yolunun inşa etmek ve ölçmek olduğunu biliyorum, ama genel kuralı merak ediyordum.

düzenle :

Bu, en üstteki cevabın ilginç verileridir:

  • Aynı veri merkezindeki gidiş dönüş 500.000 ns

  • Disk 10.000.000 ns arayın

Bu benim için bir şok; Benim zihinsel modelim, bir ağ tur gezisinin doğal olarak yavaş olmasıdır. Ve değil - bir disk 'gidiş dönüşünden' 10 kat daha hızlı.

Jeff Attwood bu güzel blogu http://blog.codinghorror.com/the-infinite-space-between-words/ adresinde yayınladı.


11
Bazen evet bazen hayır. Hangi ağ Hangi disk?
John Gardeniers

1
En tepedeki diğer ilginç veriler: 1 MB sırayla ağdan diske okuma. "Gidiş-dönüş" zamanının önemli bir veri aktarımını engellediğinden şüpheleniyorum.
Paul,

Paul: MTU'nuza bağlı, eminim. (1MB MTU? Awesome!)
Matt Simmons

Bu cevapların bazılarının 10Gbps ağ donanımının yaygın olarak erişilebilir olması ışığında yeniden gözden geçirilmesini görmek isterim.
piliçler

Gigabit ağ vs 5 baskın?
SoilSciGuy

Yanıtlar:


137

Bir Google Araştırmacısı Jeff Dean tarafından alıntılandığı gibi, muhtemelen aradığınız bazı rakamlar:

Herkesin bilmesi gereken rakamlar

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

Onun sunum başlıklı geliyor Büyük Dağıtılmış Sistemler Kurmak gelen Tasarımlar, Dersler ve Advice ve buradan elde edebilirsiniz:

Konuşma Büyük Ölçekli Dağıtım Sistemleri ve Ara Katmanı 2009'da (LADIS) yapıldı .

Diğer Bilgiler


Gcc -O4'un kodunuzu Jeff Dean'e yeniden yazmak için e-postayla gönderdiği söylenir .



+1 Çok ilginç!
9dan

1
Bazı sunumlarda parantez içinde belirtilen farklı değerler vardır. Birinin parantez içerisindeki hatalı olduğunu ve değerleri güncellediğini varsayıyorum.
David d'C Freitas

1
Bunların hepsi SSD öncesi dönem mi? güncel sayılar için buraya bakınız .
matt

Aslında bu rakamları SSD sürücülerinin neden kendileri için para ödediklerini gösteren bir sunum oluşturmak için kullandım , ofis yöneticimizi evet üzerinde çalışacak daha hızlı makinelere ihtiyaç duyduğumuza ikna etmek için. Teknik bilgi için numaralar dahil edildi ancak mümkün olduğunca teknoloji dışı yönetime yönlendirildi.
brichins

19

Ağa karşı diske gelince bir çok değişken var ama genel olarak disk daha hızlı.

SATA 3.0 ve SAS veriyolları, 1 Gbps eksi protokol yükü ağlarına karşılık 6 Gbps'dir. RAID-10 15k SAS ile ağ, köpek yavaş görünecek. Ek olarak, disk önbelleğine sahipsiniz ve ayrıca senaryoya bağlı olarak hızı artırabilen yarıiletken sabit sürücü olasılığı da var. Rasgele ve Ardışık veri erişimi, verinin aktarıldığı blok boyutunun yanı sıra bir faktör de oynar. Bunların hepsi diske erişmek için kullanılan uygulamaya bağlıdır.

Şimdi, ağ üzerinden taşıdığınız her ne olursa olsun yine de diskten geldiği ya da diskten geldiği gerçeğine bile dokunmadım ... yani ....... yine, disk daha hızlı.


1
Paralel okuma sağlayan RAID'den bahsettiğiniz noktalar, yakın zamanda ağa erişme ihtimaliniz olmayan bir şey. Tabii ki, eğer yerel dizüstü sabit disklerinden bahsediyorsak, hızlı SAN ve hızlı ağın birleşimi daha hızlı olabilir. Özellikle o SAN'daki SSD'ler ile.
Michael Dillon,

10
Ağlar doğası gereği paralelleştirilebilir - neden bahsediyorsunuz? Bir ağdaki birden çok sistemden toplu olarak okumak inanılmaz derecede önemsizdir; bariz BitTorrent'ten bahsetmek yerine, Hadoop ve MPI gibi sistemlerin arkasındaki asıl nokta budur.
jgoldschrafe

2
SONET / SDH ile 38 Gb / s'ye hala SAS'dan daha hızlı sahip olabilirsiniz. Ve ağ toplanması en.wikipedia.org/wiki/Link_aggregation
Mircea Vutcovici,

10
@Jake 6 Gbps hakkında konuşurken, arayüz bant genişliği ile bir diskin gerçekte veri sağlayabileceği hız arasında net bir ayrım yapmak isteyebilirsiniz.
NPE

4
Benim soruma söylemeliyim ki, diskteki bir önbellek ile kıyaslandığında bellek veritabanındaki uzak bir bilgisayardan bahsediyordum
pm100

10

Bu, ağ kaynağının kolayca istediğiniz bir veriye sahip olup olmadığına (bellekte veya benzer şekilde) ya da sadece bir diskten okuyacağına bağlıdır.

Her durumda, verim bazı durumlarda daha yüksek olabilir, ancak gecikmenin daha yüksek olacağına inanıyorum.


Demek istediğim, diskte arama süresi 10 Gbit / sn'den daha büyük bir istek mi?
Mircea Vutcovici

1
@Mircea, 10Gbit ağın bir yerden veri alması gerektiği anlamına gelir, bu yüzden o kaynağın gecikmesiyle, artı ağın gecikmesiyle sınırlı olacaktır.
Chris S,

Depolama bir RAM disk olabilir. Bakınız: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based
Mircea Vutcovici

2

IMX disk hala daha hızlı. Ağın teorik aktarım hızı yüksektir ancak pratikte buna yaklaşmazsınız.

Yaklaşık iki yıl önce dizüstü bilgisayarımda bir sabit disk sorunu yaşadım ve DMA dışarı çıktı. Bu, sabit diski önemli ölçüde daha yavaş ve özellikle de ağa göre daha yavaştır. Ancak başka bir bilgisayara geçtiğimde, orijinal HDD durumuma Internet'ten daha hızlı döndüm.


2

Gigabit ağları ile olan deneyimim, doğru sunucuya bağlı olarak, verim ve gecikme açısından yerel performansı geçebilmenizdir. Ağ Testlerine Bakın : Gigabit Performansı Alıyoruz?

Tüm pratik amaçlar için, ağ ve yerel depolamayı eşdeğer olarak kabul etmeyi tavsiye ediyorum ve sadece hafıza önbelleklerini kullanıyorum.

Bahsettiğiniz gibi standart uyarma, genel kurallar olmadığı için doğrudur; ve aslında çoğu zaman iyi yapılandırılmış sunucularla çalışmalı ve en iyi veri aktarım yöntemini değerlendirmek için ölçümleri kullanmalı.

Yavaş sabit sürücülü düşük uçlu bir makine kullanıyorsanız, hızlı bir depolama dizisine sahip bir sunucuya gigabit ağ bağlantısı kullanmak neredeyse daha hızlı olacaktır.

Eşit derecede yakın donanıma sahip iki makine ile çalışıyorsanız, gecikme süresi ve ağ yükü yerel depolamayı daha hızlı hale getirir; Bu gerçekten sağduyu.


2

Değişir. Eğer G / Ç’niz birincil olarak rasgele erişimse, düz çıktı, muhtemelen kullanılabilecek ağ bant genişliğine kıyasla o kadar iyi değildir. Ancak, çoğu ağ trafiği, en sonunda, G / Ç içeren işlemler tarafından üretilir. Herhangi bir işlemin çalışma kümesi ağ trafiğini oluşturuyorsa, önbelleğe sığarsa, disk bant genişliği ile sınırlandırılmaz. Önbelleği çöpe atarsa, disk tıkanıklık olur.

Veri ambarı sistemlerinde çalışıyorum ve kanonik DW sorgusu tablo taramasıdır. Sorgunuz olgu tablosundaki (veya bölümdeki) satırların birkaç yüzdesinden daha fazlasına çarparsa, sıralı G / Ç kullanan bir tablo veya bölüm taraması, dizin aramalarını ve aramalarını kullanan rastgele bir erişim sorgusu planından daha verimli olacaktır.

Ağ bağlantılı depolama (yani SAN'lar), uygun şekilde ayarlanmadıkça akışlı iş yüklerinde iyi performans gösterme eğilimindedir. SAN, genel amaçlı bir konsolidasyon ortamı için kullanılıyorsa, neredeyse bir veri deposu gibi dikenli bir akış için oldukça uygun bir şekilde ayarlanacaktır. Bir satıcı beyaz kağıdında, sanki G / Ç akışında olduğu gibi ayarlanmamış bir SAN üzerinde aynı verimi elde etmek için yaklaşık 3 kat disk sayısına ihtiyacınız olduğunu öne sürdüm.

Benim deneyimim bununla konuşuyor. Aslında, masaüstü bilgisayarımda aynı ETL işlemini önemli ölçüde daha hızlı uygulayamadığım bir konsolidasyon ortamına hiçbir zaman bir veri ambarı yerleştirmedim . Ayrıca, büyük bir SAN ekipmanı satıcısının satış temsilcileri de, pek çok müşterisinin DW sistemi için doğrudan takma depolama kullandıklarını, çünkü SAN'lerin yeterince hızlı olmadıklarını söylüyor.

Ağ bağlantılı depolama, en azından IOPS başına rasgele erişim iş yükleri için doğrudan bağlantı depolamaya göre daha pahalı ve akış için daha pahalı olan iki büyüklük sırasına daha yakın bir siparişdir.


1

Bununla ilgili deneyimim, 1Gbit bağlantıda olduğunuzda ve bir dosyayı indirmeye çalıştığınızda harddisk'inizin genellikle darboğaz olması. Akılda tutmanız gereken bir şey, öncelikle bir bağlantı kurmanız gerektiğidir, bu da zaman alır. Bu nedenle, büyük veri ağı parçalarını göndermek aslında diskten daha hızlı olabilir.


1
Disk, ağ bağlantısının diğer tarafında da bir tıkanıklık olmadığı sürece ...

@Argote: Doğru, ancak sunucu yazılımı doğru yazılmışsa, diske yazmadan önce belleğe arabelleğe alınır.
amfetamachine

1

Evet, genel olarak, ağlar artık sabit disklerden daha hızlı oluyor, ancak bu zamanla değişebilir.

Düşünüyorum öyleyse varım

Bir uygulama çalışırken, ana makinenin çalıştığı anlamına gelir, ağ üzerinden çalışmak ortak bir protokole ihtiyaç duyar, eş durumu olup olmadığını, kanal güvenliğini kontrol eder ... ve eşler farklı platformlar kullanıyorsa, Tek makina

Kimin en güçlü olduğu değil, takas açısından bakmayı tercih ederim.


4
Şüpheliyim, bu yüzden olabilirim.
John Gardeniers

1

Bu karşılaştırma için kesin bir kullanım durumu tanımlamanız gerekir. Sabit sürücülerde zaman + aktarım hızı ve önbellek aranır. Ağların gecikme süresi, aktarım hızı ve ek yükü var ...

Sanırım orijinal önbellek hafızanız> hafıza> disk> ağ genel olarak hala geçerli


0

Disk CPU'ya SCSI, SAS veya IDE bus ile bağlanır. Hangi belirli bir protokol çalıştıran bir iç ağ - SCSI veya ATAPI. Ethernet daha uzun mesafelerde çalışmak üzere tasarlanmıştır ve SAS / SCSI / IDE'den daha yavaş olabilir. Yani hangisi daha hızlı, hangi teknolojileri karşılaştırdığınıza bağlı. 20 yaşında bir dizüstü bilgisayar HDD'sini 10 GB / sn RAM depolama alanında karşılaştırırsanız, kazanan her zaman ağ olacaktır. Bir depolama alanı satın aldığınızda fiyatı ve yönetilebilirliği karşılaştırmanız gerekir.


0

Peki, 100GB / sn ağ hızını hedefleyen ve RAM hızlarına yaklaşan Light Peak var . Şüphesiz, ağ yalnızca gönderenin verileri üretebildiği kadar hızlı bir şekilde veri sunabilir, yani gönderen bir sabit diskten veri okuyorsa, alıcı verileri yalnızca diskle okunan hızda, aynı zamanda okur. süper hızlı bir ağ.


0

Akılda tutulması gereken bir şey, ağa bağlı olmasıdır. Örneğin, bir web sitesindeki performanstan siz sorumlusunuz. Bu web sitesi elbette yerel bir ağ üzerinden bir veritabanı sunucusuna bağlı ve aynı zamanda bir tür ağ olan internet üzerinden web sörfçülerine de bağlı.

Çoğu durumda, web sunucusu ile veritabanı sunucusu arasında statik IP'ler ve bir gecikme kablosu veya automdx aracılığıyla gecikmeyi önlemek ve trafiğe özel bir bağlantı sağlamak için çok hızlı olmasını istediğiniz özel bir bağlantı kurulabilir. Veri tabanı sunucusu, db'nin hafızasında olabildiğince fazla tutulması için her türlü işi yapar ve çoğu durumda tüm içeriğin yanı sıra birkaç indeks için de başarılı olur. Bu veritabanına yapılan sorgular, diske yapılan sorgulardan çok daha hızlı veya daha hızlı olacak.

Öte yandan, bazı web teknolojileri (asp.net webforms viewtate, sana bakıyorum), istemci web tarayıcısına önbellek (çeşit) olarak birçok bilgi itmek istemektedir. Bu yerel lan bağlantısı ise tüm bu kötü değil (ve asp.net Webform savunmasında bu zamanın çok doğrudur), ancak kamu internette bu kesinlikle olabilir öldürmek , performans sık sık bu itme çok daha iyi olacak şekilde bunun yerine bir veritabanına veya yerel diske.


0

Şahsen, dikkate alınması gereken birkaç faktör olduğunu düşünüyorum. Örneğin, yerel olarak erişmekte olduğunuz bellek veya diskin ağ üzerinden erişeceğinize ne kadar hızlı olması? Uzak veri çok hızlı bir SSD'de ve gigabit ağ kurulumunun uçtan uca daha hızlı olması durumunda, büyük akışlı dosyalar için uzaktan kumanda daha hızlı olabilir.

Bununla birlikte, rastgele küçük veri birimlerine erişiyorsanız ve ağ kusursuz olmadıysa ya da çok fazla şüphe duyduysanız ve erişdiğinizden daha fazlası varsa, yerel bir önbelleğin, neredeyse 100'lük bir mekanik disk sürücüsünde bile daha hızlı olduğunu iddia ediyorum. zamanın% 'si. Ancak ilginç bir noktaya geliyorsunuz ve eğer ağ hızları artmaya devam ederse, yerel olarak herhangi bir şeyin depolanması gerekecek mi?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.