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


Bu bir yazılım tasarım sorusu

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

cache memory > memory > disk > network

Her bir adımda, önceki adımın 5-10 katı (örneğin, önbellek ana belleğe göre 10 kat daha hızlıdır).

Şimdi, gigabit ethernet'in yerel diskten daha az gecikme süresi olduğu görünüyor. Yani, büyük bir uzak bellek içi DB'yi okuyabilen işlemler, yerel disk okumalarından daha hızlıdır. Bu benim gibi eski bir zamanlayıcıya sapkınlık gibi geliyor. (Ağ turları yapmak zorunda kalmamak için diske yerel bir önbellek oluşturmaya biraz zaman harcadım - bu yüzden sorum

Bu alanda herhangi bir deneyim / sayı / tavsiye var mı?

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

Düzenle:

Bu, en iyi cevabın ilginç verileridir:

  • Aynı datacenter 500,000 ns içinde gidiş dönüş

  • Disk 10,000,000 ns aramak

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

Jeff attwood konuyla ilgili bu iyi blog yayınladı http://blog.codinghorror.com/the-infinite-space-between-words/


118
2018-02-21 23:46


Menşei


Bazen evet bazen hayır. Hangi ağ? Hangi disk? - John Gardeniers
En tepedeki diğer ilginç veriler: 1 MB ağdan diske sıralı okuma. "Gidiş-dönüş" süresinin önemli bir veri aktarımını geçmediğinden şüpheleniyorum. - Paul
Paul: MTU'nuza bağlı, eminim. (1MB MTU? Müthiş!) - Matt Simmons
Bu cevaplardan bazılarını, 10Gbps ağ donanımının ışığında yeniden gözden geçirilmesini çok isterim. - chicks
gigabit ağ vs Raid 5? - SoilSciGuy


Cevaplar:


İşte bir Google Fellow olan Jeff Dean tarafından alıntılandığı gibi, muhtemelen aradığınız bazı rakamlar:

Herkesin Bilmesi Gereken Sayılar

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 başlıklı sunumundan Büyük Dağıtılmış Sistemlerin Oluşturulması Tasarımları, Dersleri ve Önerileri ve buradan alabilirsiniz:

Konuşma verildi Büyük Ölçekli Dağıtılmış Sistemler ve Ara Katmanları (LADIS) 2009.

Diğer Bilgiler


Söyleniyor Bu gcc -O4 kodunuzu yeniden yazmak için Jeff Dean'e e-postalar.



127
2018-02-22 07:38



+1 Çok ilginç! - 9dan
Bazı sunumlar parantez içinde belirtilen farklı değerlere sahiptir. Desteğin yanlış olduğunu ve değerleri güncellediğini varsayalım. - David d C e Freitas
Bu tüm SSD öncesi dönem mi? görmek İşte daha güncel numaralar için. - matt
Bu sayıları aslında bir SSD sürücülerinin neden kendileri için ödeme yaptığını gösteren sunumOfis yöneticimizi, daha hızlı makineler için çalışmak gerektiğine ikna etmek için. Teknik bilgi için rakamlar dahil ancak mümkün olduğunca teknik olmayan yönetimine doğru yönlendirdi. - brichins


Ağa karşı disk söz konusu olduğunda çok fazla değişken vardır, ancak genelde disk daha hızlıdır.

SATA 3.0 ve SAS veri yollarının ağları 1Gbps eksi protokolü olan 6 Gbps'dir. RAID-10 15k SAS ile ağ köpeğe yavaş görünecek. Buna ek olarak, disk önbelleğiniz ve ayrıca, senaryoya bağlı olarak, hızı artırabilecek katı hal sabitleri olasılığı da vardır. Rasgele ve Sıralı veri erişimi, bir verinin yanı sıra verinin aktarıldığı blok büyüklüğünü de etkiler. Bu, diske erişmek için kullanılan uygulamaya bağlıdır.

Şimdi, ağ üzerinde taşıdığınız her şeyin diske gittiği veya diskten geldiği gerçeğine bile değinmedim ... bu yüzden ....... yine disk daha hızlıdır.


19
2018-02-22 01:41



Paralel okumanızı sağlayan RAID'den bahsetme noktaları, yakında bir ağda bulunma ihtimaliniz olan bir şey. Tabii ki, yerel dizüstü bilgisayar sabit disklerinden bahsediyorsak, hızlı SAN ve hızlı ağın birleşimi daha hızlı olabilir. Özellikle bu SAN'deki SSD'ler ile. - Michael Dillon
Ağlar doğal olarak paralelleştirilebilir - ne hakkında konuşuyorsunuz? Agregattaki bir ağdaki çoklu sistemlerden okumak son derece önemsizdir; Bu, Hadoop ve MPI gibi sistemlerin arkasındaki tüm nokta, açık BitTorrent'den bahsetmiyor. - jgoldschrafe
SONET / SDH ile SAS'tan hala daha hızlı 38Gbps alabilirsiniz. Ve ağ birleştirme gibi bir şey ile yapılabilir en.wikipedia.org/wiki/Link_aggregation - Mircea Vutcovici
@Jake 6 Gbps hakkında konuştuğunuzda, arayüz bant genişliği ile bir diskin gerçekte veri sağlayabileceği oran arasında net bir ayrım yapmak isteyebilirsiniz. - NPE
Benim soruda yerel bir disk önbelleği ile karşılaştırıldığında bir bellek veritabanında bir uzak hakkında konuştuğunu söyledim - pm100


Bu, ağ kaynağının, (örneğin, bellekte veya benzerinde) kolayca bulunmasını istediğiniz veriye sahip olup olmadığına veya sadece bir diskten okuyabileceğine bağlıdır.

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


10
2018-02-21 23:51



Yani diskteki zaman aralığının 10Gbit / s isteğinden daha büyük mü? - Mircea Vutcovici
@Mircea, 10Gbit ağının veriyi bir yerden alması gerektiği anlamına geliyor, bu yüzden bu kaynağın gecikmesi ve ağın gecikmesi ile sınırlı olacak. - Chris S
Depolama bir RAM diski olabilir. Görmek: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based - Mircea Vutcovici


IMX disk hala daha hızlı. Ağın teorik transfer oranı yüksektir, ancak pratikte buna yaklaşamazsınız.

Yaklaşık iki yıl önce dizüstü bilgisayarımda sorun vardı ve DMA dışarı çıktı. Bu, sabit diski dramatik olarak daha yavaş ve özellikle ağdan daha yavaş hale getirdi. Ama başka bir bilgisayara geçtiğimde, orijinal HDD'mden daha hızlı bir şekilde internetten daha hızlı döndüm.


2
2018-02-21 23:50





Gigabit ağları ile ilgili deneyimim, doğru sunucu verildiğinde, yerel performansı iş hacmi ve gecikme açısından yenebiliyorsunuz. Görmek Ağ Testleri: Gigabit Performansı mı Alıyoruz?

Tüm pratik amaçlar için ağ ve yerel depolamayı eşdeğer olarak kullanmanızı öneriyorum ve sadece bellek önbelleklerini kullanıyorum.

Bahsedilen standart uyarı, genel kuralların olmaması nedeniyle 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 metrik kullanmalıyız.

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

Aynı eşdeğer iki donanıma sahip iki makineyle çalışıyorsanız, gecikme ve ağ yükü yerel depolamayı daha hızlı hale getirir; gerçekten sağduyu.


2
2018-02-22 00:18





Değişir. Eğer I / O'nız öncelikli olarak rasgele erişimliyse, o zaman onun düz iş hacmi, mevcut olabilecek ağ bant genişliğine kıyasla büyük bir olasılık değildir. Bununla birlikte, çoğu ağ trafiği, sonuç olarak G / Ç'yi içeren işlemler tarafından oluşturulur. Eğer herhangi bir işlemin çalışma kümesi ağ trafiğini oluşturuyorsa, önbellek sığar, o zaman disk bant genişliği tarafından kısıtlanmayacaktır. Önbelleği bozarsa, disk bir darboğaz haline gelir.

Veri ambarı sistemleri üzerinde çalışıyorum ve kanonik DW sorgusu bir tablo taramasıdır. Sorgunuz, gerçek tablodaki (veya bölümdeki) satırların yüzde birkaçından daha fazlasına ulaşırsa, sıralı G / Ç'yi kullanan bir tablo veya bölüm taraması, dizin aramalarını kullanarak bir rastgele erişim sorgu planından daha verimli olur ve arama yapar.

Ağa bağlı depolama (ör. SAN'lar), uygun şekilde ayarlanmadıkça akış iş yüklerinde iyi performans göstermemeye eğilimlidir. Eğer SAN genel amaçlı bir konsolidasyon ortamı için kullanılıyorsa, veri ambarı gibi bir akış, dikenli yük için neredeyse tamamen uygun şekilde ayarlanacaktır. Bir satıcı beyaz kağıdının, bir G / Ç akışı için ayarlanmış bir SAN için aynı çıktıyı elde edebilmek için disk sayısının yaklaşık 3 katına ihtiyaç duyduğunuzu öneriyorum.

Benim tecrübem bununla başa çıkıyor. Aslında, aynı ETL işlemini daha hızlı çalıştırabildiğim bir konsolidasyon ortamına asla bir veri ambarı dağıtmamıştım. masaüstü bilgisayarımda.  Ayrıca, büyük bir SAN ekipmanı satıcısından satış temsilcilerinin de, bir çok müşterisinin DW sistemi için yeterince hızlı bir şekilde ek depolama alanı kullanması nedeniyle kaydettiklerini kaydettim.

Ağa bağlı depolama, en azından IOPS başına, rasgele erişim iş yükleri için doğrudan ek depolamadan daha fazla ve akış için iki kat büyüklükte daha büyük sipariş miktarından daha büyük bir maliyet sırasına sahiptir.


2
2018-02-27 21:11





Bu konuda sahip olduğum deneyim, bir 1Gbit bağlantısında olduğunuzda ve bir dosyayı indirmeyi denediğinizde harddisk'in genellikle darboğaz olmasıdır. Aklınızda bulundurmanız gereken bir şey, önce bir bağlantı kurmanız gerektiğidir, bu da zaman alır. Yani büyük veri ağları göndermek için aslında diskten daha hızlı olabilir.


1
2018-02-21 23:49



Disk aynı zamanda ağ bağlantısının diğer tarafındaki darboğaz değilse ...
@Argote: Doğru, ancak sunucu yazılımı doğru yazılmışsa, diske yazmadan önce belleğe tamponlanır. - amphetamachine


Evet, genel olarak, ağlar artık sabit sürücülerden daha hızlıdır, ancak bu zaman içinde para kazanabilir.

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

Bir uygulama çalışırken, ana makinenin çalıştığı, ağ üzerinde çalışmanın ortak bir protokole ihtiyacı olduğu, eş durumun kullanılabilirliği, kanal güvenliğinin kontrol edildiği anlamına gelir. ve eşler farklı platformlar kullanıyorsa, tek bir makinede yapabileceğiniz şeyleri başarmak daha zordur.

Buna en güçlü olandan ziyade, ticari duruşlarda bakmayı tercih ederim.


1
2018-02-22 00:00



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


Bu karşılaştırma için kesin bir kullanım durumunu tanımlamanız gerekir. Harddrives zaman + transfer oranı ve önbellek arıyor. Ağlarda gecikme, transfer oranı ve protokol ek yükü var ...

Özgün önbellek> bellek> disk> ağınızın hala genel olarak geçerli olduğunu düşünüyorum.


1
2018-02-22 00:02





Disk CPU ile SCSI, SAS veya IDE veriyolu üzerinden bağlanır. Belirli bir protokolü çalıştıran bir iç ağ hangisidir - SCSI veya ATAPI. Ethernet daha uzun mesafelerde çalışmak üzere tasarlanmıştır ve SAS / SCSI / IDE'den çok daha yavaş olabilir. Hangisi daha hızlı ise, hangi teknolojilerin karşılaştırdığına bağlı. RAM belleğinde 10 Gbps'lik 20 yıllık bir dizüstü bilgisayar HDD'sini karşılaştırırsanız, kazanan her zaman ağ olacaktır. Ve bir depolama alanı satın aldığınızda, fiyatı ve yönetilebilirliği karşılaştırmalısınız.


0
2018-02-22 02:13





Peki, orada Hafif tepe RAM hızlarına yaklaşan 100GBps ağ hızını hedefliyor. Şüphesiz, şebeke sadece göndericinin verileri üretebileceği kadar hızlı bir şekilde gönderebilir, yani eğer gönderici bir sabit diskten veri okuyorsa, o zaman alıcı sadece veriyi diskle aynı hızda alacaktır. süper hızlı bir ağ.


0
2018-02-22 15:32