Wednesday 17 January 2018

تدفق الاتصالات الكمون المنخفض في أنظمة التداول عبر الإنترنت


بنك كوربوراتيون أسعار صرف العملات الأجنبية.
تداول الخيارات الثنائية.
تدفق الاتصالات الكمون المنخفض في أنظمة التداول عبر الإنترنت.
تعرض هذه الورقة وتقيم أداء نموذج أولي لتداول تغذية بيانات أوبرا على الخط. ويوضح عملنا أنه من خلال استخدام الكمون الأفضل في فئتها، والابتكارات الخوارزمية والتصميم الدقيق، من الممكن الحصول على أداء حلول الأجهزة المصممة خصيصا. لدينا نظام النموذج يدمج أحدث معالجات إنتل نيهالم وتقنيات ميريكوم 10 جيجابت إيثرنت مع تصميم خوارزمية مبتكرة على أساس أداة تجميع دوتستار. يمكن للنظام الناتج أن يوفر الكمون المنخفض وعرض النطاق الترددي العالي ومرونة الكمون من مكونات السلع الأساسية في إطار واحد، مع الكمون من النهاية إلى النهاية من أقل من أربعة ميكروثانية ومعدل معالجة الأعلاف أوبرا من ما يقرب من مليون رسائل في الثانية الواحدة في كل الأساسية، مع حمولة حزمة الأنظمة من البايتات المنخفضة. عبر الإنترنت، والاتصالات الاتصالات عبر الكمون المنخفض على الانترنت أنظمة التداول هاري سوبرامونيفابريزيو الكمون فيرات أغاروالدافيد باسيتو الندوة الدولية إيي على الموازي .... عرض من 22 مراجع. تطوير حلول التمويل عالية الحجم، الكمون المنخفض مع عب ويبسفهير مق رسائل الكمون المنخفض. تطوير عالية الحجم، التمويل المنخفض الكمون .... فبغا تسارع منخفضة الكمون معالجة بيانات السوق معالجة غاريث W. موريسدافيد B. توماسواين لوك هوت الترابط ميريغ نيكس والبرمجيات. كسر قابلية التدرج والحواجز الأداء في مجموعة التعبير العادية مطابقة دافيد باسيتوفابريزيو منخفضة النمذجة المالية على محرك النطاق العريض الخلية فيرات أغاروالرنغ-كو ليودافيد A. بدر إيي إنترناشونال سيمبوسيوم أون موازال أند .... أنظمة السوق الوطنية - Common إب شبكة التوزيع المتعدد - Ripipient واجهة المواصفات. أنظمة السوق الوطنية - Common إب المتعدد .... فاست فور سيستمز - v2. فاست ل أوبرا - v1. عرض من 6 الاستشهادات المستخرجة. A بيبليند بنية معالجة بيانات السوق للتغلب على التبعية البيانات المالية تشيو تانغسترامينغ جيانغماجينغ سوكيونغ داي إيي 35 الأداء الدولي .... ديواسوريندرادياميكا إلكادوا المؤتمر الدولي العاشر إيي حول .... واجهة الشبكة الجري لانخفاض وقت الاستجابة طلب الاستجابة بروتوكولات ماريو فلاجليك أونلين روزنبلوم المؤتمر الفني السنوي أوسينيكس مكتبة منخفضة الكمون في فبغا الأجهزة لتجارة النظم هفت جون W. لوكوودادويت غوبتينيشيت مهتاميشيلا بلوتوم إنجليشكيس A. فيسرس الترابط الساخنة دسل محرك يتدفقون لتداول عالية التردد تسارع هاينر ليتزكريستيان للتجارة بنيامين جيب و سف سك عالية التردد تسريع التجارة باستخدام فبغاس كريستيان ليبيربنيامين الاتصالات هاينر ليتز 21 المؤتمر الدولي الاتصالات الميدانية .... تجارة ألين للذكاء الاصطناعي بفخر بنيت بواسطة AI2 على الانترنت مساعدة من المتعاونين لدينا باستخدام هذه المصادر.
4 أفكار على & لدكو؛ الجري الاتصالات الكمون المنخفض في أنظمة التداول عبر الإنترنت & رديقو؛
العديد من المجتمعات الصغيرة تتخلى تدريجيا عن لغاتها الأصلية لصالح اللغات المهيمنة مثل الإنجليزية أو الإسبانية أو الماندرين.
ما يجب على المرضى القيام به لإطالة العمر المتوقع مع المرحلة 5 الفشل الكلوي.
يتم استخدام R فيش للبيانات التاريخية التي قد تكون عادة غير لائق للعرض من قبل لوحات الاختيار أو مديري الوظيفي.
ثم يقوم الطلاب بكتابة ما يعتقدون أن الكلمات تعني على أساس استخدام كلمات السر.

التطور والممارسة: منخفض الكمون التطبيقات الموزعة في المالية.
وصناعة التمويل لديها مطالب فريدة من نوعها لنظم توزيع الكمون المنخفض.
أندرو بروك.
ولكل الأنظمة تقريبا بعض متطلبات الكمون، وتعرف هنا على أنها الوقت اللازم لكي يستجيب النظام للإدخال. (توجد حسابات غير متوقفة، ولكن لديها تطبيقات عملية قليلة). وتظهر متطلبات الكمون في مجالات المشاكل المتنوعة مثل ضوابط طيران الطائرات (copter. ardupilot)، والاتصالات الصوتية (queue. acm. org/detail. cfm؟id=1028895 )، والألعاب متعددة اللاعبين (queue. acm. org/detail. cfm؟id=971591)، والإعلان عبر الإنترنت (أكويتيادس / في الوقت الحقيقي تقديم العطاءات /)، والتجارب العلمية (home. web. cern. ch/about/accelerators/cern - neutrinos-غران ساسو-).
الأنظمة الموزعة & مداش؛ حيث يحدث الحساب على أجهزة كمبيوتر متعددة متصلة بالشبكة تتواصل وتنسق إجراءاتها عن طريق تمرير الرسائل & مداش؛ مع الأخذ في الاعتبار اعتبارات زمن الاستجابة الخاصة. وفي السنوات الأخيرة، أدت أتمتة التداول المالي إلى دفع متطلبات الأنظمة الموزعة بمتطلبات زمن الاستجابة الصعبة (التي تقاس في الغالب بالميكروثانية أو حتى النانوثانية؛ انظر الجدول 1) والتوزيع الجغرافي العالمي. يوفر التداول الآلي نافذة على التحديات الهندسية من متطلبات الكمون المتقلص من أي وقت مضى، والتي قد تكون مفيدة لمهندسي البرمجيات في مجالات أخرى.
تركز هذه المقالة على التطبيقات التي يكون فيها زمن الاستجابة (بدلا من الإنتاجية أو الكفاءة أو بعض المقاييس الأخرى) أحد اعتبارات التصميم الأساسية. فراسد بشكل مختلف، "أنظمة الكمون المنخفض" هي تلك التي الكمون هو المقياس الرئيسي للنجاح وعادة ما يكون أصعب القيد على تصميم حولها. تقدم المقالة أمثلة على أنظمة الكمون المنخفض التي توضح العوامل الخارجية التي تدفع الكمون ومن ثم مناقشة بعض النهج الهندسية العملية لنظم البناء التي تعمل في الكمون المنخفض.
لماذا الجميع في مثل هذا امرنا؟
لفهم تأثير الكمون على أحد التطبيقات، من المهم أولا أن نفهم العوامل الخارجية والعالمية التي تدفع هذا الشرط. وتوضح الأمثلة التالية من صناعة التمويل أثر بعض العوامل في العالم الحقيقي.
طلب إقتباس التداول.
وفي عام 2003، عملت في مصرف كبير نشر للتو نظاما تجاريا مؤسسيا جديدا للعملة الأجنبية. وكان الاقتباس ومحرك التجارة، وهو J2EE (جافا 2 منصة، الطبعة المؤسسة) تطبيق قيد التشغيل في خادم ويبلوجيك على رأس قاعدة بيانات أوراكل أوقات الاستجابة التي كانت موثوق بها تحت ثانيتين و [مدش]؛ سريع بما فيه الكفاية لضمان تجربة جيدة للمستخدم.
وفي نفس الوقت الذي بدأ فيه موقع البنك على شبكة الإنترنت، تم إطلاق منصة تداول عبر الإنترنت متعددة البنوك. على هذا النظام الأساسي الجديد، سيقوم العميل بتقديم طلب عرض أسعار (رفق) الذي سيتم إرساله إلى عدة بنوك مشاركة. كل بنك سوف يستجيب مع الاقتباس، وسوف العميل اختيار أي واحد لقبوله.
بدأ البنك الذي أعمل فيه مشروعا للاتصال بالمنصة الجديدة متعددة القنوات. وكان المنطق هو أنه بما أن زمن الاستجابة لمدة ثانيتين كان جيدا بما فيه الكفاية لمستخدم على موقع الويب، فإنه ينبغي أن يكون جيدا بما فيه الكفاية للمنصة الجديدة، وبالتالي فإن نفس الاقتباس ومحرك التجارة يمكن إعادة استخدامها. في غضون أسابيع من بدء العمل، ومع ذلك، كان البنك الفوز بنسبة صغيرة من المستغرب من رفقس. كان السبب الجذري هو الكمون. عندما ردت بنكين بنفس السعر (الذي حدث في كثير من الأحيان)، تم عرض أول رد في أعلى القائمة. انتظر معظم العملاء لرؤية عدد قليل من يقتبس مختلفة ومن ثم النقر على واحد في الجزء العلوي من القائمة. وكانت النتيجة أن أسرع بنك غالبا ما فاز عمل العميل و [مدش]؛ والبنك بلدي لم يكن أسرع.
حدث أبطأ جزء من عملية توليد الاقتباس في استعلامات قاعدة البيانات تحميل معلمات تسعير العملاء. إضافة ذاكرة التخزين المؤقت لمحرك الاقتباس وتحسين بعض "النقاط الساخنة" الأخرى في التعليمات البرمجية جلبت الكمون الاقتباس وصولا الى مجموعة من ما يقرب من 100 ميلي ثانية. مع محرك أسرع، وكان البنك قادرا على التقاط حصة كبيرة في السوق على منصة الاقتباس تنافسية و [مدش]؛ ولكن استمر السوق في التطور.
الجري ونقلت.
وبحلول عام 2006 أصبح نمط جديد من تداول العملات شعبية. فبدلا من قيام العميل بإرسال طلب محدد والبنك الذي يستجيب مع عرض أسعار، أراد العملاء من البنوك إرسال تدفق مستمر من عروض الأسعار. وكان هذا أسلوب البث المتدفق من تداول شعبية خاصة مع بعض صناديق التحوط التي كانت تقوم بتطوير استراتيجيات التداول الآلي و [مدش]؛ التطبيقات التي من شأنها أن تتلقى تيارات من يقتبس من بنوك متعددة وتقرر تلقائيا متى للتداول. في كثير من الحالات، كان البشر الآن خارج حلقة على جانبي التجارة.
ولكي نفهم هذه الديناميكية التنافسية الجديدة، من المهم أن نعرف كيف تحسب البنوك المعدلات التي تفرضها على عملائها من أجل معاملات الصرف الأجنبي. أكبر البنوك تداول العملات مع بعضها البعض في ما يسمى السوق بين البنوك. أسعار الصرف المحددة في تلك السوق هي الأكثر تنافسية وتشكل الأساس لمعدلات (بالإضافة إلى بعض الترميز) التي يتم تقديمها للعملاء. في كل مرة يتغير فيها سعر الفائدة بين البنوك، يقوم كل بنك بإعادة حساب أسعار أسعار العميل المقابلة وإعادة نشرها. وإذا قبل أحد العملاء عرض أسعار (أي طلبات التداول مقابل سعر صرف معلوم)، يمكن للبنك أن يقوم فورا بتجارة مقاصة مع سوق ما بين البنوك، مما يقلل من المخاطر ويقفل ربحا صغيرا. ومع ذلك، هناك مخاطر على البنوك التي بطيئة في تحديث أسعارها. مثال بسيط يمكن أن يوضح:
تخيل أن السوق الفورية بين البنوك ل ور / أوسد لديها معدلات 1.3558 / 1.3560. (يعني المصطلح الفوري أنه سيتم تبادل العملات المتفق عليها في غضون يومي عمل، ويمكن تداول العملات للتسليم في أي تاريخ متفق عليه بصورة متبادلة في المستقبل، ولكن السوق الفورية هي الأكثر نشاطا من حيث عدد الصفقات). يتم تسعير سعرين: واحد للشراء (سعر العطاء)، والآخر للبيع (سعر العرض أو الطلب). في هذه الحالة، يمكن للمشارك في السوق ما بين البنوك بيع اليورو واحد والحصول على 1.3558 دولار أمريكي في المقابل. على العكس من ذلك، يمكن للمرء أن يشتري يورو واحد بسعر 1.3560 دولار أمريكي.
ويقول أن اثنين من البنوك، A و B، هي المشاركين في السوق بين البنوك وتنشر اقتباسات لنفس العميل صندوق التحوط، C. كلا البنوك إضافة هامش من 0.0001 إلى أسعار الصرف التي اقتبس لعملائها و [مدش]؛ وذلك على حد سواء نشر يقتبس من 1.3557 / 1.3561 إلى العميل C. البنك، ومع ذلك، هو أسرع في تحديث أسعارها من البنك باء، مع حوالي 50 ميلي ثانية في حين أن البنك B يستغرق حوالي 250 ميلي ثانية. هناك ما يقرب من 50 ميلي ثانية من زمن استجابة الشبكة بين البنوك A و B والعميل المتبادل ج. كل من البنوك A و B يستغرق حوالي 10 ميلي ثانية للاعتراف أمر، في حين أن صندوق التحوط C يستغرق حوالي 10 ميلي ثانية لتقييم عروض أسعار جديدة وتقديم الطلبات. الجدول 2 يفصل تسلسل الأحداث.
وكان التأثير الصافي لهذا النمط الجديد من أسعار التداول هو أن أي بنك كان أبطأ بكثير من منافسيه من المرجح أن يعاني من خسائر عندما تغيرت أسعار السوق ولم يتم تحديث أسعارها بسرعة كافية. وفي الوقت نفسه، فإن تلك البنوك التي يمكن تحديث أسعارها أسرع حققت أرباحا كبيرة. لم يعد الكمون مجرد عامل في الكفاءة التشغيلية أو حصتها في السوق و [مدش]؛ وقد أثر ذلك بشكل مباشر على أرباح وخسائر مكتب التداول. ومع ازدياد حجم وسرعة التداول خلال منتصف العقد الأول من القرن العشرين، نمت هذه الأرباح والخسائر لتصبح كبيرة جدا. (كيف يمكن أن تذهب منخفضة؟ ويبين الجدول 3 بعض الأمثلة على فترات زمنية تقريبية من النظم والتطبيقات عبر تسعة أوامر من الحجم.)
لتحسين الكمون، قام البنك بتقسيم الاقتباس ومحرك التداول إلى تطبيقات مميزة وإعادة كتابة محرك الاقتباس في C ++. وأصبحت التأخيرات الصغيرة التي أضافتها كل قفزة في الشبكة من سوق ما بين المصارف إلى البنك وإلى زبائنه كبيرة الآن، ولذلك قام البنك بتحديث جدران الحماية وشراء دوائر اتصالات مخصصة. رفعت ترقيات الشبكة جنبا إلى جنب مع محرك الاقتباس أسرع جلبت نهاية إلى نهاية الكمون أقل من 10 مللي ثانية للعملاء الذين كانوا موجودين فعليا بالقرب من مرافقنا في نيويورك ولندن، أو هونغ كونغ. وارتفع أداء التداول والأرباح وفقا لذلك و [مدش]؛ ولكن، بطبيعة الحال، فإن السوق حافظت على التطور.
الأنظمة الهندسية لانخفاض وقت الاستجابة.
ويمكن معالجة متطلبات الكمون لتطبيق معين بطرق عديدة، وكل مشكلة تتطلب حلا مختلفا. ومع ذلك، هناك بعض الموضوعات المشتركة. أولا، من الضروري عادة قياس وقت الاستجابة قبل تحسينه. ثانيا، التحسين غالبا ما يتطلب النظر أدناه طبقات التجريد والتكيف مع واقع البنية التحتية المادية. وأخيرا، من الممكن أحيانا إعادة هيكلة الخوارزميات (أو حتى تعريف المشكلة نفسها) لتحقيق الكمون المنخفض.
أكاذيب، أكاذيب وإحصاءات لعنة.
الخطوة الأولى لحل معظم مشاكل التحسين (وليس فقط تلك التي تنطوي على البرمجيات) هو لقياس أداء النظام الحالي. تبدأ من أعلى مستوى وقياس الكمون من النهاية إلى النهاية. ثم قياس زمن الاستجابة لكل مكون أو مرحلة المعالجة. إذا كانت أي مرحلة تأخذ جزءا كبيرا بشكل غير عادي من الكمون، ثم كسره إلى أبعد من ذلك وقياس الكمون من المواد الفرعية لها. والهدف هو العثور على أجزاء من النظام التي تساهم أكثر من إجمالي الكمون والتركيز جهود التحسين هناك. غير أن ذلك ليس دائما واضحا في الممارسة العملية.
على سبيل المثال، تخيل أحد التطبيقات التي تستجيب لطلبات اقتباس العملاء التي يتم تلقيها عبر الشبكة. يرسل العميل 100 طلب اقتباس في تتابع سريع (يتم إرسال الطلب التالي بمجرد تلقي الرد المسبق) وتقارير إجمالي الوقت المنقضي البالغ 360 مللي ثانية و [مدش]؛ أو 3.6 مللي ثانية في المتوسط ​​لخدمة الطلب. يتم تقسيم الداخلي للتطبيقات وقياسها باستخدام نفس 100 اختبار مجموعة الاقتباس:
والثور؛ قراءة رسالة الإدخال من الشبكة وتحليل - 5 ميكروثانية.
والثور؛ البحث عن ملف تعريف العميل - 3.2 ميلي ثانية (3،200 ميكروثانية)
والثور؛ حساب اقتباس العميل - 15 ميكروثانية.
والثور؛ سجل الاقتباس - 20 ميكروثانية.
والثور؛ تسلسل الاقتباس إلى رسالة الرد - 5 ميكروثانية.
والثور؛ الكتابة إلى الشبكة - 5 ميكروثانية.
وكما هو مبين بوضوح في هذا المثال، يعني تقليل وقت الاستجابة بشكل كبير معالجة الوقت المستغرق للبحث عن الملف الشخصي للعميل. يظهر فحص سريع أن ملف تعريف العميل يتم تحميلها من قاعدة بيانات وتخزينها محليا. يظهر مزيد من الاختبارات أنه عندما يكون الملف الشخصي في ذاكرة التخزين المؤقت المحلي (جدول التجزئة بسيطة)، زمن الاستجابة عادة تحت ميكروثانية، ولكن عندما يتم تفويت ذاكرة التخزين المؤقت يستغرق عدة مئات من ميلي ثانية لتحميل الملف الشخصي. وكان متوسط ​​3.2 ميلي ثانية تقريبا تقريبا نتيجة استجابة واحدة بطيئة جدا (حوالي 320 ميلي ثانية) الناجمة عن ملكة جمال ذاكرة التخزين المؤقت. وبالمثل، تبين أن معدل استجابة المتوسط ​​الذي يبلغ 3.6 ميلي ثانية واحدة هو استجابة بطيئة جدا (350 ميلي ثانية) و 99 استجابة سريعة استغرقت حوالي 100 ميكروثانية لكل منها.
الوسائل والقيم المتطرفة.
معظم الأنظمة تظهر بعض التباين في الكمون من حدث واحد إلى التالي. وفي بعض الحالات، يدفع التباين (وخاصة القيم المتطرفة ذات الكمون الأعلى) التصميم، أكثر بكثير من متوسط ​​الحالة. من المهم أن نفهم أي قياس إحصائي للكمون مناسب للمشكلة المحددة. على سبيل المثال، إذا كنت تقوم ببناء نظام تداول يحقق أرباحا صغيرة عندما يكون الكمون أقل من عتبة معينة ولكنه يتكبد خسائر كبيرة عندما يتجاوز الكمون تلك العتبة، فيجب عليك قياس زمن الاستجابة (أو بدلا من ذلك، النسبة المئوية للطلبات التي تتجاوز العتبة) بدلا من المتوسط. من ناحية أخرى، إذا كانت قيمة النظام تتناسب عكسيا مع زمن الاستجابة، فإن قياس (وتحسين) زمن الاستجابة يكون أكثر منطقية حتى لو كان ذلك يعني أن هناك بعض القيم المتطرفة الكبيرة.
ماذا تقيس؟
قد يكون القراء أستيوت قد لاحظت أن الكمون تقاس داخل تطبيق خادم الاقتباس لا تضيف تماما حتى الكمون ذكرت من قبل تطبيق العميل. هذا هو الأرجح لأنها ليست في الواقع قياس نفس الشيء. النظر في بسيودوكود المبسطة التالية:
(في تطبيق العميل)
فور (إنت i = 0؛ i & لوت؛ 100؛ i ++)
ريكتمسيج ريكتمسيج = نيو ريكتمسيج (كوتيركيست)؛
لونت سنتيمي = جيتسيستيمتيمي ()؛
ريسبونزيمسيج ريسبونزميسيج = ريسيفيمسيج ()؛
طويل كوتلاتنسي = جيتسيستيمتيمي () - سنتيمي؛
(في تطبيق خادم الاقتباس)
ريكتمسيج ريكتمسيج = ريسيف ()؛
لونغ ريسيفدتيمي = جيتسيستيمتيمي ()؛
كوتيركست كوتيركيست = بارسيركست (ريكتمسيج)؛
لونغ بارسيتيمي = جيتسيستيمتيمي ()؛
طويل بارسيلاتنسي = بارسيتيمي - ريسيفدتيمي؛
كلينتبروفيل بروفيل = لوكوبلينتبروفيل (quoteRequest. client)؛
لونغ بروفيلتيم = جيتسيستيمتيمي ()؛
لونغ بروفيللاتنسي = بروفيلتيم - بارسيتيمي؛
كوت كوت = كومبوتكوت (بروفيل)؛
لونغ كومبوتيتيمي = جيتسيستيمتيمي ()؛
طويل كومبوتلاتنسي = كومبوتيتيمي - بروفيلتيم؛
لونغ لوغتيمي = جيتسيستيمتيمي ()؛
لونغ لوتلاتنسي = لوغتيمي - كومبوتيتيم؛
كوتمساج كوتمسيج = كوتمساج جديد (اقتباس)؛
لونغ سيرياليزيتيمي = جيتسيستيمتيمي ()؛
سيرياليزاتيونلاتنسي طويلة = سيرياليزيتيمي - لوغتيمي؛
لونت سنتيمي = جيتسيستيمتيمي ()؛
طويلة سيندلاتنسي = سنتيمي - سيرياليزيتيمي؛
لوغستاتس (بارسيلاتنسي، بروفيللاتنسي، كومبوتلاتنسي،
لوغلاتنسي، سيرياليزاتيونلاتنسي، سيندلاتنسي)؛
لاحظ أن الوقت المنقضي الذي يقاسه تطبيق العميل يتضمن الوقت اللازم لإرسال الطلب عبر الشبكة، وكذلك وقت إرسال الرد مرة أخرى. من ناحية أخرى، يقيس خادم الاقتباس الوقت المنقضي فقط من وصول الاقتباس إلى متى يتم إرساله (أو على نحو أدق، عندما ترجع طريقة الإرسال). ويمكن أن يكون سبب التناقض الذي يبلغ 350 ميكروثانية بين متوسط ​​زمن الاستجابة الذي يقاسه العميل والقياس المكافئ من جانب خادم الاقتباس من قبل الشبكة، ولكنه قد يكون أيضا نتيجة لتأخيرات داخل العميل أو الخادم. وعلاوة على ذلك، اعتمادا على لغة البرمجة ونظام التشغيل، والتحقق من ساعة النظام وتسجيل إحصاءات الكمون قد يعرض تأخيرات المواد.
هذا النهج هو تبسيط، ولكن عندما يقترن مع أدوات الترميز-التعليمات للعثور على التعليمات البرمجية الأكثر شيوعا تنفيذ والموارد الخلاف، وعادة ما تكون جيدة بما فيه الكفاية لتحديد الأهداف الأولى (وغالبا أسهل) لتحسين الكمون. من المهم الحفاظ على هذا التحديد في الاعتبار.
قياس الكمون الموزع نظم عبر التقاط حركة مرور الشبكة.
أنظمة الموزعة تشكل بعض التحديات الإضافية لقياس الكمون و [مدش]؛ فضلا عن بعض الفرص. في الحالات التي يتم فيها توزيع النظام عبر خوادم متعددة يمكن أن يكون من الصعب ربط الطوابع الزمنية للأحداث ذات الصلة. الشبكة نفسها يمكن أن تكون مساهما كبيرا في الكمون من النظام. ويمكن أن تكون الوسائط الوسيطة للرسائل والمداخن الشبكية لأنظمة التشغيل مصادر معقدة للكمون.
وفي الوقت نفسه، فإن تحلل النظام الشامل في عمليات منفصلة تعمل على خوادم مستقلة يمكن أن يسهل قياس بعض التفاعلات بدقة بين مكونات النظام عبر الشبكة. توفر العديد من أجهزة الشبكة (مثل المفاتيح والموجهات) آليات لصنع نسخ ذات طابع زمني للبيانات التي تجتاز الجهاز مع الحد الأدنى من التأثير على أداء الجهاز. معظم أنظمة التشغيل توفر قدرات مماثلة في البرمجيات، وإن كان مع خطر أعلى إلى حد ما لتأخير حركة المرور الفعلية. ويمكن أن تكون التقاطات حركة المرور الشبكية ذات الطابع الزمني (التي تسمى غالبا التقاطات الرزم) أداة مفيدة لقياس أكثر تحديدا عند تبادل رسالة بين جزأين من النظام. ويمكن الحصول على هذه القياسات دون تعديل التطبيق نفسه وعموما مع تأثير ضئيل جدا على أداء النظام ككل. (انظر wireshark. org و tcpdump. org.)
ومن التحديات التي تواجه قياس الأداء على نطاقات زمنية قصيرة عبر الأنظمة الموزعة التزامن على مدار الساعة. بشكل عام، لقياس الوقت المنقضي من عندما يقوم تطبيق على الخادم A بإرسال رسالة إلى متى تصل الرسالة إلى تطبيق ثان على الخادم B، من الضروري التحقق من الوقت على الساعة A عند إرسال الرسالة وعلى مدار الساعة B عندما تصل الرسالة، ثم طرح هذين الطابعين الزمنيين لتحديد وقت الاستجابة. وإذا لم تكن الميقاتتان A و B متزامنة، فإن زمن الكمون المحسوب سيكون في الواقع الكمون الحقيقي بالإضافة إلى انحراف الساعة بين A و B.
عندما تكون هذه مشكلة في العالم الحقيقي؟ معدلات الانجراف في العالم الحقيقي لمذبذبات الكوارتز التي يتم استخدامها في معظم اللوحات الأم الخادم السلع هي في حدود 10 ^ -5، مما يعني أنه من المتوقع أن مذبذب إلى الانجراف بمقدار 10 ميكروثانية في الثانية الواحدة. إذا لم يتم تصحيحها، فإنها قد تكسب أو تفقد ما يصل إلى ثانية على مدار يوم واحد. وبالنسبة للأنظمة التي تعمل على نطاقات زمنية من الميلي ثانية أو أقل، فإن الانحراف على مدار الساعة قد يجعل الكمون المقاس بلا معنى. تتوفر مؤشرات التذبذب ذات معدلات الانجراف المنخفضة بشكل كبير، ولكن بدون شكل من أشكال المزامنة، فإنها ستنهار في نهاية المطاف. هناك حاجة إلى آلية معينة لتحقيق الساعة المحلية لكل خادم في المحاذاة مع بعض الوقت المرجعي المشترك.
يجب على مطوري الأنظمة الموزعة فهم نتب (بروتوكول وقت الشبكة) كحد أدنى ويتم تشجيعهم على التعرف على بتب (بروتوكول الوقت الدقة) واستخدام الإشارات الخارجية مثل نظام تحديد المواقع للحصول على تزامن الوقت عالية الدقة في الممارسة العملية. أولئك الذين يحتاجون إلى دقة الوقت على نطاق ميكروثانية الفرعي سوف تريد أن تصبح مألوفة مع تطبيقات الأجهزة من بتب (وخاصة في واجهة الشبكة)، فضلا عن أدوات لاستخراج المعلومات الوقت من الساعة المحلية كل الأساسية. (انظر tools. ietf. org/html/rfc1305 و tools. ietf. org/html/rfc5905 و nist. gov/el/isd/ieee/ieee1588.cfm و queue. acm. org/detail. cfm؟id=2354406 .)
التجريد مقابل الواقع.
وقد بنيت هندسة البرمجيات الحديثة على التجريدات التي تسمح للمبرمجين لإدارة تعقيد النظم أكبر من أي وقت مضى. الاستنتاجات تفعل ذلك عن طريق تبسيط أو تعميم بعض جوانب النظام الأساسي. هذا لا يأتي مجانا، على الرغم من & مداش؛ التبسيط هو عملية خاطئة بطبيعتها وبعض التفاصيل المفقودة قد تكون مهمة. وعلاوة على ذلك، غالبا ما يتم تعريف التجريدات من حيث الوظيفة بدلا من الأداء.
في مكان ما عميقا تحت التطبيق هي التيارات الكهربائية التي تتدفق من خلال أشباه الموصلات والبقول من الضوء السفر أسفل الألياف. نادرا ما يحتاج المبرمجون إلى التفكير في أنظمتهم بهذه المصطلحات، ولكن إذا كانت رؤيتهم المفاهيمية تنجرف بعيدا جدا عن الواقع، فمن المرجح أن يواجهوا مفاجآت غير سارة.
وتوضح أربعة أمثلة هذه النقطة:
والثور؛ يوفر تكب التجريد مفيدة على أودب (بروتوكول مخطط بيانات المستخدم) من حيث تسليم تسلسل من وحدات البايت. يضمن تكب تسليم البايتات بالترتيب الذي تم إرساله حتى إذا فقدت بعض وحدات بيانات أودب الأساسية. غير أن زمن انتقال كل بايت (وهو الوقت الذي يتم فيه كتابته إلى مقبس تكب في طلب الإرسال حتى يتم قراءته من مقبس استقبال التطبيق المقابل) غير مضمون. في بعض الحالات (على وجه التحديد عند فقدان مخطط البيانات المتداخل) قد تتأخر البيانات الواردة في مخطط بيانات أودب بشكل كبير من التسليم إلى التطبيق، في حين يتم استرداد البيانات المفقودة قبل ذلك.
والثور؛ يوفر الاستضافة السحابية الخوادم الافتراضية التي يمكن إنشاؤها على الطلب دون رقابة دقيقة على موقع الأجهزة. يمكن لتطبيق أو مسؤول إنشاء خادم ظاهري جديد "على السحابة" في أقل من دقيقة و [مدش]؛ إنجازا مستحيلا عند تجميع وتثبيت الأجهزة المادية في مركز البيانات. على عكس الخادم الفعلي، ومع ذلك، فإن موقع خادم السحابة أو موقعها في طوبولوجيا الشبكة قد لا تكون معروفة على وجه التحديد. إذا كان التطبيق الموزع يعتمد على التبادل السريع للرسائل بين الخوادم، فإن القرب الفعلي لهذه الخوادم قد يكون له تأثير كبير على أداء التطبيق بشكل عام.
والثور؛ وتسمح المواضيع بتفكيك المشكلة في تسلسل منفصل من التعليمات التي يمكن السماح بتشغيلها بشكل متزامن، مع مراعاة بعض قيود الطلب، والتي يمكن أن تعمل على الموارد المشتركة (مثل الذاكرة). وهذا يسمح للمطورين للاستفادة من المعالجات متعددة النوى دون الحاجة للتعامل مباشرة مع قضايا جدولة والتعيين الأساسية. في بعض الحالات، ومع ذلك، يمكن أن النفقات العامة لمفاتيح السياق وتمرير البيانات بين النوى تفوق المزايا المكتسبة من قبل التزامن.
والثور؛ تسمح بروتوكولات التخزين الهرمي وذاكرة التخزين المؤقت للمبرمجين بكتابة التطبيقات التي تستخدم كميات كبيرة من الذاكرة الظاهرية (بناء على ترتيب تيرابايت في خوادم السلع الحديثة)، بينما تواجه حالات تأخر تقاس في نانوثانية عندما يمكن تلبية الطلبات من قبل أقرب مخابئ. التجريد يخفي حقيقة أن أسرع الذاكرة محدودة جدا في القدرة (على سبيل المثال، تسجيل الملفات بترتيب بضعة كيلو بايت)، في حين أن الذاكرة التي تم تبديلها إلى القرص قد تتأخر في عشرات مليثانية.
كل من هذه التجريدات مفيد للغاية ولكن يمكن أن يكون لها عواقب غير متوقعة على تطبيقات الكمون المنخفض. هناك بعض الخطوات العملية التي يجب اتخاذها لتحديد وتخفيف مشكلات الكمون الناتجة عن هذه التجريدات.
التراسل وبروتوكولات الشبكة.
ويعني الانتشار الواسع الانتشار للشبكات القائمة على بروتوكول الإنترنت أنه بغض النظر عن منتج الرسائل قيد الاستخدام، تحت أغلفة البيانات التي يتم إرسالها عبر الشبكة كمجموعة من الرزم المنفصلة. خصائص أداء الشبكة واحتياجات التطبيق يمكن أن تختلف بشكل كبير و [مدش]؛ لذلك حجم واحد يكاد يكون من المؤكد لا يصلح كل عندما يتعلق الأمر الرسائل الوسيطة للنظم الموزعة حساسة الكمون.
ليس هناك بديل للحصول تحت غطاء محرك السيارة هنا. على سبيل المثال، إذا كان التطبيق يعمل على شبكة خاصة (يمكنك التحكم في الأجهزة)، والاتصالات تتبع نموذج الناشر / المشترك، ويمكن للتطبيق تحمل معدل معين من فقدان البيانات، ثم الإرسال المتعدد قد تقدم مكاسب أداء كبيرة على أي الوسيطة القائمة على على برنامج التعاون الفني. إذا تم توزيع تطبيق عبر مسافات طويلة جدا وترتيب البيانات ليست مهمة، ثم بروتوكول أودب المستندة إلى قد تقدم مزايا من حيث عدم المماطلة لإعادة إرسال حزمة غاب. إذا تم استخدام الرسائل المستندة إلى تكب، فإنه من الجدير بالذكر أن العديد من المعلمات (وخاصة أحجام المخزن المؤقت، بداية بطيئة، وخوارزمية ناجل) هي شكلي و "خارج من مربع" إعدادات وعادة ما تكون الأمثل ل الإنتاجية بدلا من الكمون (queue. acm. org/detail. cfm؟id=2539132).
والقيود المادية التي لا يمكن أن تنتشرها المعلومات بشكل أسرع من سرعة الضوء هي اعتبار حقيقي جدا عند التعامل مع جداول زمنية قصيرة و / أو مسافات طويلة. ويقوم أكبر سوقين للأوراق المالية، هما ناسداك و نيس، بتشغيل محركاتهما المطابقة في مراكز البيانات في كارتيريت وماهوه، نيو جيرسي، على التوالي. ويأخذ شعاع الضوء 185 ميكروثانية لمسافة 55.4 كم بين هذين الموقعين. ضوء في الألياف الزجاجية مع معامل الانكسار من 1.6 وبعد مسار أطول قليلا (حوالي 65 كم) يستغرق ما يقرب من 350 ميكروثانية لجعل نفس الرحلة في اتجاه واحد. وبالنظر إلى أن الحسابات التي تنطوي عليها قرارات التداول يمكن أن تتخذ الآن على نطاقات زمنية تبلغ 10 ميكروثانية أو أقل، لا يمكن تجاهل كمون انتشار الإشارة.
تحليل مشكلة في عدد من المواضيع التي يمكن تنفيذها في وقت واحد يمكن أن تزيد كثيرا من الأداء، وخاصة في أنظمة متعددة النوى، ولكن في بعض الحالات قد يكون في الواقع أبطأ من حل ترابط واحد.
وعلى وجه التحديد، تتكبد الشفرة متعددة الوصلات النفقات العامة بالطرق الثلاث التالية:
والثور؛ عندما تعمل مؤشرات الترابط متعددة على نفس البيانات، مطلوب الضوابط للتأكد من أن البيانات لا تزال متسقة. وقد يشمل ذلك اقتناء الأقفال أو تنفيذ حواجز القراءة أو الكتابة. في الأنظمة متعددة النواقص، تتطلب هذه الضوابط التزامن تعليق تنفيذ مؤشر الترابط أثناء تمرير الرسائل بين النوى. إذا كان القفل محتفظ به بالفعل بواسطة مؤشر ترابط واحد، فستحتاج مؤشرات الترابط الأخرى التي تبحث عن هذا القفل إلى الانتظار حتى تنتهي العملية الأولى. إذا كانت العديد من سلاسل الترابط غالبا ما تصل إلى نفس البيانات، قد يكون هناك خلاف كبير للأقفال.
والثور؛ وبالمثل، عندما تعمل مؤشرات الترابط متعددة على نفس البيانات، يجب أن يتم تمرير البيانات نفسها بين النوى. إذا كان العديد من سلاسل الترابط الوصول إلى البيانات نفسها ولكن كل يؤدي سوى عدد قليل من الحسابات على ذلك، قد الوقت اللازم لنقل البيانات بين النوى تتجاوز الوقت الذي يقضيه تشغيل على ذلك.
والثور؛ وأخيرا، إذا كان هناك مواضيع أكثر من النوى، يجب أن يقوم نظام التشغيل بشكل دوري بإجراء مفتاح سياق يتم فيه إيقاف مؤشر الترابط الذي يتم تشغيله على نواة معينة، يتم حفظ حالته، ويسمح مؤشر ترابط آخر للتشغيل. تكلفة مفتاح السياق يمكن أن تكون كبيرة. إذا كان عدد المواضيع يتجاوز بكثير عدد النوى، يمكن أن يكون تبديل السياق مصدرا هاما للتأخير.
بشكل عام، يجب أن يستخدم تصميم التطبيق سلاسل عمليات بطريقة تمثل التزامن المتأصل للمشكلة الأساسية. إذا كانت المشكلة تحتوي على حساب كبير يمكن القيام به في عزلة، ثم يتم استدعاء عدد أكبر من مؤشرات الترابط. من ناحية أخرى، إذا كان هناك درجة عالية من الترابط بين الحسابات أو (أسوأ حالة) إذا كانت المشكلة متسلسلة بطبيعتها، ثم قد يكون حل ترابط واحد أكثر منطقية. في كلتا الحالتين، يجب استخدام أدوات التنميط لتحديد التنافس المفرط على القفل أو تبديل السياق. هياكل البيانات الخالية من القفل (متاحة الآن لعدة لغات برمجة) هي بديل آخر للنظر (queue. acm. org/detail. cfm؟id=2492433).
ومن الجدير بالذكر أيضا أن الترتيب المادي من النوى والذاكرة، وأنا / O قد لا تكون موحدة. على سبيل المثال، على معالجات إنتل الحديثة يمكن أن تتفاعل بعض النوى مع I / O الخارجية (على سبيل المثال، واجهات الشبكة) مع الكمون أقل بكثير من غيرها، وتبادل البيانات بين النوى معينة أسرع من غيرها. ونتيجة لذلك، قد يكون من المفيد بشكل واضح أن تعلق مواضيع محددة إلى نوى محددة (queue. acm. org/detail. cfm؟id=2513149).
التخزين الهرمي وذاكرة التخزين المؤقت تفتقد.
جميع أنظمة الحوسبة الحديثة استخدام تخزين البيانات الهرمي و [مدش]؛ كمية صغيرة من الذاكرة السريعة جنبا إلى جنب مع مستويات متعددة من أكبر (ولكن أبطأ) الذاكرة. يتم تخزين البيانات المدخلة مؤخرا بحيث يكون الوصول اللاحق أسرع. وبما أن معظم التطبيقات تظهر ميلا إلى الوصول إلى نفس الذاكرة عدة مرات في فترة قصيرة، وهذا يمكن أن تزيد كثيرا من الأداء. بيد أنه من أجل الحصول على أقصى فائدة، ينبغي إدراج العوامل الثلاثة التالية في تصميم التطبيق:
والثور؛ استخدام ذاكرة أقل عموما (أو على الأقل في أجزاء التطبيق التي حساسة للكمون) يزيد من احتمال أن البيانات المطلوبة ستكون متاحة في واحدة من مخابئ. على وجه الخصوص، لتطبيقات حساسة الكمون خاصة، وتصميم التطبيق بحيث يمكن الوصول إليها في كثير من الأحيان الوصول إلى البيانات داخل مخابئ وحدة المعالجة المركزية يمكن أن تحسن بشكل ملحوظ الأداء. تختلف المواصفات ولكن معالجات إنتل هاسويل، على سبيل المثال، توفر 32 كيلوبايت لكل نواة للذاكرة التخزين المؤقت للبيانات L1 وتصل إلى 40 ميغابايت من ذاكرة التخزين المؤقت L3 المشتركة لوحدة المعالجة المركزية بأكملها.
والثور؛ وينبغي تجنب التخصيص المتكرر وإطلاق الذاكرة إذا كان من الممكن إعادة الاستخدام. كائن أو بنية البيانات التي يتم تخصيصها مرة واحدة وإعادة استخدامها لديه فرصة أكبر بكثير لتكون موجودة في ذاكرة التخزين المؤقت من واحد الذي يتم تخصيصه مرارا وتكرارا. هذا صحيح بشكل خاص عند تطوير في بيئات حيث يتم إدارة الذاكرة تلقائيا، كما النفقات العامة الناجمة عن جمع القمامة من الذاكرة التي يتم إصدارها يمكن أن تكون كبيرة.
والثور؛ تخطيط هياكل البيانات في الذاكرة يمكن أن يكون لها تأثير كبير على الأداء بسبب بنية مخابئ في المعالجات الحديثة. في حين تختلف التفاصيل حسب المنصة وهي خارج نطاق هذه المقالة، فمن الأفضل عموما أن يفضل المصفوفات هياكل البيانات على القوائم والأشجار المرتبطة، وأن يفضل الخوارزميات التي الوصول إلى الذاكرة بالتتابع لأن هذه تسمح بريفيتشر الأجهزة (الذي يحاول load data preemptively from main memory into cache before it is requested by the application) to operate most efficiently. Note also that data that will be operated on concurrently by different cores should be structured so that it is unlikely to fall in the same cache line (the latest Intel CPUs use 64-byte cache lines) to avoid cache-coherency contention.
A note on premature optimization.
The optimizations just presented should be considered part of a broader design process that takes into account other important objectives including functional correctness, maintainability, etc. Keep in mind Knuth's quote about premature optimization being the root of all evil; even in the most performance-sensitive environments, it is rare that a programmer should be concerned with determining the correct number of threads or the optimal data structure until empirical measurements indicate that a specific part of the application is a hot spot. The focus instead should be on ensuring that performance requirements are understood early in the design process and that the system architecture is sufficiently decomposable to allow detailed measurement of latency when and as optimization becomes necessary. Moreover (and as discussed in the next section), the most useful optimizations may not be in the application code at all.
Changes in Design.
The optimizations presented so far have been limited to improving the performance of a system for a given set of functional requirements. There may also be opportunities to change the broader design of the system or even to change the functional requirements of the system in a way that still meets the overall objectives but significantly improves performance. Latency optimization is no exception. In particular, there are often opportunities to trade reduced efficiency for improved latency.
Three real-world examples of design tradeoffs between efficiency and latency are presented here, followed by an example where the requirements themselves present the best opportunity for redesign.
In certain cases trading efficiency for latency may be possible, especially in systems that operate well below their peak capacity. In particular, it may be advantageous to compute possible outputs in advance, especially when the system is idle most of the time but must react quickly when an input arrives.
A real-world example can be found in the systems used by some firms to trade stocks based on news such as earnings announcements. Imagine that the market expects Apple to earn between $9.45 and $12.51 per share. The goal of the trading system, upon receiving Apple's actual earnings, would be to sell some number of shares Apple stock if the earnings were below $9.45, buy some number of shares if the earnings were above $12.51, and do nothing if the earnings fall within the expected range. The act of buying or selling stocks begins with submitting an order to the exchange. The order consists of (among other things) an indicator of whether the client wishes to buy or sell, the identifier of the stock to buy or sell, the number of shares desired, and the price at which the client wishes to buy or sell. Throughout the afternoon leading up to Apple's announcement, the client would receive a steady stream of market-data messages that indicate the current price at which Apple's stock is trading.
A conventional implementation of this trading system would cache the market-price data and, upon receipt of the earnings data, decide whether to buy or sell (or neither), construct an order, and serialize that order to an array of bytes to be placed into the payload of a message and sent to the exchange.
An alternative implementation performs most of the same steps but does so on every market-data update rather than only upon receipt of the earnings data. Specifically, when each market-data update message is received, the application constructs two new orders (one to buy, one to sell) at the current prices and serializes each order into a message. The messages are cached but not sent. When the next market-data update arrives, the old order messages are discarded and new ones are created. When the earnings data arrives, the application simply decides which (if either) of the order messages to send.
The first implementation is clearly more efficient (it has a lot less wasted computation), but at the moment when latency matters most (i. e., when the earnings data has been received), the second algorithm is able to send out the appropriate order message sooner. Note that this example presents application-level precomputation; there is an analogous process of branch prediction that takes place in pipelined processors which can also be optimized (via guided profiling) but is outside the scope of this article.
Keeping the system warm.
In some low-latency systems long delays may occur between inputs. During these idle periods, the system may grow "cold." Critical instructions and data may be evicted from caches (costing hundreds of nanoseconds to reload), threads that would process the latency-sensitive input are context-switched out (costing tens of microseconds to resume), CPUs may switch into power-saving states (costing a few milliseconds to exit), etc. Each of these steps makes sense from an efficiency standpoint (why run a CPU at full power when nothing is happening?), but all of them impose latency penalties when the input data arrives.
In cases where the system may go for hours or days between input events there is a potential operational issue as well: configuration or environmental changes may have "broken" the system in some important way that won't be discovered until the event occurs—when it's too late to fix.
A common solution to both problems is to generate a continuous stream of dummy input data to keep the system "warm." The dummy data needs to be as realistic as possible to ensure that it keeps the right data in the caches and that breaking changes to the environment are detected. The dummy data needs to be reliably distinguishable from legitimate data, though, to prevent downstream systems or clients from being confused.
It is common in many systems to process the same data through multiple independent instances of the system in parallel, primarily for the improved resiliency that is conferred. If some component fails, the user will still receive the result needed. Low-latency systems gain the same resiliency benefits of parallel, redundant processing but can also use this approach to reduce certain kinds of variable latency.
All real-world computational processes of nontrivial complexity have some variance in latency even when the input data is the same. These variations can be caused by minute differences in thread scheduling, explicitly randomized behaviors such as Ethernet's exponential back-off algorithm, or other unpredictable factors. Some of these variations can be quite large: page faults, garbage collections, network congestion, etc., can all cause occasional delays that are several orders of magnitude larger than the typical processing latency for the same input.
Running multiple, independent instances of the system, combined with a protocol that allows the end recipient to accept the first result produced and discard subsequent redundant copies, both provides the benefit of less-frequent outages and avoids some of the larger delays.
Stream processing and short circuits.
Consider a news analytics system whose requirements are understood to be "build an application that can extract corporate earnings data from a press release document as quickly as possible." Separately, it was specified that the press releases would be pushed to the system via FTP. The system was thus designed as two applications: one that received the document via FTP, and a second that parsed the document and extracted the earnings data. In the first version of this system, an open-source FTP server was used as the first application, and the second application (the parser) assumed that it would receive a fully formed document as input, so it did not start parsing the document until it had fully arrived.
Measuring the performance of the system showed that while parsing was typically completed in just a few milliseconds, receiving the document via FTP could take tens of milliseconds from the arrival of the first packet to the arrival of the last packet. Moreover, the earnings data was often present in the first paragraph of the document.
In a multistep process it may be possible for subsequent stages to start processing before prior stages have finished, sometimes referred to as stream-oriented or pipelined processing . This can be especially useful if the output can be computed from a partial input. Taking this into account, the developers reconceived their overall objective as "build a system that can deliver earnings data to the client as quickly as possible." This broader objective, combined with the understanding that the press release would arrive via FTP and that it was possible to extract the earnings data from the first part of the document (i. e., before the rest of the document had arrived), led to a redesign of the system.
The FTP server was rewritten to forward portions of the document to the parser as they arrived rather than wait for the entire document. Likewise, the parser was rewritten to operate on a stream of incoming data rather than on a single document. The result was that in many cases the earnings data could be extracted within just a few milliseconds of the start of the arrival of the document. This reduced overall latency (as observed by the client) by several tens of milliseconds without the internal implementation of the parsing algorithm being any faster.
استنتاج.
While latency requirements are common to a wide array of software applications, the financial trading industry and the segment of the news media that supplies it with data have an especially competitive ecosystem that produces challenging demands for low-latency distributed systems.
As with most engineering problems, building effective low-latency distributed systems starts with having a clear understanding of the problem. The next step is measuring actual performance and then, where necessary, making improvements. In this domain, improvements often require some combination of digging below the surface of common software abstractions and trading some degree of efficiency for improved latency.
LOVE IT, HATE IT? LET US KNOW.
Andrew Brook is the CTO of Selerity, a provider of realtime news, data, and content analytics. Previously he led development of electronic currency trading systems at two large investment banks and launched a pre-dot-com startup to deliver AI-powered scheduling software to agile manufacturers. His expertise lies in applying distributed, realtime systems technology and data science to real-world business problems. He finds Wireshark to be more interesting than PowerPoint.
&نسخ؛ 2015 ACM 1542-7730/14/0300 $10.00.
An apostate's opinion.
Ivan Beschastnikh, Patty Wang, Yuriy Brun, Michael D, Ernst - Debugging Distributed Systems.
Challenges and options for validation and debugging.
The accepted wisdom does not always hold true.
Lunchtime doubly so. - Ford Prefect to Arthur Dent in "The Hitchhiker's Guide to the Galaxy", by Douglas Adams.
Elios | Sat, 07 Nov 2015 09:29:52 UTC.
شكرا على وظيفة لطيفة. That's a great sum-up of problems in the design and implementation of distributed low latency systems.
I'm working on a distributed low-latency market data distribution system. In this system, one of the biggest challenge is how to measure its latency which is supposed to be several micro seconds.
In our previous system, the latency is measured in an end-to-end manner. We take timestamp in milli seconds on both publisher and subscriber side and record the difference between them. This works but we are aware that the result is not accurate because even with servers having clock synchronized with NTP, users complain sometimes that negative latency is observed.
Given we are reducing the latency to micro seconds, the end-to-end measurement seems to be too limited (it should be better with PTP but we can't force our users to support PTP in their infrastructure) and thus we are trying to get a round-trip latency. However, I can see immediately several cons with this method :
- extra complexity to configure and implement the system because we need to ensure two-way communication. - we can't deduce the end-to-end latency from the round trip one because the loads on both direction are not the same. (we want to send only some probes and get them back)
Do you have some experiences on the round-trip latency measurement and if so could you please share some best practices ?

Streaming low-latency communication in online trading systems


The Infona portal uses cookies, i. e. strings of text saved by a browser on the user's device. The portal can access those files and use them to remember the user's data, such as their chosen settings (screen view, interface language, etc.), or their login data. By using the Infona portal the user accepts automatic saving and using this information for portal operation purposes. More information on the subject can be found in the Privacy Policy and Terms of Service. By closing this window the user confirms that they have read the information on cookie usage, and they accept the privacy policy and the way cookies are used by the portal. You can change the cookie settings in your browser.
INFONA - science communication portal.
نبذة مختصرة.
Identifiers.
User assignment.
Assignment remove confirmation.
You're going to remove this assignment. هل أنت واثق؟
Subramoni, H.
T J. Watson Res. Center, IBM, Yorktown Heights, NY, USA.
T J. Watson Res. Center, IBM, Yorktown Heights, NY, USA.
T J. Watson Res. Center, IBM, Yorktown Heights, NY, USA.
Comput. الخيال العلمي. Center, IBM, Dublin, Ireland.
معلومة اضافية.
شارك.
Export to bibliography.
Reporting an error / abuse.
Sending the report failed.
Submitting the report failed. Please, try again. If the error persists, contact the administrator by writing to supportinfona. pl.
Accessibility options.
You can adjust the font size by pressing a combination of keys:
You can change the active elements on the page (buttons and links) by pressing a combination of keys:
TAB go to the next element SHIFT + TAB go to the previous element.

Streaming low-latency communication in online trading systems


During this time, there may be intermittent impact on performance. نحن نعتذر عن أي شيء غير مناسب.
IEEE. org IEEE Xplore Digital Library IEEE-SA IEEE Spectrum More Sites.
IEEE Account.
Purchase Details.
معلومات الملف الشخصي.
الولايات المتحدة & أمب؛ Canada: +1 800 678 4333 Worldwide: +1 732 981 0060.
A not-for-profit organization, IEEE is the world's largest technical professional organization dedicated to advancing technology for the benefit of humanity.
&نسخ؛ Copyright 2017 IEEE - All rights reserved. Use of this web site signifies your agreement to the terms and conditions.

No comments:

Post a Comment