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/
sumber
Jawaban:
Berikut adalah beberapa angka yang mungkin Anda cari, seperti dikutip oleh Jeff Dean, seorang Google Fellow:
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.
sumber
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.
sumber
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
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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 ...
sumber
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
sumber
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.
sumber
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.
sumber
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.
sumber
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?
sumber