Apakah jaringan sekarang lebih cepat daripada disk?

126

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 ethernet gigabit memiliki latensi lebih sedikit daripada disk lokal. Jadi, mungkin operasi untuk membaca dari DB dalam-memori jauh yang besar lebih cepat daripada pembacaan disk lokal. Ini terasa seperti bid'ah untuk timer lama seperti saya. (Saya baru saja menghabiskan waktu membangun cache lokal pada disk untuk menghindari keharusan melakukan network round trip - maka pertanyaan saya)

Adakah yang punya pengalaman / angka / saran di bidang ini?

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

edit :

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 bagi saya; model mental saya adalah bahwa perjalanan pulang-pergi secara inheren lambat. Dan tidak - 10x lebih cepat dari disk 'perjalanan pulang'.

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

pm100
sumber
11
Terkadang ya, kadang tidak. Jaringan apa? Disk apa?
John Gardeniers
1
Data menarik lainnya dari jawaban teratas: 1 MB dibaca berurutan dari jaringan vs. disk. Saya menduga waktu "pulang pergi" menghilangkan transfer data yang signifikan.
Paul
Paul: Tergantung MTUmu, aku yakin. (1MB MTU? Keren!)
Matt Simmons
Saya ingin melihat beberapa jawaban ini dipertimbangkan kembali mengingat jaringan 10Gbps tersedia secara luas.
anak ayam
jaringan gigabit vs raid 5?
SoilSciGuy

Jawaban:

137

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

Bilangan 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 berjudul Desain, Pelajaran dan Saran dari Membangun Sistem Terdistribusi Besar dan Anda bisa mendapatkannya di sini:

Pembicaraan diberikan pada Sistem Terdistribusi Skala Besar dan Middleware (LADIS) 2009 .

Info lain


Dikatakan bahwa gcc -O4 mengirimkan kode Anda ke Jeff Dean untuk ditulis ulang.


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

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

SATA 3.0 dan SAS bus 6 Gbps, vs. jaringan 1Gbps minus overhead protokol. Dengan RAID-10 15k SAS, jaringan akan tampak lambat. Selain itu, Anda memiliki cache disk dan 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 sedang 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.

JakeRobinson
sumber
1
Poin untuk menyebutkan RAID yang memberi Anda pembacaan paralel, sesuatu yang tidak mungkin Anda dapatkan di jaringan dalam waktu dekat. Tentu saja, jika kita berbicara tentang hard drive laptop lokal, maka kombo SAN cepat dan jaringan cepat mungkin lebih cepat. Apalagi dengan SSD di SAN itu.
Michael Dillon
10
Jaringan secara inheren dapat diparalelkan - apa yang Anda bicarakan? Sangat sepele untuk membaca dari beberapa sistem di jaringan secara agregat; ini adalah keseluruhan poin di balik sistem seperti Hadoop dan MPI, belum lagi BitTorrent yang jelas.
jgoldschrafe
2
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
10
@ Jake Ketika berbicara tentang 6 Gbps, Anda mungkin ingin membuat perbedaan yang jelas antara bandwidth antarmuka dan kecepatan di mana disk sebenarnya dapat memasok data.
NPE
4
saya memang mengatakan dalam pertanyaan saya bahwa saya sedang berbicara tentang remote dalam database memori dibandingkan dengan lokal pada cache disk
pm100
10

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

Bagaimanapun, throughput mungkin lebih tinggi dalam beberapa kasus tetapi saya percaya latensi akan lebih tinggi.


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

IMX disk masih lebih cepat. Kecepatan transfer teoritis jaringan tinggi tetapi dalam praktiknya Anda tidak mendekati itu.

Sekitar dua tahun yang lalu saya mengalami masalah hard drive di laptop saya dan DMA keluar. Ini membuat hard drive lebih lambat secara dramatis, dan khususnya lebih lambat dari jaringan. Tetapi ketika saya beralih ke komputer lain, saya kembali ke kondisi asli HDD saya lebih cepat dari Internet.

Charles
sumber
2

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

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

Peringatan standar seperti yang Anda sebutkan adalah benar karena tidak ada aturan umum; dan bahwa sebenarnya sebagian besar waktu seseorang 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 cepat.

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

Richard Harrison
sumber
2

Tergantung. Jika I / O Anda adalah akses acak maka throughputnya yang datar 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 kumpulan proses apa pun yang menghasilkan lalu lintas jaringan cocok dengan cache, maka itu tidak akan dibatasi oleh bandwidth disk. Jika meronta-ronta cache maka disk akan menjadi hambatan.

Saya bekerja pada sistem data warehouse, dan permintaan DW kanonik adalah pemindaian tabel. Jika kueri Anda mengenai lebih dari beberapa persen dari 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 dan pencarian indeks.

Penyimpanan jaringan (yaitu SAN) cenderung tidak berkinerja baik pada streaming beban kerja kecuali jika disetel dengan tepat. Jika SAN digunakan untuk lingkungan konsolidasi tujuan umum, hampir pasti akan disetel secara kurang optimal untuk streaming, beban runcing seperti gudang data. Saya telah melihat kertas putih vendor menyarankan bahwa Anda memerlukan sekitar 3x jumlah disk untuk mendapatkan throughput yang sama pada SAN yang tidak disetel untuk streaming I / O seperti yang ada.

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

Penyimpanan jaringan setidaknya merupakan urutan besarnya lebih mahal per IOPS daripada penyimpanan pasang langsung untuk beban kerja akses acak dan lebih dekat ke dua urutan besarnya lebih mahal untuk streaming.

ConcernedOfTunbridgeWells
sumber
1

Pengalaman yang saya miliki dengan ini adalah ketika Anda berada di koneksi 1Gbit dan Anda mencoba mengunduh file, harddisk Anda biasanya menjadi penghambat. Satu 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 daripada disk.

teuneboon
sumber
1
Kecuali jika disk juga menjadi hambatan 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
1

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

Oleh karena itu saya pikir saya

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

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

Xaqron
sumber
4
Saya ragu, karena itu saya mungkin.
John Gardeniers
1

Anda harus menjelaskan kasus penggunaan yang tepat untuk perbandingan ini. Harddrives harus mencari waktu + kecepatan transfer dan cache. Jaringan memiliki latensi, kecepatan transfer, dan overhead protokol ...

Saya pikir memori cache asli Anda> memori> disk> jaringan masih benar secara umum

Zepplock
sumber
0

Disk terhubung dengan CPU melalui SCSI, SAS atau IDE bus. Yang merupakan jaringan internal menjalankan protokol khusus - SCSI atau ATAPI. Ethernet dirancang untuk bekerja pada jarak yang lebih jauh dan bisa jauh lebih lambat dari SAS / SCSI / IDE. Jadi mana yang lebih cepat, tergantung pada teknologi mana yang Anda bandingkan. Jika Anda membandingkan HDD laptop 20 tahun dengan penyimpanan RAM 10Gbps, pemenangnya akan selalu berupa jaringan. Dan ketika Anda membeli penyimpanan, Anda harus membandingkannya dengan harga dan pengelolaan.

Mircea Vutcovici
sumber
0

Nah, ada Light Peak yang bertujuan untuk kecepatan jaringan 100GBps, yang semakin mendekati kecepatan RAM. Tentu saja, jaringan hanya dapat mengirimkan data secepat pengirim dapat menghasilkan data, yaitu jika pengirim membaca data dari hard disk maka penerima hanya akan mendapatkan data pada kecepatan yang sama dengan membaca disk, bahkan dengan jaringan supercepat.

Mendesis
sumber
0

Satu hal yang perlu diingat adalah bahwa itu tergantung pada jaringan. Katakan, misalnya, Anda bertanggung jawab atas kinerja di situs web. Situs web ini tentu saja terhubung ke server database melalui jaringan lokal, dan juga terhubung ke peselancar web melalui internet, yang juga merupakan sejenis jaringan.

Dalam banyak kasus, tautan khusus dapat diatur antara server web dan server basis data melalui IP statis dan kabel crossover atau automdx untuk menjaga latensi tetap rendah dan menyediakan tautan khusus untuk lalu lintas, karena Anda menginginkannya sangat cepat. Server database melakukan semua jenis pekerjaan untuk menjaga sebanyak mungkin db dalam memori, dan dalam banyak kasus sering berhasil untuk seluruh konten ditambah beberapa indeks. Permintaan ke basis data ini akan sama cepat atau bahkan lebih cepat daripada permintaan ke disk.

Di sisi lain, teknologi web tertentu (kondisi tampilan webform.net asp.net, saya melihat Anda) ingin mendorong banyak informasi ke dan dari browser web klien sebagai cache (semacam). Jika ini adalah koneksi lan lokal (dan dalam pertahanan webform asp.net ini sering terjadi) itu tidak terlalu buruk, tetapi di internet publik ini benar-benar dapat mematikan kinerja, sehingga Anda seringkali lebih baik mendorong ini ke database atau disk lokal sebagai gantinya.

Joel Coel
sumber
0

Secara pribadi, saya pikir ada beberapa faktor yang perlu dipertimbangkan. Misalnya, seberapa cepat memori atau disk yang Anda akses secara lokal vs yang Anda akses melalui jaringan? Jika data jarak jauh menggunakan SSD yang sangat cepat dan lebih cepat daripada jaringan gigabit yang terpasang ujung ke ujung, jarak jauh mungkin lebih cepat untuk file streaming berukuran besar.

Namun jika Anda secara acak mengakses unit kecil data dan jaringan tidak sempurna atau memiliki banyak lompatan dan lebih dari sekadar Anda mengaksesnya, saya berani bertaruh bahwa cache lokal lebih cepat bahkan pada disk drive mekanis yang berputar hampir 100 % waktu. Tapi Anda memunculkan poin yang menarik dan berapa lama akan membutuhkan penyimpanan lokal apa pun jika kecepatan jaringan terus tumbuh?

Jim
sumber