Pertanyaan Apakah jaringan sekarang lebih cepat dari disk?


Ini adalah pertanyaan desain perangkat lunak

Saya dulu bekerja pada aturan berikut untuk kecepatan

cache memory > memory > disk > network

Dengan setiap langkah menjadi 5-10 kali langkah sebelumnya (mis., Memori cache 10 kali lebih cepat dari memori utama).

Sekarang, tampaknya gigabit ethernet memiliki latensi kurang dari disk lokal. Jadi, mungkin operasi untuk membaca dari jarak jauh di dalam memori DB lebih cepat daripada pembacaan disk lokal. Ini terasa seperti bidaah kepada pewaktu lama seperti saya. (Saya hanya menghabiskan beberapa waktu membangun cache lokal pada disk untuk menghindari harus melakukan perjalanan pulang-pergi jaringan - maka pertanyaan saya)

Apakah ada yang punya pengalaman / angka / saran di bidang ini?

Dan ya saya tahu bahwa satu-satunya cara nyata untuk mengetahui adalah membangun dan mengukur, tetapi saya bertanya-tanya tentang aturan umum.

sunting:

Ini adalah data menarik dari jawaban teratas:

  • Perjalanan pulang-pergi dalam pusat data yang sama 500.000 ns

  • Disk mencari 10.000.000 ns

Ini mengejutkan saya; model mental saya adalah bahwa perjalanan pulang pergi jaringan pada dasarnya lambat. Dan tidak - 10x lebih cepat dari 'round trip' disk.

Jeff attwood memposting blog bagus ini pada topik http://blog.codinghorror.com/the-infinite-space-between-words/


118
2018-02-21 23:46




Terkadang ya, kadang tidak. Jaringan apa? Disk apa? - John Gardeniers
Data menarik lainnya dari jawaban atas: 1 MB sequential read from network vs disk. Saya menduga waktu "round trip" menghilangkan transfer data yang signifikan. - Paul
Paul: Tergantung pada MTU Anda, saya yakin. (MTU 1MB? Luar Biasa!) - Matt Simmons
Saya ingin melihat beberapa jawaban ini ditinjau kembali dalam terang gigi jaringan 10Gbps yang tersedia secara luas. - chicks
jaringan gigabit vs razia 5? - SoilSciGuy


Jawaban:


Berikut beberapa angka yang mungkin Anda cari, seperti dikutip oleh Jeff Dean, seorang Fellow Google:

Angka yang Harus Diketahui Semua Orang

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

Ini dari presentasinya yang berjudul Desain, Pelajaran, dan Saran dari Membangun Sistem Terdistribusi Besar dan Anda bisa mendapatkannya di sini:

Pembicaraan itu diberikan di Sistem Terdistribusi Besar dan Middleware (LADIS) 2009.

Info lain


Dikatakan bahwa gcc -O4 mengirim email kode Anda ke Jeff Dean untuk menulis ulang.



127
2018-02-22 07:38



+1 Sangat menarik! - 9dan
Beberapa presentasi memiliki nilai berbeda yang ditunjukkan dalam tanda kurung. Saya berasumsi yang ada di braket tidak benar dan dia memperbarui nilainya. - David d C e Freitas
Apakah ini semua era pra-SSD? Lihat sini untuk mengetahui nomor terbaru. - matt
Saya benar-benar menggunakan angka-angka ini untuk membangun presentasi yang menunjukkan mengapa SSD drive membayar sendiri, untuk meyakinkan manajer kantor kami bahwa ya kami membutuhkan mesin yang lebih cepat untuk dikerjakan. Termasuk angka-angka untuk info teknis tetapi diarahkan ke manajemen non-tech sebanyak mungkin. - brichins


Ada banyak variabel ketika datang ke jaringan vs disk, tetapi secara umum, disk lebih cepat.

Bus SATA 3.0 dan SAS adalah 6 Gbps, vs. jaringan 1Gbps dikurangi overhead protokol. Dengan RAID-10 15k SAS, jaringan akan terlihat seperti anjing yang lambat. Selain itu, Anda memiliki cache disk dan juga kemungkinan hard drive solid state, yang tergantung pada skenario, juga dapat meningkatkan kecepatan. Akses data acak vs. Sekuensial memainkan faktor, serta ukuran blok tempat data ditransfer. Itu semua tergantung pada aplikasi yang digunakan untuk mengakses disk.

Sekarang, saya bahkan belum menyentuh fakta bahwa apa pun yang Anda angkut melalui jaringan akan atau berasal dari disk ... jadi ... lagi, disk lebih cepat.


19
2018-02-22 01:41



Poin untuk menyebutkan RAID yang memberi Anda membaca paralel, sesuatu yang Anda tidak mungkin mendapatkan di jaringan dalam waktu dekat. Tentu saja, jika kita berbicara tentang hard drive laptop lokal, maka combo SAN cepat dan jaringan cepat mungkin lebih cepat. Terutama dengan SSD di SAN itu. - Michael Dillon
Jaringan secara inheren dapat diparalelkan - apa yang Anda bicarakan? Ini sangat sepele untuk dibaca dari beberapa sistem di jaringan secara keseluruhan; ini adalah seluruh titik di belakang sistem seperti Hadoop dan MPI, belum lagi BitTorrent yang jelas. - jgoldschrafe
Dengan SONET / SDH Anda dapat memiliki 38Gbps lebih cepat dari SAS. Dan agregasi jaringan dapat dilakukan dengan sesuatu seperti en.wikipedia.org/wiki/Link_aggregation - Mircea Vutcovici
@Jake Ketika berbicara tentang 6 Gbps, Anda mungkin ingin membuat perbedaan yang jelas antara bandwidth antarmuka dan tingkat di mana sebuah disk benar-benar dapat menyediakan data. - NPE
saya mengatakan dalam pertanyaan saya bahwa saya berbicara tentang remote dalam database memori dibandingkan dengan cache disk lokal - pm100


Yah, itu tergantung pada apakah sumber daya jaringan memiliki data yang Anda minta tersedia (dalam memori atau serupa) atau jika itu hanya, pada gilirannya, membacanya dari disk.

Dalam kasus apa pun, throughput mungkin lebih tinggi dalam beberapa kasus, tetapi saya yakin latensi akan lebih tinggi.


10
2018-02-21 23:51



Maksud Anda bahwa mencari waktu pada disk lebih besar dari permintaan 10Gbit / s? - Mircea Vutcovici
@Mircea, ia berarti bahwa jaringan 10Gbit harus mendapatkan datanya dari suatu tempat, sehingga akan terbatas pada latensi sumber itu, ditambah latensi jaringan. - Chris S
Penyimpanannya bisa berupa disk RAM. Lihat: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based - Mircea Vutcovici


IMX disk masih lebih cepat. Tingkat transfer teoritis dari jaringan tinggi tetapi dalam prakteknya Anda tidak mendekati itu.

Sekitar dua tahun yang lalu saya mengalami masalah hard drive di laptop saya dan DMA keluar. Ini membuat hard drive jauh lebih lambat, dan lebih lambat dari jaringan. Tetapi ketika saya beralih ke komputer lain, saya kembali ke keadaan awal HDD lebih cepat daripada Internet.


2
2018-02-21 23:50





Pengalaman saya dengan jaringan gigabit adalah, mengingat server yang tepat, Anda dapat mengalahkan kinerja lokal dalam hal throughput dan latensi. Lihat Tes Jaringan: Apakah Kita Mendapatkan Kinerja Gigabit?

Untuk semua tujuan praktis saya akan merekomendasikan memperlakukan jaringan & penyimpanan lokal sebagai setara dan hanya menggunakan cache memori.

Peringatan standar seperti yang Anda sebutkan adalah benar karena tidak ada aturan umum; dan sebenarnya sebagian besar waktu harus bekerja dengan server yang dikonfigurasi dengan baik dan menggunakan metrik untuk mengevaluasi metode transfer data terbaik.

Jika Anda menggunakan mesin low end dengan hard drive lambat maka hampir pasti akan lebih cepat untuk menggunakan koneksi jaringan gigabit ke server dengan array penyimpanan yang cepat.

Sama halnya jika Anda bekerja dengan dua mesin dengan perangkat keras yang hampir sama, maka latensi dan overhead jaringan akan membuat penyimpanan lokal lebih cepat; itu benar-benar masuk akal.


2
2018-02-22 00:18





Tergantung. Jika I / O Anda adalah akses acak utama maka throughput datanya mungkin tidak terlalu bagus dibandingkan dengan bandwidth jaringan yang mungkin tersedia. Namun, sebagian besar lalu lintas jaringan pada akhirnya dihasilkan oleh proses yang melibatkan I / O. Jika set kerja dari proses apa pun yang menghasilkan lalu lintas jaringan cocok dengan cache maka itu tidak akan dibatasi oleh bandwidth disk. Jika itu menghancurkan cache maka disk akan menjadi penghambat.

Saya bekerja pada sistem data warehouse, dan permintaan DW canonical adalah scan tabel. Jika permintaan Anda mencapai lebih dari beberapa persen baris dalam tabel fakta (atau partisi), maka pemindaian tabel atau partisi menggunakan I / O berurutan akan lebih efisien daripada rencana kueri akses acak menggunakan pencarian indeks dan mencari.

Penyimpanan jaringan (mis. SAN) cenderung tidak berfungsi dengan baik pada beban kerja streaming kecuali jika disetel dengan tepat. Jika SAN digunakan untuk lingkungan konsolidasi tujuan umum, hampir dipastikan akan disetel cukup sub-optimal untuk streaming, beban runcing seperti gudang data. Saya telah melihat kertas putih vendor menunjukkan bahwa Anda memerlukan sekitar 3x jumlah disk untuk mendapatkan throughput yang sama pada SAN yang tidak disetel untuk streaming I / O seperti untuk yang itu.

Pengalaman saya sesuai dengan itu. Bahkan, saya tidak pernah menyebarkan data warehouse ke lingkungan konsolidasi di mana saya tidak bisa menjalankan proses ETL yang sama secara signifikan lebih cepat di PC desktop saya.  Saya juga memiliki perwakilan penjualan dari vendor besar peralatan SAN mengatakan dari catatan bahwa banyak pelanggan mereka menggunakan penyimpanan lampirkan langsung untuk sistem DW karena SAN tidak cukup cepat.

Penyimpanan jaringan setidaknya urutan besarnya lebih mahal per IOPS daripada penyimpanan lekat langsung untuk beban kerja akses acak dan lebih dekat dengan dua kali lipat lebih mahal untuk streaming.


2
2018-02-27 21:11





Pengalaman yang saya miliki dengan ini adalah bahwa ketika Anda berada di koneksi 1Gbit dan Anda mencoba untuk mengunduh file, harddisk Anda biasanya menjadi hambatan. Suatu hal yang harus diingat adalah bahwa Anda harus mengatur koneksi terlebih dahulu, yang juga membutuhkan waktu. Jadi untuk mengirim potongan besar jaringan data mungkin sebenarnya lebih cepat dari disk.


1
2018-02-21 23:49



Kecuali disk juga menjadi penghambat di sisi lain koneksi jaringan ...
@Argote: Benar, tetapi jika perangkat lunak server ditulis dengan benar, itu akan buffer ke memori sebelum menulis ke disk. - amphetamachine


Ya, secara umum, jaringan sekarang menjadi lebih cepat daripada hard-drive, tetapi ini dapat berubah seiring waktu.

Oleh karena itu saya pikir saya

Ketika sebuah aplikasi sedang berjalan itu berarti mesin host bekerja, sementara bekerja melalui jaringan memerlukan protokol umum, memeriksa ketersediaan peer, keamanan saluran ... dan jika rekan-rekan menggunakan platform yang berbeda, lebih sulit untuk mencapai apa yang dapat Anda lakukan pada satu mesin.

Saya lebih suka melihat ini dalam hal trade-off daripada siapa yang terkuat ...


1
2018-02-22 00:00



Saya ragu, karena itu saya mungkin. - John Gardeniers