سؤال هل الشبكات الآن أسرع من الأقراص؟


هذا سؤال تصميم برامج

اعتدت على العمل على القاعدة التالية للسرعة

cache memory > memory > disk > network

مع كل خطوة تكون 5-10 أضعاف الخطوة السابقة (على سبيل المثال ، تكون ذاكرة التخزين المؤقت أسرع بعشر مرات من الذاكرة الرئيسية).

الآن ، يبدو أن إيثرنت جيجابت لديه وقت استجابة أقل من القرص المحلي. لذلك ، ربما تكون العمليات التي تتم قراءتها من DB كبير بعيد في الذاكرة أسرع من قراءة القرص المحلي. هذا يبدو وكأنه بدعة إلى جهاز توقيت قديم مثلي. (لقد قضيت بعض الوقت في بناء ذاكرة تخزين محلية على القرص لتجنب الاضطرار إلى القيام برحلات عبر الشبكة - وبالتالي سؤالي)

هل لدى أي شخص خبرة / أرقام / نصيحة في هذا المجال؟

ونعم أعرف أن الطريقة الحقيقية الوحيدة لمعرفة ذلك هي بناء وقياس ، لكنني كنت أتساءل عن القاعدة العامة.

تصحيح:

هذه هي البيانات المثيرة للاهتمام من أعلى إجابة:

  • رحلة ذهاب وإياب داخل نفس مركز البيانات 500000 نانوثانية

  • القرص تسعى 10،000،000 نانوثانية

هذه صدمة بالنسبة لي. نموذج عقلي هو أن رحلة ذهابًا وإيابًا عبر شبكة بطيئة بطبيعتها. وليس لها - لها 10X أسرع من قرص "رحلة ذهابا وإيابا".

نشر جيف أتوود هذه المدونة الجيدة على هذا الموضوع http://blog.codinghorror.com/the-infinite-space-between-words/


118
2018-02-21 23:46


الأصل


أحيانا نعم وأحيانا لا. ما هي الشبكة؟ ما القرص؟ - John Gardeniers
البيانات الأخرى المثيرة للاهتمام من أعلى إجابة: 1 ميغابايت متسلسلة القراءة من الشبكة مقابل القرص. أظن أن الوقت "ذهابا وإيابا" يغفل أي نقل البيانات الهامة. - Paul
بول: يعتمد على MTU الخاص بك ، أنا متأكد. (1MB MTU؟ ممتاز!) - Matt Simmons
أحب أن أرى بعض من هذه الإجابات يعاد النظر في ضوء 10Gbps شبكة معدات المتاحة على نطاق واسع. - chicks
شبكة جيجابت مقابل غارة 5؟ - SoilSciGuy


الأجوبة:


في ما يلي بعض الأرقام التي ربما تبحث عنها ، وفقًا لما نقله جيف دين ، أحد زملاء Google:

أرقام يجب أن يعرفها الجميع

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

إنه من عرضه التقديمي المعنون التصاميم والدروس والمشورة من بناء أنظمة توزيع كبيرة ويمكنك الحصول عليه هنا:

وقد قدم الكلام في الأنظمة الموزعة على نطاق واسع والبرامج الوسيطة (LADIS) 2009.

معلومات اخرى


يقال يرسل gcc -O4 رسالتك إلى Jeff Dean لإعادة كتابتها.



127
2018-02-22 07:38



+1 مثيرة جدا للاهتمام! - 9dan
بعض العروض التقديمية لها قيم مختلفة موضحة في الأقواس. أفترض أن الشخص الموجود في الشريحة غير صحيح وقام بتحديث القيم. - David d C e Freitas
هل هذا هو كل عصر ما قبل SSD؟ نرى هنا لمزيد من الأرقام الحديثة. - matt
أنا فعلا استخدمت هذه الأرقام لبناء عرض يوضح سبب دفع محركات أقراص SSD لأنفسهملإقناع مدير مكتبنا بأننا نحتاج إلى آلات أسرع للعمل عليها. وشملت الأرقام للحصول على المعلومات التقنية ولكن موجهة نحو الإدارة غير التقنية قدر الإمكان. - brichins


هناك الكثير من المتغيرات عندما يتعلق الأمر بالشبكة مقابل القرص ، ولكن بشكل عام ، القرص أسرع.

تبلغ سارتا SATA 3.0 و SAS 6 جيجابت في الثانية مقابل شبكات 1 جيجابت في الثانية دون الحاجة إلى حمل بروتوكول. مع RAID-10 15K SAS ، ستبدو الشبكة بطيئة. بالإضافة إلى ذلك ، لديك ذاكرة التخزين المؤقت القرص وأيضا إمكانية القرص الصلب الحالة الصلبة ، والتي تعتمد على السيناريو ، يمكن أيضا زيادة السرعة. تشغيل عشوائي مقابل مقابل تسلسلي للبيانات عامل ، بالإضافة إلى حجم الكتلة التي يتم نقل البيانات بها. يعتمد ذلك على التطبيق الذي يتم استخدامه للوصول إلى القرص.

الآن ، حتى أنني لم أتطرق إلى حقيقة أن كل ما تقوم بنقله عبر الشبكة سيذهب أو يأتي من القرص على أي حال ... لذا ....... مرة أخرى ، القرص أسرع.


19
2018-02-22 01:41



نقاط لذكر RAID الذي يعطيك قراءة متوازية ، وهو أمر لا يحتمل أن تحصل عليه على الشبكة في أي وقت قريب. وبالطبع ، إذا كنا نتحدث عن محركات الأقراص الصلبة المحلية ، فستكون أسرع شبكة SAN وشبكة سريعة أسرع. خصوصا مع SSDs في هذا SAN. - Michael Dillon
الشبكات موازية بطبيعتها - ما الذي تتحدث عنه؟ انها تافهة بشكل لا يصدق للقراءة من أنظمة متعددة على شبكة في مجموعها. هذه هي النقطة الكاملة وراء أنظمة مثل Hadoop و MPI ، ناهيك عن BitTorrent الواضح. - jgoldschrafe
مع SONET / SDH يمكنك الحصول على أسرع من 38 جيجا بايت في الثانية من SAS. ويمكن أن يتم تجميع الشبكة بشيء مثل en.wikipedia.org/wiki/Link_aggregation - Mircea Vutcovici
Jake عند الحديث عن 6 جيجابت في الثانية ، قد ترغب في التمييز بوضوح بين عرض النطاق الترددي للواجهة والمعدل الذي يستطيع القرص من خلاله بالفعل توفير البيانات. - NPE
قلت في سؤالي أنني كنت أتحدث عن جهاز تحكم عن بعد في قاعدة بيانات الذاكرة مقارنة المحلية على ذاكرة التخزين المؤقت على القرص - pm100


حسنا ، هذا يعتمد على ما إذا كان مورد الشبكة يحتوي على البيانات التي تطلبها متاحة بسهولة (في الذاكرة أو ما شابه) أو إذا كان فقط ، بدوره ، قراءتها من قرص.

في أي حال ، قد يكون الإنتاج أعلى في بعض الحالات ولكن أعتقد أن وقت الاستجابة سيكون أعلى.


10
2018-02-21 23:51



تقصد أن البحث عن الوقت على القرص أكبر من طلب 10 جيجابت / ثانية؟ - Mircea Vutcovici
Mircea ، يعني أن شبكة 10Gbit يجب أن تحصل على البيانات من مكان ما ، لذا ستقتصر على وقت استجابة هذا المصدر ، بالإضافة إلى زمن الوصول للشبكة. - Chris S
يمكن أن يكون التخزين قرص RAM. نرى: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based - Mircea Vutcovici


IMX القرص لا يزال أسرع. معدل النقل النظري للشبكة مرتفع ولكن في الواقع لا تقترب من ذلك.

قبل حوالي عامين واجهت مشكلة في محرك الأقراص الصلبة على جهاز الكمبيوتر المحمول الخاص بي وخرجت DMA. هذا جعل القرص الصلب أبطأ بشكل كبير ، وعلى وجه الخصوص أبطأ من الشبكة. ولكن عندما انتقلت إلى جهاز كمبيوتر آخر ، عدت إلى حالتي الأصلية من الأقراص الصلبة بشكل أسرع من الإنترنت.


2
2018-02-21 23:50





إن خبرتي مع شبكات gigabit هي ، بالنظر إلى الخادم الصحيح ، أنه يمكنك التغلب على الأداء المحلي من حيث الإنتاجية ووقت الاستجابة. نرى اختبارات الشبكة: هل نحصل على أداء جيجابت؟

لجميع الأغراض العملية أوصي بمعالجة الشبكة والتخزين المحلي على أنها مكافئة واستخدام ذاكرة التخزين المؤقت فقط.

التحذير القياسي كما ذكرتم صحيح في أنه لا توجد قواعد عامة ؛ وهذا في معظم الأحيان يجب أن يعمل المرء مع خوادم مهيأة بشكل جيد وأن يستخدم مقاييس لتقييم أفضل طريقة لنقل البيانات.

إذا كنت تستخدم جهازًا منخفضًا نهاية مع محرك أقراص ثابت بطيء ، فمن المؤكد أنه سيكون من الأسرع استخدام اتصال شبكة جيجابت إلى خادم ذي صفيف تخزين سريع.

وبالمثل ، إذا كنت تعمل مع جهازي جهاز قريب من نفس الجهاز ، فإن وقت الاستجابة وزمن الشبكة سوف يجعل التخزين المحلي أسرع. من الحس السليم حقا.


2
2018-02-22 00:18





هذا يعتمد. إذا كان الإدخال / الإخراج الخاص بك هو الوصول العشوائي بشكل أساسي ، فمن المحتمل أن تكون سرعة النقل المسطحة غير جيدة مقارنةً بعرض النطاق الترددي للشبكة الذي قد يكون متاحًا. ومع ذلك ، يتم إنشاء معظم حركة مرور الشبكة في نهاية المطاف من خلال العمليات التي تنطوي على I / O. إذا كانت مجموعة العمل من أي عملية تقوم بتوليد حركة مرور الشبكة في ذاكرة التخزين المؤقت ، فلن يكون مقيّدًا بعرض نطاق القرص. إذا كان thrashes ذاكرة التخزين المؤقت ثم يصبح القرص عنق الزجاجة.

أعمل على أنظمة مستودع البيانات ، واستعلام DW الكنسي هو مسح جدول. إذا كان استعلامك يضرب أكثر من نسبة قليلة من الصفوف في جدول الحقائق (أو القسم) ، فسيكون مسح الجدول أو القسم باستخدام الإدخال / الإخراج المتسلسل أكثر كفاءة من خطة استعلام الوصول العشوائي باستخدام عمليات البحث والفهرسة.

التخزين الشبكي (أي SANs) لا يميل إلى الأداء الجيد على أحمال العمل المتدفقة إلا إذا تم ضبطه بشكل مناسب. إذا تم استخدام شبكة التخزين SAN في بيئة توحيد الأغراض العامة ، فمن شبه المؤكد أنه سيتم ضبطها بشكل شبه مثالي من أجل تحميل تدفق شائك مثل مستودع البيانات. لقد رأيت ورقة بيضاء للمورد تشير إلى أنك تحتاج إلى 3 أضعاف عدد الأقراص للحصول على نفس معدل نقل البيانات على شبكة منطقة تخزين (SAN) لا يتم ضبطه من أجل دفق الإدخال / الإخراج بالنسبة لواحد.

تجربتي تتوافق مع ذلك. في الحقيقة ، لم أقم أبداً بنشر مستودع بيانات في بيئة توطيدية حيث لم أتمكن من تشغيل نفس عملية ETL بشكل أسرع على جهاز الكمبيوتر المكتبي.  لقد حصلت أيضًا على مندوبي مبيعات من بائع رئيسي من أجهزة SAN يقولون من السجل أن الكثير من عملائهم يستخدمون التخزين المرفق المباشر لنظام DW لأن شبكات SAN ليست بالسرعة الكافية.

التخزين الشبكي هو على الأقل من حيث الحجم أكثر تكلفة في IOPS من التخزين المرفق المباشر لأحمال الوصول العشوائي وأقرب إلى اثنين من الطلبات من حيث التكلفة أكثر من حيث التدفق.


2
2018-02-27 21:11





إن التجربة التي أمارسها مع ذلك هي أنه عندما تكون على اتصال 1 جيجابت وتحاول تنزيل ملف ، فإن القرص الصلب عادة ما يكون هو عنق الزجاجة. شيء عليك أن تضعه في اعتبارك هو أنه يجب عليك إعداد اتصال أولاً ، والذي يستغرق وقتًا أيضًا. لذلك قد يكون إرسال أجزاء كبيرة من شبكة البيانات أسرع من القرص.


1
2018-02-21 23:49



ما لم يكن القرص هو أيضا عنق الزجاجة على الجانب الآخر من اتصال الشبكة ...
Argote: صواب ، ولكن إذا تمت كتابة برنامج الخادم بشكل صحيح ، فسيتم تخزينه في الذاكرة قبل الكتابة على القرص. - amphetamachine


نعم ، بشكل عام ، أصبحت الشبكات الآن أسرع من محركات الأقراص الثابتة ، ولكن هذا قد يتغير بمرور الوقت.

أعتقد ، لذلك أنا

عند تشغيل التطبيق ، فهذا يعني أن الجهاز المضيف يعمل ، بينما يحتاج العمل عبر الشبكة إلى بروتوكول شائع ، والتحقق من توفر النظراء وأمن القناة. وإذا كان الأقران يستخدمون منصات مختلفة ، فمن الصعب تحقيق ما يمكنك القيام به على جهاز واحد.

أنا أفضل أن ننظر إلى هذا في شروط المقايضات بدلا من من هو الأقوى ...


1
2018-02-22 00:00



أشك ، لذلك قد أكون. - John Gardeniers