Skip to main content

تصميم نظام التداول الكمون المنخفض


11 أفضل الممارسات لأنظمة الكمون المنخفض.
منذ 8 سنوات منذ لاحظت جوجل أن 500ms اضافية من الكمون انخفض حركة المرور بنسبة 20٪ وأمازون أدركت أن 100ms من الكمون اضافية انخفضت المبيعات بنسبة 1٪. ومنذ ذلك الحين، كان المطورون يتسابقون إلى أسفل منحنى الكمون، وبلغت ذروتها في مطوري الواجهة الأمامية الذين يضغطون على كل ملي ثانية ثانية من جافا سكريبت و كس وحتى هتمل. ما يلي هو المشي العشوائي من خلال مجموعة متنوعة من أفضل الممارسات أن نأخذ في الاعتبار عند تصميم أنظمة الكمون المنخفض. معظم هذه الاقتراحات تؤخذ إلى أقصى حد منطقي ولكن بالطبع يمكن إجراء المبادلات. (بفضل مستخدم مجهول لطرح هذا السؤال على كورا والحصول علي لوضع أفكاري أسفل في الكتابة).
اختر اللغة الصحيحة.
لا يلزم تطبيق لغات البرمجة النصية. على الرغم من أنها تحافظ على الحصول على أسرع وأسرع، عندما كنت تبحث لحلق تلك بالمللي ثانية القليلة من وقت المعالجة الخاصة بك لا يمكن أن يكون النفقات العامة للغة تفسير. بالإضافة إلى ذلك، سوف تحتاج إلى نموذج ذاكرة قوية لتمكين البرمجة الحرة قفل لذلك يجب أن تبحث في جافا، سكالا، C ++ 11 أو الذهاب.
يبقيه كل شيء في الذاكرة.
سيؤدي الإدخال / الإخراج إلى قتل وقت الاستجابة، لذا تأكد من أن جميع بياناتك في الذاكرة. وهذا يعني عموما إدارة هياكل البيانات الخاصة بك في الذاكرة والحفاظ على سجل مستمر، حتى تتمكن من إعادة بناء الدولة بعد إعادة تشغيل الجهاز أو عملية. بعض الخيارات لسجل ثابت تشمل بيتكاسك، كراتي، ليفيلدب و بدب-جي. بدلا من ذلك، قد تكون قادرا على الابتعاد عن تشغيل قاعدة بيانات محلية ثابتة في الذاكرة مثل ريديس أو مونغودب (مع الذاكرة & غ؛ & غ؛ البيانات). لاحظ أنه يمكنك تفقد بعض البيانات على تحطم بسبب مزامنة الخلفية إلى القرص.
إبقاء البيانات ومعالجة كولوكاتد.
القفزات شبكة أسرع من القرص يسعى ولكن حتى لا تزال سوف تضيف الكثير من النفقات العامة. من الناحية المثالية، يجب أن تكون البيانات الخاصة بك تناسب تماما في الذاكرة على مضيف واحد. مع أوس توفير ما يقرب من 1/4 تيرابايت من ذاكرة الوصول العشوائي في السحابة والخوادم المادية التي تقدم متعددة السل وهذا هو ممكن عموما. إذا كنت بحاجة إلى تشغيل على أكثر من مضيف واحد يجب التأكد من أن البيانات والطلبات الخاصة بك بشكل صحيح مقسمة بحيث تكون جميع البيانات اللازمة لخدمة طلب معين متاح محليا.
إبقاء النظام غير مستغلة.
يتطلب الكمون المنخفض دائما وجود موارد لمعالجة الطلب. لا تحاول تشغيلها في حدود ما يمكن أن توفره الأجهزة / البرامج. دائما الكثير من غرفة الرأس لرشقات نارية ثم بعض.
احتفظ بمفاتيح السياق إلى أدنى حد ممكن.
مفاتيح السياق هي علامة على أنك تقوم بعمل أكثر حسابا من لديك موارد ل. سوف تحتاج إلى الحد من عدد سلاسل الترابط الخاصة بك إلى عدد النوى على النظام الخاص بك، ولربط كل مؤشر الترابط إلى جوهرها.
الحفاظ على قراءات متتابعة.
جميع أشكال التخزين، ويذبل أن يكون التناوب، ومقرها فلاش، أو الذاكرة أداء أفضل بكثير عند استخدامها بالتتابع. عند إصدار قراءات متتابعة إلى الذاكرة التي تؤدي إلى استخدام الجلب المسبق على مستوى ذاكرة الوصول العشوائي وكذلك على مستوى ذاكرة التخزين المؤقت وحدة المعالجة المركزية. إذا فعلت بشكل صحيح، فإن الجزء التالي من البيانات التي تحتاج إليها يكون دائما في ذاكرة التخزين المؤقت L1 الحق قبل الحاجة إليها. أسهل طريقة للمساعدة في هذه العملية على طول هو استخدام الثقيلة من صفائف من أنواع البيانات البدائية أو الهياكل. وينبغي تجنب المؤشرات التالية إما من خلال استخدام قوائم مرتبطة أو من خلال صفائف من الأشياء بأي ثمن.
دفعة يكتب.
هذا يبدو كونتيرينتبيتيف ولكن يمكنك الحصول على تحسينات كبيرة في الأداء عن طريق الخلط يكتب. ومع ذلك، هناك سوء فهم أن هذا يعني أن النظام يجب أن تنتظر وقتا تعسفيا من الوقت قبل القيام الكتابة. بدلا من ذلك، يجب أن تدور خيط واحد في حلقة ضيقة تفعل I / O. سوف كل دفعة دفعة كل البيانات التي وصلت منذ صدر آخر كتابة. وهذا يجعل نظام سريع جدا والتكيف.
احترم ذاكرة التخزين المؤقت.
مع كل هذه التحسينات في مكان، والوصول إلى الذاكرة بسرعة يصبح عنق الزجاجة. تثبيت المواضيع إلى النوى الخاصة بهم يساعد على تقليل تلوث ذاكرة التخزين المؤقت وحدة المعالجة المركزية وتساعد I / O تسلسلي يساعد أيضا على تحميل ذاكرة التخزين المؤقت. أبعد من ذلك، يجب أن تبقي أحجام الذاكرة أسفل باستخدام أنواع البيانات البدائية حتى المزيد من البيانات يناسب في ذاكرة التخزين المؤقت. بالإضافة إلى ذلك، يمكنك أن تبحث في الخوارزميات مخبأ مخبأ التي تعمل من خلال كسر بشكل متكرر البيانات إلى أن تناسبها في ذاكرة التخزين المؤقت ومن ثم القيام بأي معالجة اللازمة.
عدم حجب قدر الإمكان.
تكوين صداقات مع عدم حجب وانتظار هياكل البيانات الحرة والخوارزميات. في كل مرة كنت تستخدم قفل لديك للذهاب إلى كومة لنظام التشغيل للتوسط القفل الذي هو النفقات العامة الضخمة. في كثير من الأحيان، إذا كنت تعرف ما تقومون به، يمكنك الحصول على جميع أنحاء الأقفال عن طريق فهم نموذج الذاكرة من جفم، C ++ 11 أو الذهاب.
غير المتزامنة قدر الإمكان.
أي معالجة وخاصة أي I / O التي ليست ضرورية تماما لبناء الاستجابة ينبغي أن يتم خارج المسار الحرج.
موازاة قدر الإمكان.
أي معالجة وخاصة أي I / O التي يمكن أن تحدث بالتوازي يجب أن يتم بالتوازي. على سبيل المثال إذا كانت إستراتيجية التوفر العالية تتضمن تسجيل المعاملات إلى القرص وإرسال المعاملات إلى خادم ثانوي يمكن أن تحدث هذه الإجراءات بالتوازي.
تقريبا كل هذا يأتي من متابعة ما لماكس يفعل مع مشروع ديسروبتور بهم. اطلع على ذلك واتبع أي شيء يفعله مارتن طومسون.
شارك هذا:
ذات صلة.
نشرت من قبل.
بنيامين دارفلر.
29 أفكار حول & لدكو؛ 11 أفضل الممارسات لأنظمة الكمون المنخفض & رديقو؛
وسعيدة أن تكون على قائمتك 🙂
مادة جيدة. لحم البقر: لا يوجد نموذج ذاكرة متطور مثل جافا أو C ++ 11. إذا كان النظام الخاص بك يناسب مع الذهاب الروتينية والقنوات المعمارية انها كل شيء جيد آخر لا حظ. عفيك لا يمكنك الانسحاب من جدولة وقت التشغيل لذلك لا توجد المواضيع أوس الأصلي والقدرة على بناء الخاص بك قفل هياكل البيانات المجانية مثل (طوابير سبسك / حلقة مخازن) أيضا تفتقر بشدة.
شكرا على الرد. في حين أن نموذج ذاكرة الذهاب (غولانغ / ريف / ميم) قد لا تكون قوية مثل جافا أو C ++ 11 كنت تحت الانطباع أنه لا يزال بإمكانك إدارة لإنشاء هياكل خالية من قفل البيانات استخدامه. على سبيل المثال جيثب / تكستنود / غرينغو، جيثب / سكرينر / لفريكو و جيثب / موشيرا / غولفهاش. ربما أنا & # 8217؛ م في عداد المفقودين شيئا؟ باعتراف الجميع أنا أعرف أقل بكثير عن الذهاب من جفم.
بنيامين، نموذج ذاكرة الذهاب مفصلة هنا: غولانغ / ريف / ميم هو في الغالب من حيث القنوات والمكسرات. نظرت من خلال الحزم التي قمت بإدراجها وفي حين أن هياكل البيانات هناك & # 8220؛ قفل الحرة & # 8221؛ فهي لا تعادل ما يمكن بناء واحد في جافا / C ++ 11. حزمة التزامن حتى الآن، لا يوجد لديها دعم للذرات استرخاء أو دلالات اكتساب / الافراج عن C ++ 11. وبدون هذا الدعم من الصعب لبناء هياكل البيانات سبسك كما كفاءة تلك الممكنة في C ++ / جافا. المشاريع التي تربط استخدامها atomic. Add & # 8230؛ الذي هو ذري متسقة بالتتابع. إنه & # 8217؛ s بنيت مع زاد كما ينبغي أن يكون & # 8211؛ جيثب / تونير / golang / فقاعة / الماجستير / SRC / PKG / المزامنة / الذري / asm_amd64.s.
أنا لا أحاول ضرب. يستغرق الحد الأدنى من الجهد لكتابة المتزامنة إو والمتزامنة.
رمز سريع بما فيه الكفاية لمعظم الناس. يتم ضبطها للغاية مكتبة ستد للأداء. غولانغ لديها أيضا دعم للهيكلات التي مفقود في جافا. ولكن كما هو عليه، وأعتقد أن نموذج الذاكرة التبسيط ووقت التشغيل روتينية تقف في طريق بناء نوع من الأنظمة التي تتحدث عنها.
أشكركم على الرد في العمق. آمل أن يجد الناس هذا ذهابا وإيابا مفيدة.
في حين أن & أمب؛ 8222؛ مواطن & # 8217؛ اللغة ربما أفضل، انها & # 8217؛ ق ليس مطلوبا بدقة. الفيسبوك أظهر لنا أنه يمكن القيام به في فب. منحهم استخدام فب قبل تجميعها مع آلة هفم بهم. ولكن من الممكن!
للأسف فب لا يزال يفتقر إلى نموذج ذاكرة مقبولة حتى لو هفم تحسن كبير في سرعة التنفيذ.
بينما أنا & # 8217؛ ليرة لبنانية المعركة لاستخدام اللغات على مستوى عال بقدر ما الرجل القادم، وأعتقد أن الطريقة الوحيدة لتحقيق تطبيقات الكمون المنخفض الناس يبحثون عن إسقاط لأسفل إلى لغة مثل C. يبدو أن أكثر صرامة هو أن يكتب بلغة، وأسرع ينفذ.
أود أن أوصي بشدة أن ننظر إلى العمل الذي يجري في المشاريع والمدونات التي ارتبطت. و جفم تتحول بسرعة إلى بقعة ساخنة لهذه الأنواع من الأنظمة لأنها توفر نموذج ذاكرة قوية وجمع القمامة التي تمكن البرمجة الحرة القفل الذي يكاد يكون أو مستحيلا تماما مع نموذج ذاكرة ضعيفة أو غير معروف والعدادات المرجعية لإدارة الذاكرة.
أنا & # 8217؛ ليرة لبنانية نلقي نظرة، بنيامين. شكرا لافتا بها.
جمع القمامة للبرمجة الحرة قفل هو قليلا من الآلات السابقين ديوس. يمكن بناء كل من مبمك وطوابير سبسك دون الحاجة إلى غ. هناك أيضا الكثير من الطرق للقيام قفل البرمجيات الحرة دون جمع القمامة والعد إشارة ليست الطريقة الوحيدة. تقدم مؤشرات المخاطر و رسيو و بروس-كولكتورس الخ الدعم للاستصلاح المؤجل وعادة ما يتم ترميزها لدعم خوارزمية (ليست عامة)، وبالتالي فهي عادة أسهل بكثير للبناء. وبطبيعة الحال فإن المفاضلة تكمن في حقيقة أن غس جودة الإنتاج لديها الكثير من العمل وضعت فيها، وسوف تساعد مبرمج أقل خبرة كتابة الخوارزميات الخالية من القفل (يجب أن تفعل ذلك على الإطلاق؟) دون ترميز حتى استصلاح المؤجل مخططات . بعض الروابط عن العمل المنجز في هذا المجال: cs. toronto. edu/
نعم C / C ++ حصلت مؤخرا على نموذج الذاكرة، ولكن هذا لا يعني أنها كانت غير مناسبة تماما لرمز خالية من القفل في وقت سابق. دول مجلس التعاون الخليجي وغيرها من جامعي جودة عالية كان مترجم توجيهات محددة للقيام قفل البرمجيات الحرة على منصات معتمدة لفترة طويلة حقا & # 8211؛ لم تكن موحدة في اللغة. وقد قدمت لينكس وغيرها من المنصات هذه البدايات لبعض الوقت أيضا. وضع جافا & # 8217؛ s فريدة من نوعها أنها قدمت نموذج ذاكرة رسمية أنه يضمن للعمل على جميع المنصات المعتمدة. على الرغم من أن هذا هو رهيبة من حيث المبدأ، ومعظم المطورين الجانب الخادم تعمل على منصة واحدة (لينكس / ويندوز). كان لديهم بالفعل أدوات لبناء رمز الحرة قفل لمنصاتهم.
غ هو أداة عظيمة ولكن ليست واحدة ضرورية. لديها تكلفة سواء من حيث الأداء والتعقيد (كل الحيل اللازمة لتجنب ستو غ). C ++ 11 / C11 لديها بالفعل دعم لنماذج الذاكرة المناسبة. دعونا لا ننسى أن جفمس ليس لديهم أي مسؤولية لدعم أبي غير آمنة في المستقبل. الرمز غير الآمن هو & # 8220؛ غير آمن & # 8221؛ حتى تفقد فوائد ميزات الأمان جافا & # 8217؛ s. وأخيرا المنظمة البحرية الدولية رمز غير آمنة تستخدم لتخطيط الذاكرة ومحاكاة ستروكتس في جافا يبدو أبشع بكثير من C / C + + ستروكتس حيث المترجم يفعل ذلك العمل بالنسبة لك بطريقة موثوق بها. C و C ++ أيضا توفير الوصول إلى كل مستوى منخفض منصة أدوات الطاقة محددة مثل بوس إنز، سس / أفكس / نيون الخ يمكنك حتى لحن تخطيط التعليمات البرمجية الخاصة بك من خلال البرامج النصية رابط! السلطة التي تقدمها سلسلة C / C ++ أداة لا مثيل لها حقا من قبل جفم. جافا هو منصة كبيرة لا أقل، ولكن أعتقد أنه من أكبر ميزة هو أن منطق الأعمال العادية (90٪ من التعليمات البرمجية؟) لا تزال تعتمد على غ وميزات السلامة والاستفادة من المكتبات ضبطها للغاية واختبارها مكتوبة مع غير آمنة. هذا هو مفاضلة كبيرة بين الحصول على آخر 5٪ من العطور وكونها منتجة. إن المفاضلة المنطقية لكثير من الناس ولكن المفاضلة لا تقل. كتابة تعقيدا رمز التطبيق في C / C ++ هو كابوس بعد كل شيء.
أون مون، 10 مارس، 2017 في 12:52 بيإم، كتب كوديبندنتس:
وGT. غراهام سوان علق: & # 8220؛ أنا & # 8217؛ سوف نلقي نظرة، بنيامين. شكرا ل & غ؛ لافتا لهم. & # 8221؛
مفقود 12: لا تستخدم غاربادج اللغات التي تم جمعها. غ هو عنق الزجاجة في ورسستاس. ومن المرجح أن يوقف جميع المواضيع. إنه عالمي. فإنه يصرف المهندس المعماري لإدارة واحدة من أكثر الموارد كريتال (وحدة المعالجة المركزية بالقرب من الذاكرة) نفسه.
في الواقع الكثير من هذا العمل يأتي مباشرة من جافا. للقيام قفل البرمجيات الحرة الحق تحتاج إلى نموذج ذاكرة واضحة التي c + اكتسبت مؤخرا فقط. إذا كنت تعرف كيفية العمل مع غ وليس ضده يمكنك إنشاء أنظمة الكمون المنخفض في كثير من الأحيان مع سهولة أكثر من ذلك بكثير.
يجب أن أتفق مع بن هنا. لقد أحرز الكثير من التقدم في موازنات جنرال الكتريك في العقد الماضي أو نحو ذلك مع جامع G1 كونه أحدث التشويش. قد يستغرق القليل من الوقت لضبط كومة ومقابض مختلفة للحصول على غ لجمع مع ما يقرب من أي وقفة، ولكن هذا يتضاءل بالمقارنة مع الوقت المطور الذي يستغرقه لعدم وجود غ.
يمكنك حتى أن تذهب خطوة أبعد وإنشاء أنظمة تنتج القمامة القليل جدا التي يمكنك بسهولة دفع غ الخاص بك خارج نافذة التشغيل الخاصة بك. هذه هي الطريقة التي جميع المحلات التجارية عالية التردد تفعل ذلك عند تشغيل على جفم.
جمع القمامة للبرمجة الحرة قفل هو قليلا من الآلات السابقين ديوس. يمكن بناء كل من مبمك وطوابير سبسك دون الحاجة إلى غ. هناك أيضا الكثير من الطرق للقيام قفل البرمجيات الحرة دون جمع القمامة والعد إشارة ليست الطريقة الوحيدة. وتوفر مؤشرات المخاطر، و رسيو، و جامعي الوكالء، إلخ، الدعم لالستصالح المؤجل ويتم ترميزها لدعم خوارزمية) ليست عامة (، وبالتالي فهي أسهل بكثير في البناء. وبطبيعة الحال فإن المفاضلة تكمن في حقيقة أن غس جودة الإنتاج لديها الكثير من العمل وضعت فيها، وسوف تساعد مبرمج أقل خبرة كتابة الخوارزميات الخالية من القفل (يجب أن تفعل ذلك على الإطلاق؟) دون ترميز حتى استصلاح المؤجل مخططات . بعض الروابط عن العمل المنجز في هذا المجال: cs. toronto. edu/
نعم C / C ++ حصلت مؤخرا على نموذج الذاكرة، ولكن هذا لا يعني أنها كانت غير مناسبة تماما لرمز خالية من القفل في وقت سابق. دول مجلس التعاون الخليجي وغيرها من مترجمين ذات جودة عالية وكان مترجم توجيهات محددة للقيام قفل البرمجيات الحرة على منصات معتمدة لفترة طويلة حقا & # 8211؛ لم تكن موحدة في اللغة. وقد قدمت لينكس وغيرها من المنصات هذه البدايات لبعض الوقت أيضا. وضع جافا & # 8217؛ s فريدة من نوعها أنها قدمت نموذج ذاكرة رسمية أنه يضمن للعمل على جميع المنصات المعتمدة. على الرغم من أن هذا هو رهيبة من حيث المبدأ، ومعظم المطورين الجانب الخادم تعمل على منصة واحدة (لينكس / ويندوز). لديهم بالفعل أدوات لبناء رمز الحرة قفل لمنصاتهم.
غ هو أداة عظيمة ولكن ليست واحدة ضرورية. لديها تكلفة سواء من حيث الأداء والتعقيد (كل الحيل اللازمة لتأخير وتجنب ستو غ). C ++ 11 / C11 لديها بالفعل دعم لنماذج الذاكرة المناسبة. دعونا لا ننسى أن جفمس ليس لديهم أي مسؤولية لدعم أبي غير آمنة في المستقبل. الرمز غير الآمن هو & # 8220؛ غير آمن & # 8221؛ حتى تفقد فوائد ميزات الأمان جافا & # 8217؛ s. وأخيرا المنظمة البحرية الدولية رمز غير آمنة تستخدم لتخطيط الذاكرة ومحاكاة ستروكتس في جافا يبدو أبشع بكثير من C / C + + ستروكتس حيث المترجم يفعل ذلك العمل بالنسبة لك بطريقة موثوق بها. C و C ++ أيضا توفير الوصول إلى كل مستوى منخفض منصة أدوات الطاقة محددة مثل بوس إنز، سس / أفكس / نيون الخ يمكنك حتى لحن تخطيط التعليمات البرمجية الخاصة بك من خلال البرامج النصية رابط! السلطة التي تقدمها سلسلة C / C ++ أداة لا مثيل لها حقا من قبل جفم. جافا هو منصة كبيرة لا أقل، ولكن أعتقد أنه من أكبر ميزة هو أن منطق الأعمال العادية (90٪ من التعليمات البرمجية؟) لا تزال تعتمد على غ وميزات السلامة والاستفادة من المكتبات ضبطها للغاية واختبارها مكتوبة مع غير آمنة. هذا هو مفاضلة كبيرة بين الحصول على آخر 5٪ من العطور وكونها منتجة. إن المفاضلة المنطقية لكثير من الناس ولكن المفاضلة لا تقل. كتابة تعقيدا رمز التطبيق في C / C ++ هو كابوس بعد كل شيء.
وGT. لا تستخدم غاربادج اللغات التي تم جمعها.
أو على الأقل، & # 8220؛ تقليدي & # 8221؛ جمع القمامة اللغات. لأنهم مختلفون & # 8211؛ في حين أن إرلانغ لديه أيضا جامع، فإنه لا يخلق اختناقات لأنه لا يفعل & # 8217؛ ر & # 8220؛ توقف العالم & # 8221؛ كما جافا في حين جمع القمامة & # 8211؛ بدلا من ذلك أنه يوقف الفردية الصغيرة & # 8220؛ الصغرى المواضيع & # 8221؛ على مقياس ميكروثانية، لذلك لا & # 8217؛ s غير ملحوظ على كبير.
إعادة الكتابة إلى & # 8220؛ التقليدية & # 8221؛ جمع القمامة [i] الخوارزميات [/ i]. في لماكس نستخدم أزول زينغ، ومجرد باستخدام جفم مختلفة مع نهج مختلف لجمع القمامة، ونحن & # 8217؛ شهد تحسينات ضخمة في الأداء، لأن كل من غز الرئيسية والثانوية هي أوامر من حجم أرخص.
هناك تكاليف أخرى تعوض ذلك، بطبيعة الحال: يمكنك استخدام الجحيم من الكثير من كومة الذاكرة المؤقتة، و زينغ إيسن & # 8217؛ ر رخيصة.
ريبلوجيد ذيس أون جافا برورغرام أمثلة وعلق:
واحدة من يجب قراءة المقال لمبرمجي جافا، انها & # 8217؛ ق الدرس سوف تتعلم بعد قضاء وقت كبير ضبط وتطوير أنظمة الكمون المنخفض في جافا في 10 دقيقة.
إحياء خيط قديم، ولكن (بشكل مثير للدهشة) هذا لا بد من الإشارة إلى:
1) اللغات ذات المستوى الأعلى (مثل جافا) لا تطلب وظائف من الأجهزة التي لا تتوفر لللغات ذات المستوى الأدنى (على سبيل المثال C)؛ أن نذكر أن هذا ما يسمى & # 8220؛ مستحيل تماما & # 8221؛ في C في حين يمكن القيام به بسهولة في جافا هو القمامة كاملة دون الاعتراف بأن جافا يعمل على الأجهزة الظاهرية حيث جفم لديه لتجميع الوظائف المطلوبة من قبل جافا ولكن لم توفرها الأجهزة المادية. إذا كان جفم (على سبيل المثال مكتوب في C) يمكن توليف وظيفة X، ثم حتى يمكن مبرمج C.
2) & # 8220؛ لوك فري & # 8221؛ إيسن & # 8217؛ ر ما يعتقده الناس، ما عدا تقريبا من قبيل الصدفة في ظروف معينة، مثل واحد x86 الأساسية؛ مولتيكور x86 لا يمكن تشغيل قفل مجانا دون حواجز الذاكرة، والتي لديها تعقيدات وتكلفة مماثلة لقفل العادية. وفقا 1 أعلاه، إذا قفل يعمل مجانا في بيئة معينة، وذلك لأنه مدعوم من قبل الأجهزة، أو محاكاة / توليفها بواسطة البرمجيات في بيئة افتراضية.
نقاط كبيرة جوليوس. النقطة التي كنت أحاولها (ربما غير ناجحة جدا) هي أنه من الصعب للغاية تطبيق العديد من هذه الأنماط في C لأنها تعتمد على غ. انها تتجاوز مجرد استخدام حواجز الذاكرة. عليك أن تنظر في تحرير الذاكرة وكذلك الذي يحصل على صعوبة خاصة عندما كنت تتعامل مع قفل الحرة والانتظار الخوارزميات الحرة. هذا هو المكان الذي يضيف غ فوزا كبيرا. ومع ذلك، أسمع روست بعض الأفكار المثيرة للاهتمام حول ملكية الذاكرة التي قد تبدأ في معالجة بعض هذه القضايا.

تصميم نظام تداول الكمون المنخفض
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
ما مدى سرعة أنظمة التداول هفت الفن اليوم؟
في كل وقت تسمع عن تداول عالية التردد (هفت) وكيف لعنة بسرعة الخوارزميات. ولكن أنا أتساءل - ما هو سريع هذه الأيام؟
أنا لا أفكر في الكمون الناجم عن المسافة الفعلية بين تبادل والخادم تشغيل تطبيق التداول، ولكن الكمون التي قدمها البرنامج نفسه.
أن تكون أكثر تحديدا: ما هو الوقت من الأحداث التي تصل على السلك في تطبيق لهذا التطبيق يخرج أمر / سعر على السلك؟ أي. وقت القراد إلى التجارة.
هل نتحدث دون ميلي ثانية واحدة؟ أو الفرعية ميكروثانية؟
كيف يحقق الأشخاص هذه الحالات؟ الترميز في التجمع؟ التصميم بما؟ جيد C ++ رمز قديم؟
تم مؤخرا نشر مقالة مثيرة للاهتمام حول أسم، وتوفير الكثير من التفاصيل في التكنولوجيا هفت اليوم، وهو قراءة ممتازة:
لقد تلقيت إجابات جيدة جدا. هناك مشكلة واحدة، على الرغم من أن معظم أليغوترادينغ هو سر. كنت ببساطة لا أعرف مدى سرعة ذلك. هذا يسير في كلا الاتجاهين - قد لا اقول لكم بعض مدى السرعة التي يعملون، لأنها لا تريد. البعض الآخر، دعونا نقول "المبالغة"، لأسباب عديدة (جذب المستثمرين أو العملاء، واحد).
الشائعات حول البيكو ثانية، على سبيل المثال، هي الفاحشة بدلا من ذلك. 10 نانو ثانية و 0.1 نانو ثانية هي بالضبط نفس الشيء، لأن الوقت الذي يستغرقه للوصول إلى خادم التداول هو أكثر من ذلك بكثير من ذلك.
والأهم من ذلك، وإن لم يكن ما كنت قد سألت، إذا ذهبت نحو محاولة للتجارة خوارزمية، لا تحاول أن تكون أسرع، في محاولة لتكون أكثر ذكاء. لقد رأيت خوارزميات جيدة جدا التي يمكن التعامل مع ثواني كاملة من الكمون وجعل الكثير من المال.
أنا كتو من شركة صغيرة أن يجعل ويبيع أنظمة هفت القائم على فبغا. بناء أنظمةنا على رأس سولارفلار تطبيق أونلود المحرك (أو) كنا تقديم باستمرار الكمون من "السوق" مثيرة للاهتمام الحدث على السلك (10Gb / S أودب بيانات تغذية السوق من أيس أو سم) إلى أول بايت من رسالة أمر الناتجة ضرب الأسلاك في نطاق 750 إلى 800 نانوسيكوند (نعم، ميكروثانية فرعية). ونحن نتوقع أن أنظمة الإصدار التالي سيكون في نطاق 704 إلى 710 نانوسيكوند. بعض الناس قد ادعى أقل قليلا، ولكن هذا في بيئة المختبر ولا يجلس في الواقع في كولو في شيكاغو وتطهير الأوامر.
التعليقات حول الفيزياء و "سرعة الضوء" صالحة ولكنها ليست ذات صلة. كل شخص جاد في هفت لديه خوادمهم في كولو في الغرفة بجانب خادم التبادل.
للوصول إلى هذا المجال ميكروثانية الفرعية لا يمكنك أن تفعل كثيرا على وحدة المعالجة المركزية المضيف باستثناء أوامر تنفيذ استراتيجية التغذية إلى فبغا، حتى مع تقنيات مثل تجاوز النواة لديك 1.5 ميكروثانية من النفقات العامة لا مفر منه. لذلك في هذا المجال كل شيء يلعب مع فبغاس.
واحدة من الإجابات الأخرى هي نزيهة جدا في القول أنه في هذا السوق سرية للغاية عدد قليل جدا من الناس يتحدثون عن الأدوات التي يستخدمونها أو أدائهم. كل واحد من عملائنا يتطلب أننا حتى لا نقول أي شخص أنهم يستخدمون أدواتنا ولا الكشف عن أي شيء حول كيفية استخدامها. هذا ليس فقط يجعل التسويق الثابت، ولكنه يمنع حقا تدفق جيد من المعرفة التقنية بين أقرانهم.
وبسبب هذه الحاجة للدخول في أنظمة غريبة لجزء "سريع الأشرار" من السوق ستجد أن كوانتس (الناس التي تأتي مع الخوارزميات التي نجعلها تسير بسرعة) وتقسم الطحالب الخاصة بهم إلى الحدث - زمن الاستجابة. في الجزء العلوي من كومة التكنولوجيا هي نظم ميكروثانية الفرعية (مثل بلدنا). الطبقة التالية هي أنظمة C ++ المخصصة التي تجعل الاستخدام الكثيف للتجاوز النواة و هم في نطاق 3-5 ميكروثانية. الطبقة التالية هي الناس الذين لا يستطيعون أن يكون على سلك 10Gb / S واحد فقط هوب التوجيه من "الصرف"، فإنها قد تكون لا تزال في كولو ولكن بسبب لعبة سيئة نسميها "ميناء الروليت" انهم في العشرات إلى المئات من المجال ميكروثانية. مرة واحدة تحصل في ميلي ثانية أنه يكاد لا هفت أي أكثر من ذلك.
"سوب-40 ميكروثانية" إذا كنت ترغب في مواكبة ناسداك. يتم نشر هذا الرقم هنا ناسداكومكس / التكنولوجيا /
المادة الجيدة التي تصف ما هي حالة هفت (في 2018) ويعطي بعض العينات من حلول الأجهزة مما يجعل نانو ثانية قابلة للتحقيق: ستريت ستريتس الحاجة لسرعة التداول: عصر نانوسيكوند.
مع السباق لأقل "الكمون" مستمرة، بعض المشاركين في السوق حتى يتحدثون عن بيكوسكوندس-تريليونثس من الثانية.
إديت: كما ذكر نيكولاس:
يشير الرابط إلى شركة فيكسنيتيكس، والتي يمكن أن "تعد التجارة" في 740ns (أي الوقت من حدث الإدخال يحدث لإرسال أمر).
ما هو قيمة لها، و تيبكو فتل المنتج الرسائل دون 500 نانومتر داخل الجهاز (الذاكرة المشتركة) وعدد قليل من الثواني الصغيرة باستخدام ردما (البعيد الوصول إلى الذاكرة المباشرة) داخل مركز البيانات. بعد ذلك، تصبح الفيزياء الجزء الرئيسي من المعادلة.
بحيث تكون السرعة التي يمكن للبيانات الحصول عليها من الأعلاف إلى التطبيق الذي يجعل القرارات.
وقد ادعى نظام واحد على الأقل.
30ns إنتيرثريد الرسائل، الذي هو على الارجح أنب حتى المعيار، لذلك أي شخص يتحدث عن أقل الأرقام يستخدم نوعا من وحدة المعالجة المركزية السحرية.
مرة كنت في التطبيق، بل هو مجرد مسألة مدى سرعة البرنامج يمكن اتخاذ القرارات.
هذه الأيام رقم واحد القراد إلى التداول في ميكروثانية هو شريط لشركات هفت تنافسية. يجب أن تكون قادرا على القيام بأرقام واحدة عالية باستخدام البرنامج فقط. ثم & لوت؛ 5 أوسيك مع أجهزة إضافية.
وقد بدأ التداول عالي التردد على الأقل منذ عام 1999، بعد أن أذنت لجنة الأوراق المالية والبورصات الأمريكية (سيك) بتبادلات إلكترونية في عام 1998. وفي مطلع القرن الحادي والعشرين، كانت الصفقات هفت وقت التنفيذ عدة ثوان، في حين بحلول عام 2018 هذا قد انخفض إلى ميلي ثانية وحتى ميكروثانية.
فإنه لن يكون تحت ميكروثانية قليلة، بسبب إم-w / الحد الأقصى للسرعة الخفيفة، وفقط عدد قليل الحظ، التي يجب أن تكون في أقل من كيلومتر واحد بعيدا، ويمكن حتى حلم الاقتراب من ذلك.
أيضا، لا يوجد الترميز، لتحقيق تلك السرعة يجب أن تذهب البدنية .. (الرجل مع المادة مع التبديل 300ns، وهذا هو فقط الكمون المضافة من هذا التبديل!؛ يساوي 90M من السفر من خلال البصرية وأقل قليلا في النحاس)

تجارة الأرض الهندسة المعمارية.
اللغات المتوفرة.
خيارات التنزيل.
عرض مع أدوبي ريدر على مجموعة متنوعة من الأجهزة.
جدول المحتويات.
تجارة الأرض الهندسة المعمارية.
نظرة عامة التنفيذية.
زيادة المنافسة، وارتفاع حجم بيانات السوق، والطلبات التنظيمية الجديدة هي بعض القوى الدافعة وراء التغيرات في الصناعة. تحاول الشركات الحفاظ على قدرتها التنافسية من خلال تغيير استراتيجياتها التجارية باستمرار وزيادة سرعة التداول.
يجب أن تتضمن الهندسة المعمارية القابلة للحياة أحدث التقنيات من مجالات الشبكات والتطبيقات. يجب أن تكون وحدات لتوفير مسار يمكن إدارته لتطوير كل مكون مع الحد الأدنى من تعطيل للنظام العام. ولذلك فإن العمارة المقترحة من قبل هذه الورقة تستند إلى إطار الخدمات. نحن نفحص الخدمات مثل الترا-- منخفضة الكمون الرسائل، رصد الكمون، البث المتعدد، والحوسبة، والتخزين والبيانات والتطبيق الظاهري، ومرونة التداول، والتداول التنقل، والعميل رقيقة.
يجب أن يتم بناء الحل للمتطلبات المعقدة من منصة التداول من الجيل التالي مع عقلية شاملة، عبور حدود الصوامع التقليدية مثل الأعمال والتكنولوجيا أو التطبيقات والشبكات.
الهدف الرئيسي لهذه الوثيقة هو توفير مبادئ توجيهية لبناء منصة تداول الكمون منخفضة للغاية مع تحسين الإنتاجية الخام ومعدل الرسالة لكل من بيانات السوق وأوامر التداول فيكس.
ولتحقيق ذلك، نقترح تقنيات الحد من الكمون التالية:
• سرعة عالية الاتصال بين إنفينيباند أو 10 جيجابايت في الثانية الاتصال لمجموعة التداول.
• ناقل الرسائل عالية السرعة.
• تسريع التطبيق عبر ردما دون إعادة تطبيق التطبيق.
• في الوقت الحقيقي رصد الكمون وإعادة توجيه حركة التداول إلى المسار مع الحد الأدنى من الكمون.
اتجاهات الصناعة والتحديات.
الجيل التالي من أبنية التداول يجب أن تستجيب لزيادة الطلب على السرعة والحجم والكفاءة. على سبيل المثال، من المتوقع أن يتضاعف حجم بيانات سوق الخيارات بعد إدخال خيارات التداول بيني في عام 2007. وهناك أيضا متطلبات تنظيمية لتنفيذ أفضل، والتي تتطلب معالجة الأسعار التحديثات بمعدلات التي تقترب من 1M مسغ / ثانية. للتبادلات. كما أنها تتطلب رؤية في نضارة البيانات وإثبات أن العميل حصلت على أفضل تنفيذ ممكن.
على المدى القصير، سرعة التداول والابتكار هي عوامل التفريق الرئيسية. يتم التعامل مع عدد متزايد من الصفقات من خلال تطبيقات التداول الحسابية وضعت في أقرب وقت ممكن إلى مكان تنفيذ التجارة. وهناك تحد مع هذه & كوت؛ الصندوق الأسود & كوت؛ ومحركات التداول هي أنها تزيد من حجم الزيادة بإصدار أوامر فقط لإلغائها وإعادة تقديمها. سبب هذا السلوك هو عدم وجود رؤية في أي مكان يقدم أفضل تنفيذ. التاجر البشري هو الآن & كوت؛ مهندس مالي، & كوت؛ a & كوت؛ كوانت & كوت؛ (المحلل الكمي) مع مهارات البرمجة، الذين يمكن ضبط نماذج التداول على الطاير. وتطور الشرکات أدوات مالیة جدیدة مثل المشتقات المناخیة أو الصفقات الصناعیة عبر الأصول، وتحتاج إلی نشر التطبیقات الجدیدة بسرعة وبطریقة قابلة للتطویر.
على المدى الطويل، ينبغي أن يأتي التمايز التنافسي من التحليل وليس المعرفة فقط. تجار نجمة الغد يتحملون المخاطر، ويحققون رؤية العميل الحقيقية، ويضربون باستمرار السوق (المصدر عب: www-935.ibm/services/us/imc/pdf/ge510-6270-trader. pdf).
وقد كانت مرونة الأعمال أحد الشواغل الرئيسية للشركات التجارية منذ 11 سبتمبر 2001. وتتراوح الحلول في هذا المجال من مراكز بيانات زائدة تقع في مناطق جغرافية مختلفة ومتصلة بأماكن تجارية متعددة لحلول التاجر الافتراضية التي تقدم لمتداولي الطاقة معظم وظائف أرضية التداول في مكان بعيد.
صناعة الخدمات المالية هي واحدة من الأكثر تطلبا من حيث متطلبات تكنولوجيا المعلومات. وتشهد هذه الصناعة تحولا معماريا نحو العمارة الموجهة نحو الخدمات (سوا)، وخدمات الويب، والمحاكاة الافتراضية لموارد تكنولوجيا المعلومات. سوا يستفيد من الزيادة في سرعة الشبكة لتمكين ديناميكية ملزمة والافتراضية مكونات البرمجيات. وهذا يسمح بإنشاء تطبيقات جديدة دون أن تفقد الاستثمار في النظم والبنية التحتية القائمة. وللمفهوم القدرة على إحداث ثورة في الطريقة التي يتم بها التكامل، مما يتيح تخفيضات كبيرة في تعقيد وتكلفة هذا التكامل (جيغاسباسز / دونلواد / MerrilLynchGigaSpacesWP. pdf).
وهناك اتجاه آخر يتمثل في توطيد الخوادم في مزارع ملقمات مراكز البيانات، في حين أن مكاتب التاجر لديها ملحقات كفم وعملاء رقيقة جدا (مثل حلول سونراي و هب للنصل). تتيح شبكات منطقة المترو عالية السرعة لبيانات السوق أن تكون متعددة الإرسال بين مواقع مختلفة، مما يتيح التمثيل الافتراضي لقاعة التداول.
الهندسة المعمارية عالية المستوى.
ويصور الشكل 1 البنية عالية المستوى لبيئة تجارية. يقع مصنع القراد ومحركات التداول الخوارزمية في مجموعة التداول عالية الأداء في مركز بيانات الشركة أو في البورصة. يقع التجار البشر في منطقة تطبيقات المستخدم النهائي.
وظيفيا هناك نوعان من مكونات التطبيق في بيئة تجارية المؤسسة والناشرين والمشتركين. يوفر ناقل الرسائل مسار الاتصال بين الناشرين والمشتركين.
هناك نوعان من حركة المرور الخاصة ببيئة التداول:
• بيانات السوق - يحمل معلومات التسعير للأدوات المالية، والأخبار، وغيرها من المعلومات ذات القيمة المضافة مثل التحليلات. وهو أحادي الاتجاه والكمون جدا حساسة، تسليم عادة عبر أودب الإرسال المتعدد. ويقاس في التحديثات / ثانية. و مبس. وتتدفق بيانات السوق من تغذية واحدة أو عدة خلاصات خارجية، تأتي من مزودي بيانات السوق مثل البورصات ومجمعات البيانات و إنز. كل مزود لديه شكل بيانات السوق الخاصة بها. يتم تلقي البيانات من قبل معالجات الأعلاف، والتطبيقات المتخصصة التي تطبيع وتنظيف البيانات ومن ثم إرسالها إلى المستهلكين البيانات، مثل محركات التسعير، وتطبيقات التداول حسابي، أو التجار البشر. كما تقوم الشركات البيعية بإرسال بيانات السوق إلى عملائها وشركات الشراء مثل صناديق الاستثمار وصناديق التحوط ومديري الأصول الأخرى. وقد تختار بعض شركات الشراء الحصول على تغذية مباشرة من البورصات، مما يقلل من الكمون.
الشكل 1 تجارة العمارة لجانب شراء / بيع شركة جانبية.
لا يوجد معيار الصناعة لتنسيقات بيانات السوق. كل تبادل لها شكل الملكية. مزودي المحتوى المالي مثل رويترز وبلومبرغ تجميع مصادر مختلفة من بيانات السوق، وتطبيعه، وإضافة الأخبار أو التحليلات. ومن الأمثلة على الأعلاف الموحدة هي ردف (خلاصة بيانات رويترز)، و روف (ريوترز وير فورمات)، وبيانات بلومبرغ للخدمات المهنية.
ولتقديم بيانات أقل عن بيانات وقت الاستجابة، قام كل من البائعين بإصدار خلاصات بيانات السوق في الوقت الفعلي والتي تكون أقل معالجة وتتميز بتحليلات أقل:
- بلومبرغ B - الأنابيب مع B - الأنابيب، بلومبرغ دي الأزواج تغذية بيانات السوق الخاصة بهم من منصة التوزيع لأن محطة بلومبرغ غير مطلوب للحصول على B - الأنابيب. وقد أعلنت وومبات ورويترز أعلاف معالجات دعم B - الأنابيب.
قد تقرر الشركة تلقي الخلاصات مباشرة من التبادل لتقليل وقت الاستجابة. يمكن أن تكون المكاسب في سرعة الإرسال بين 150 ميلي ثانية إلى 500 ميلي ثانية. هذه الأعلاف هي أكثر تعقيدا وأكثر تكلفة، وعلى الشركة أن تبني وتحافظ على النباتات الخاصة بهم شريط (فينانسيتيش / مميزة / showArticle. jhtml؟ أرتيكليد = 60404306).
• أوامر التداول - هذا النوع من حركة المرور يحمل الصفقات الفعلية. فمن ثنائية الاتجاه والكمون جدا حساسة. ويقاس في الرسائل / ثانية. و مبس. أوامر تنشأ من جانب شراء أو بيع الجانب شركة ويتم إرسالها إلى أماكن التداول مثل إكسهانج أو إن للتنفيذ. الشكل الأكثر شيوعا لنقل النظام هو فيكس (فينانسيال إنفورماتيون إكسهانج-فيكسبروتوكول /). وتسمى التطبيقات التي تعالج رسائل فيكس محركات فيكس وهي واجهة مع أنظمة إدارة النظام (أومز).
يسمى التحسين إلى فيكس فاست (فيكس أدابتد فور سترامينغ)، والذي يستخدم مخطط ضغط لتقليل طول الرسالة، وفي الواقع، تقليل زمن الاستجابة. ويستهدف فاست أكثر إلى تسليم بيانات السوق ولها القدرة على أن تصبح معيارا. فاست يمكن أن تستخدم أيضا كمخطط ضغط لتنسيقات بيانات السوق الملكية.
للحد من وقت الاستجابة، قد تختار الشركات إنشاء الوصول المباشر إلى الأسواق (دما).
دما هي العملية الآلية لتوجيه نظام الأوراق المالية مباشرة إلى مكان التنفيذ، وبالتالي تجنب تدخل طرف ثالث (تاورغروب / ريزارتش / كونتنت / glossary. jsp؟ بادج = 1 & أمب؛ غلوسارييد = 383). دما يتطلب اتصال مباشر إلى مكان التنفيذ.
ناقل الرسائل هو برامج الوسيطة من البائعين مثل تيبكو، 29West، رويترز رمدس، أو منصة مفتوحة المصدر مثل أمكب. يستخدم ناقل الرسائل آلية موثوقة لتقديم الرسائل. ويمكن أن يتم النقل عبر تكب / إب (تيبكومز، 29West، رمدس، و أمكب) أو أودب / الإرسال المتعدد (تيبكورف، 29West، و رمدس). أحد المفاهيم المهمة في توزيع الرسائل هو & كوت؛ ساحة المشاركات، & كوت؛ وهي مجموعة فرعية من بيانات السوق التي تحددها معايير مثل رمز المؤشر أو الصناعة أو سلة معينة من الأدوات المالية. ينضم المشتركون إلى مجموعات الموضوعات التي تم تعيينها لموضوع واحد أو عدة مواضيع فرعية من أجل الحصول على المعلومات ذات الصلة فقط. في الماضي، تلقى جميع التجار جميع بيانات السوق. في الأحجام الحالية من حركة المرور، وهذا سيكون دون المستوى الأمثل.
تلعب الشبكة دورا حاسما في البيئة التجارية. يتم نقل بيانات السوق إلى الطابق التجاري حيث يقع التجار البشري عبر شبكة عالية السرعة الحرم الجامعي أو مترو منطقة. كما أن توافرها العالي ووقت الاستجابة المنخفض، فضلا عن الإنتاجية العالية، هما أهم المقاييس.
بيئة التداول عالية الأداء لديها معظم مكوناتها في مركز خدمة مركز البيانات. لتقليل وقت الاستجابة، تحتاج محركات التداول الخوارزمية إلى تحديد موقعها بالقرب من معالجات التغذية ومحركات فيكس وأنظمة إدارة الطلبات. نموذج النشر البديل لديه أنظمة التداول الحسابية الموجودة في تبادل أو مزود خدمة مع اتصال سريع لتبادل متعددة.
نماذج النشر.
هناك نوعان من نماذج النشر لمنصة تداول عالية الأداء. قد تختار الشركات أن يكون لها مزيج من الاثنين:
• مركز بيانات الشركة التجارية) الشكل 2 (- هذا هو النموذج التقليدي، حيث يتم تطوير منصة تداول كاملة والحفاظ عليها من قبل الشركة مع روابط اتصال لجميع أماكن التداول. الكمون يختلف مع سرعة الروابط وعدد من القفزات بين الشركة والأماكن.
الشكل 2 نموذج النشر التقليدي.
• املوقع املشرتك يف مكان التداول) البورصات، مقدمي اخلدمات املالية) فسب (() السكل 3
تقوم الشركة التجارية بنشر منصة التداول الآلية في أقرب وقت ممكن إلى أماكن التنفيذ لتقليل وقت الاستجابة.
الشكل 3 نموذج النشر المستضاف.
خدمات المنحى تجارة العمارة.
نحن نقترح إطارا موجها نحو الخدمات لبناء بنية تجارية من الجيل التالي. ويوفر هذا النهج إطارا مفاهيميا ومسارا للتنفيذ يستند إلى نمطية التقليل من التبعيات وتقليلها إلى أدنى حد.
ويوفر هذا الإطار للمنشآت منهجية للقيام بما يلي:
• تقييم حالتها الراهنة من حيث الخدمات.
• إعطاء األولوية للخدمات استنادا إلى قيمتها بالنسبة لألعمال.
• تطوير منصة التداول إلى الدولة المطلوب باستخدام نهج وحدات.
تعتمد بنية التداول عالية األداء على الخدمات التالية، كما هو محدد في إطار بنية الخدمات الممثلة في الشكل 4.
الشكل 4 إطار عمل الخدمة للتداول عالي الأداء.
الجدول 1 وصف الخدمات وتكنولوجياتها.
الترابط منخفضة جدا الرسائل.
الأجهزة والأجهزة، وكلاء البرمجيات، ووحدات التوجيه.
نظام التشغيل و I / O الافتراضية، الوصول عن بعد الوصول المباشر (ردما)، محركات تفب حمولة (تو)
الوسيطة التي تتوازى معالجة التطبيق.
الوسيطة التي تسرع الوصول إلى البيانات للتطبيقات، على سبيل المثال، التخزين المؤقت في الذاكرة.
النسخ المتماثل متعدد الإرسال بمساعدة الأجهزة من خلال الشبكة؛ متعدد الطبقات 2 والطبقة 3 التحسينات.
المحاكاة الافتراضية لأجهزة التخزين (فسانز)، النسخ المتماثل للبيانات، النسخ الاحتياطي عن بعد، والمحاكاة الافتراضية للملف.
مرونة التداول والتنقل.
موازنة تحميل المحلية وموقع وارتفاع شبكات الحرم الجامعي توافر.
منطقة واسعة خدمات التطبيقات.
تسريع التطبيقات عبر اتصال وان للتجار المقيمين خارج الحرم الجامعي.
خدمة العميل رقيقة.
إزالة اقتران موارد الحوسبة من المطاريف التي تواجه المستعمل النهائي.
خدمة التراسل المنخفض جدا.
يتم توفير هذه الخدمة من قبل حافلة الرسائل، وهو نظام البرمجيات التي يحل مشكلة ربط العديد من التطبيقات لكثير. ويتكون النظام من:
• مجموعة من مخططات الرسائل المحددة مسبقا.
• مجموعة من رسائل الأوامر المشتركة.
• بنية تحتية مشتركة للتطبيق لإرسال الرسائل إلى المستلمين. يمكن أن تقوم البنية التحتية المشتركة على وسيط رسالة أو على نموذج نشر / اشتراك.
المتطلبات الرئيسية لحافلة الرسائل من الجيل التالي هي (المصدر 29West):
• أقل وقت ممكن ممكن (على سبيل المثال، أقل من 100 ميكروثانية)
• الاستقرار تحت الحمل الثقيل (على سبيل المثال، أكثر من 1.4 مليون مسغ / ثانية)
• التحكم والمرونة (مراقبة معدل وشبكات قابلة للتكوين)
هناك جهود في هذه الصناعة لتوحيد ناقل الرسائل. Advanced Message Queueing Protocol (AMQP) is an example of an open standard championed by J. P. Morgan Chase and supported by a group of vendors such as Cisco, Envoy Technologies, Red Hat, TWIST Process Innovations, Iona, 29West, and iMatix. Two of the main goals are to provide a more simple path to inter-operability for applications written on different platforms and modularity so that the middleware can be easily evolved.
In very general terms, an AMQP server is analogous to an E-mail server with each exchange acting as a message transfer agent and each message queue as a mailbox. The bindings define the routing tables in each transfer agent. Publishers send messages to individual transfer agents, which then route the messages into mailboxes. Consumers take messages from mailboxes, which creates a powerful and flexible model that is simple (source: amqp/tikiwiki/tiki-index. php? page=OpenApproach#Why_AMQP_).
Latency Monitoring Service.
The main requirements for this service are:
• Sub-millisecond granularity of measurements.
• Near-real time visibility without adding latency to the trading traffic.
• Ability to differentiate application processing latency from network transit latency.
• Ability to handle high message rates.
• Provide a programmatic interface for trading applications to receive latency data, thus enabling algorithmic trading engines to adapt to changing conditions.
• Correlate network events with application events for troubleshooting purposes.
Latency can be defined as the time interval between when a trade order is sent and when the same order is acknowledged and acted upon by the receiving party.
Addressing the latency issue is a complex problem, requiring a holistic approach that identifies all sources of latency and applies different technologies at different layers of the system.
Figure 5 depicts the variety of components that can introduce latency at each layer of the OSI stack. It also maps each source of latency with a possible solution and a monitoring solution. This layered approach can give firms a more structured way of attacking the latency issue, whereby each component can be thought of as a service and treated consistently across the firm.
Maintaining an accurate measure of the dynamic state of this time interval across alternative routes and destinations can be of great assistance in tactical trading decisions. The ability to identify the exact location of delays, whether in the customer's edge network, the central processing hub, or the transaction application level, significantly determines the ability of service providers to meet their trading service-level agreements (SLAs). For buy-side and sell-side forms, as well as for market-data syndicators, the quick identification and removal of bottlenecks translates directly into enhanced trade opportunities and revenue.
Figure 5 Latency Management Architecture.
Cisco Low-Latency Monitoring Tools.
Traditional network monitoring tools operate with minutes or seconds granularity. Next-generation trading platforms, especially those supporting algorithmic trading, require latencies less than 5 ms and extremely low levels of packet loss. On a Gigabit LAN, a 100 ms microburst can cause 10,000 transactions to be lost or excessively delayed.
Cisco offers its customers a choice of tools to measure latency in a trading environment:
• Bandwidth Quality Manager (BQM) (OEM from Corvil)
• Cisco AON-based Financial Services Latency Monitoring Solution (FSMS)
Bandwidth Quality Manager.
Bandwidth Quality Manager (BQM) 4.0 is a next-generation network application performance management product that enables customers to monitor and provision their network for controlled levels of latency and loss performance. While BQM is not exclusively targeted at trading networks, its microsecond visibility combined with intelligent bandwidth provisioning features make it ideal for these demanding environments.
Cisco BQM 4.0 implements a broad set of patented and patent-pending traffic measurement and network analysis technologies that give the user unprecedented visibility and understanding of how to optimize the network for maximum application performance.
Cisco BQM is now supported on the product family of Cisco Application Deployment Engine (ADE). The Cisco ADE product family is the platform of choice for Cisco network management applications.
BQM Benefits.
Cisco BQM micro-visibility is the ability to detect, measure, and analyze latency, jitter, and loss inducing traffic events down to microsecond levels of granularity with per packet resolution. This enables Cisco BQM to detect and determine the impact of traffic events on network latency, jitter, and loss. Critical for trading environments is that BQM can support latency, loss, and jitter measurements one-way for both TCP and UDP (multicast) traffic. This means it reports seamlessly for both trading traffic and market data feeds.
BQM allows the user to specify a comprehensive set of thresholds (against microburst activity, latency, loss, jitter, utilization, etc.) on all interfaces. BQM then operates a background rolling packet capture. Whenever a threshold violation or other potential performance degradation event occurs, it triggers Cisco BQM to store the packet capture to disk for later analysis. This allows the user to examine in full detail both the application traffic that was affected by performance degradation ("the victims") and the traffic that caused the performance degradation ("the culprits"). This can significantly reduce the time spent diagnosing and resolving network performance issues.
BQM is also able to provide detailed bandwidth and quality of service (QoS) policy provisioning recommendations, which the user can directly apply to achieve desired network performance.
BQM Measurements Illustrated.
To understand the difference between some of the more conventional measurement techniques and the visibility provided by BQM, we can look at some comparison graphs. In the first set of graphs (Figure 6 and Figure 7), we see the difference between the latency measured by BQM's Passive Network Quality Monitor (PNQM) and the latency measured by injecting ping packets every 1 second into the traffic stream.
In Figure 6, we see the latency reported by 1-second ICMP ping packets for real network traffic (it is divided by 2 to give an estimate for the one-way delay). It shows the delay comfortably below about 5ms for almost all of the time.
Figure 6 Latency Reported by 1-Second ICMP Ping Packets for Real Network Traffic.
In Figure 7, we see the latency reported by PNQM for the same traffic at the same time. Here we see that by measuring the one-way latency of the actual application packets, we get a radically different picture. Here the latency is seen to be hovering around 20 ms, with occasional bursts far higher. The explanation is that because ping is sending packets only every second, it is completely missing most of the application traffic latency. In fact, ping results typically only indicate round trip propagation delay rather than realistic application latency across the network.
Figure 7 Latency Reported by PNQM for Real Network Traffic.
In the second example (Figure 8), we see the difference in reported link load or saturation levels between a 5-minute average view and a 5 ms microburst view (BQM can report on microbursts down to about 10-100 nanosecond accuracy). The green line shows the average utilization at 5-minute averages to be low, maybe up to 5 Mbits/s. The dark blue plot shows the 5ms microburst activity reaching between 75 Mbits/s and 100 Mbits/s, the LAN speed effectively. BQM shows this level of granularity for all applications and it also gives clear provisioning rules to enable the user to control or neutralize these microbursts.
Figure 8 Difference in Reported Link Load Between a 5-Minute Average View and a 5 ms Microburst View.
BQM Deployment in the Trading Network.
Figure 9 shows a typical BQM deployment in a trading network.
Figure 9 Typical BQM Deployment in a Trading Network.
BQM can then be used to answer these types of questions:
• Are any of my Gigabit LAN core links saturated for more than X milliseconds? Is this causing loss? Which links would most benefit from an upgrade to Etherchannel or 10 Gigabit speeds?
• What application traffic is causing the saturation of my 1 Gigabit links?
• Is any of the market data experiencing end-to-end loss?
• How much additional latency does the failover data center experience? Is this link sized correctly to deal with microbursts?
• Are my traders getting low latency updates from the market data distribution layer? Are they seeing any delays greater than X milliseconds?
Being able to answer these questions simply and effectively saves time and money in running the trading network.
BQM is an essential tool for gaining visibility in market data and trading environments. It provides granular end-to-end latency measurements in complex infrastructures that experience high-volume data movement. Effectively detecting microbursts in sub-millisecond levels and receiving expert analysis on a particular event is invaluable to trading floor architects. Smart bandwidth provisioning recommendations, such as sizing and what-if analysis, provide greater agility to respond to volatile market conditions. As the explosion of algorithmic trading and increasing message rates continues, BQM, combined with its QoS tool, provides the capability of implementing QoS policies that can protect critical trading applications.
Cisco Financial Services Latency Monitoring Solution.
Cisco and Trading Metrics have collaborated on latency monitoring solutions for FIX order flow and market data monitoring. Cisco AON technology is the foundation for a new class of network-embedded products and solutions that help merge intelligent networks with application infrastructure, based on either service-oriented or traditional architectures. Trading Metrics is a leading provider of analytics software for network infrastructure and application latency monitoring purposes (tradingmetrics/).
The Cisco AON Financial Services Latency Monitoring Solution (FSMS) correlated two kinds of events at the point of observation:
• Network events correlated directly with coincident application message handling.
• Trade order flow and matching market update events.
Using time stamps asserted at the point of capture in the network, real-time analysis of these correlated data streams permits precise identification of bottlenecks across the infrastructure while a trade is being executed or market data is being distributed. By monitoring and measuring latency early in the cycle, financial companies can make better decisions about which network service—and which intermediary, market, or counterparty—to select for routing trade orders. Likewise, this knowledge allows more streamlined access to updated market data (stock quotes, economic news, etc.), which is an important basis for initiating, withdrawing from, or pursuing market opportunities.
The components of the solution are:
• AON hardware in three form factors:
– AON Network Module for Cisco 2600/2800/3700/3800 routers.
– AON Blade for the Cisco Catalyst 6500 series.
– AON 8340 Appliance.
• Trading Metrics M&A 2.0 software, which provides the monitoring and alerting application, displays latency graphs on a dashboard, and issues alerts when slowdowns occur (tradingmetrics/TM_brochure. pdf).
Figure 10 AON-Based FIX Latency Monitoring.
Cisco IP SLA.
Cisco IP SLA is an embedded network management tool in Cisco IOS which allows routers and switches to generate synthetic traffic streams which can be measured for latency, jitter, packet loss, and other criteria (cisco/go/ipsla).
Two key concepts are the source of the generated traffic and the target. Both of these run an IP SLA "responder," which has the responsibility to timestamp the control traffic before it is sourced and returned by the target (for a round trip measurement). Various traffic types can be sourced within IP SLA and they are aimed at different metrics and target different services and applications. The UDP jitter operation is used to measure one-way and round-trip delay and report variations. As the traffic is time stamped on both sending and target devices using the responder capability, the round trip delay is characterized as the delta between the two timestamps.
A new feature was introduced in IOS 12.3(14)T, IP SLA Sub Millisecond Reporting, which allows for timestamps to be displayed with a resolution in microseconds, thus providing a level of granularity not previously available. This new feature has now made IP SLA relevant to campus networks where network latency is typically in the range of 300-800 microseconds and the ability to detect trends and spikes (brief trends) based on microsecond granularity counters is a requirement for customers engaged in time-sensitive electronic trading environments.
As a result, IP SLA is now being considered by significant numbers of financial organizations as they are all faced with requirements to:
• Report baseline latency to their users.
• Trend baseline latency over time.
• Respond quickly to traffic bursts that cause changes in the reported latency.
Sub-millisecond reporting is necessary for these customers, since many campus and backbones are currently delivering under a second of latency across several switch hops. Electronic trading environments have generally worked to eliminate or minimize all areas of device and network latency to deliver rapid order fulfillment to the business. Reporting that network response times are "just under one millisecond" is no longer sufficient; the granularity of latency measurements reported across a network segment or backbone need to be closer to 300-800 micro-seconds with a degree of resolution of 100 ì ثواني.
IP SLA recently added support for IP multicast test streams, which can measure market data latency.
A typical network topology is shown in Figure 11 with the IP SLA shadow routers, sources, and responders.
Figure 11 IP SLA Deployment.
Computing Services.
Computing services cover a wide range of technologies with the goal of eliminating memory and CPU bottlenecks created by the processing of network packets. Trading applications consume high volumes of market data and the servers have to dedicate resources to processing network traffic instead of application processing.
• Transport processing—At high speeds, network packet processing can consume a significant amount of server CPU cycles and memory. An established rule of thumb states that 1Gbps of network bandwidth requires 1 GHz of processor capacity (source Intel white paper on I/O acceleration intel/technology/ioacceleration/306517.pdf).
• Intermediate buffer copying—In a conventional network stack implementation, data needs to be copied by the CPU between network buffers and application buffers. This overhead is worsened by the fact that memory speeds have not kept up with increases in CPU speeds. For example, processors like the Intel Xeon are approaching 4 GHz, while RAM chips hover around 400MHz (for DDR 3200 memory) (source Intel intel/technology/ioacceleration/306517.pdf).
• Context switching—Every time an individual packet needs to be processed, the CPU performs a context switch from application context to network traffic context. This overhead could be reduced if the switch would occur only when the whole application buffer is complete.
Figure 12 Sources of Overhead in Data Center Servers.
• TCP Offload Engine (TOE)—Offloads transport processor cycles to the NIC. Moves TCP/IP protocol stack buffer copies from system memory to NIC memory.
• Remote Direct Memory Access (RDMA)—Enables a network adapter to transfer data directly from application to application without involving the operating system. Eliminates intermediate and application buffer copies (memory bandwidth consumption).
• Kernel bypass — Direct user-level access to hardware. Dramatically reduces application context switches.
Figure 13 RDMA and Kernel Bypass.
InfiniBand is a point-to-point (switched fabric) bidirectional serial communication link which implements RDMA, among other features. Cisco offers an InfiniBand switch, the Server Fabric Switch (SFS): cisco/application/pdf/en/us/guest/netsol/ns500/c643/cdccont_0900aecd804c35cb. pdf.
Figure 14 Typical SFS Deployment.
Trading applications benefit from the reduction in latency and latency variability, as proved by a test performed with the Cisco SFS and Wombat Feed Handlers by Stac Research:
Application Virtualization Service.
De-coupling the application from the underlying OS and server hardware enables them to run as network services. One application can be run in parallel on multiple servers, or multiple applications can be run on the same server, as the best resource allocation dictates. This decoupling enables better load balancing and disaster recovery for business continuance strategies. The process of re-allocating computing resources to an application is dynamic. Using an application virtualization system like Data Synapse's GridServer, applications can migrate, using pre-configured policies, to under-utilized servers in a supply-matches-demand process (networkworld/supp/2005/ndc1/022105virtual. html? page=2).
There are many business advantages for financial firms who adopt application virtualization:
• Faster time to market for new products and services.
• Faster integration of firms following merger and acquisition activity.
• Increased application availability.
• Better workload distribution, which creates more "head room" for processing spikes in trading volume.
• Operational efficiency and control.
• Reduction in IT complexity.
Currently, application virtualization is not used in the trading front-office. One use-case is risk modeling, like Monte Carlo simulations. As the technology evolves, it is conceivable that some the trading platforms will adopt it.
Data Virtualization Service.
To effectively share resources across distributed enterprise applications, firms must be able to leverage data across multiple sources in real-time while ensuring data integrity. With solutions from data virtualization software vendors such as Gemstone or Tangosol (now Oracle), financial firms can access heterogeneous sources of data as a single system image that enables connectivity between business processes and unrestrained application access to distributed caching. The net result is that all users have instant access to these data resources across a distributed network (gridtoday/03/0210/101061.html).
This is called a data grid and is the first step in the process of creating what Gartner calls Extreme Transaction Processing (XTP) (gartner/DisplayDocument? ref=g_search&id=500947). Technologies such as data and applications virtualization enable financial firms to perform real-time complex analytics, event-driven applications, and dynamic resource allocation.
One example of data virtualization in action is a global order book application. An order book is the repository of active orders that is published by the exchange or other market makers. A global order book aggregates orders from around the world from markets that operate independently. The biggest challenge for the application is scalability over WAN connectivity because it has to maintain state. Today's data grids are localized in data centers connected by Metro Area Networks (MAN). This is mainly because the applications themselves have limits—they have been developed without the WAN in mind.
Figure 15 GemStone GemFire Distributed Caching.
Before data virtualization, applications used database clustering for failover and scalability. This solution is limited by the performance of the underlying database. Failover is slower because the data is committed to disc. With data grids, the data which is part of the active state is cached in memory, which reduces drastically the failover time. Scaling the data grid means just adding more distributed resources, providing a more deterministic performance compared to a database cluster.
Multicast Service.
Market data delivery is a perfect example of an application that needs to deliver the same data stream to hundreds and potentially thousands of end users. Market data services have been implemented with TCP or UDP broadcast as the network layer, but those implementations have limited scalability. Using TCP requires a separate socket and sliding window on the server for each recipient. UDP broadcast requires a separate copy of the stream for each destination subnet. Both of these methods exhaust the resources of the servers and the network. The server side must transmit and service each of the streams individually, which requires larger and larger server farms. On the network side, the required bandwidth for the application increases in a linear fashion. For example, to send a 1 Mbps stream to 1000recipients using TCP requires 1 Gbps of bandwidth.
IP multicast is the only way to scale market data delivery. To deliver a 1 Mbps stream to 1000 recipients, IP multicast would require 1 Mbps. The stream can be delivered by as few as two servers—one primary and one backup for redundancy.
There are two main phases of market data delivery to the end user. In the first phase, the data stream must be brought from the exchange into the brokerage's network. Typically the feeds are terminated in a data center on the customer premise. The feeds are then processed by a feed handler, which may normalize the data stream into a common format and then republish into the application messaging servers in the data center.
The second phase involves injecting the data stream into the application messaging bus which feeds the core infrastructure of the trading applications. The large brokerage houses have thousands of applications that use the market data streams for various purposes, such as live trades, long term trending, arbitrage, etc. Many of these applications listen to the feeds and then republish their own analytical and derivative information. For example, a brokerage may compare the prices of CSCO to the option prices of CSCO on another exchange and then publish ratings which a different application may monitor to determine how much they are out of synchronization.
Figure 16 Market Data Distribution Players.
The delivery of these data streams is typically over a reliable multicast transport protocol, traditionally Tibco Rendezvous. Tibco RV operates in a publish and subscribe environment. Each financial instrument is given a subject name, such as CSCO. last. Each application server can request the individual instruments of interest by their subject name and receive just a that subset of the information. This is called subject-based forwarding or filtering. Subject-based filtering is patented by Tibco.
A distinction should be made between the first and second phases of market data delivery. The delivery of market data from the exchange to the brokerage is mostly a one-to-many application. The only exception to the unidirectional nature of market data may be retransmission requests, which are usually sent using unicast. The trading applications, however, are definitely many-to-many applications and may interact with the exchanges to place orders.
Figure 17 Market Data Architecture.
Design Issues.
Number of Groups/Channels to Use.
Many application developers consider using thousand of multicast groups to give them the ability to divide up products or instruments into small buckets. Normally these applications send many small messages as part of their information bus. Usually several messages are sent in each packet that are received by many users. Sending fewer messages in each packet increases the overhead necessary for each message.
In the extreme case, sending only one message in each packet quickly reaches the point of diminishing returns—there is more overhead sent than actual data. Application developers must find a reasonable compromise between the number of groups and breaking up their products into logical buckets.
Consider, for example, the Nasdaq Quotation Dissemination Service (NQDS). The instruments are broken up alphabetically:
Another example is the Nasdaq Totalview service, broken up this way:
This approach allows for straight forward network/application management, but does not necessarily allow for optimized bandwidth utilization for most users. A user of NQDS that is interested in technology stocks, and would like to subscribe to just CSCO and INTL, would have to pull down all the data for the first two groups of NQDS. Understanding the way users pull down the data and then organize it into appropriate logical groups optimizes the bandwidth for each user.
In many market data applications, optimizing the data organization would be of limited value. Typically customers bring in all data into a few machines and filter the instruments. Using more groups is just more overhead for the stack and does not help the customers conserve bandwidth. Another approach might be to keep the groups down to a minimum level and use UDP port numbers to further differentiate if necessary. The other extreme would be to use just one multicast group for the entire application and then have the end user filter the data. In some situations this may be sufficient.
Intermittent Sources.
A common issue with market data applications are servers that send data to a multicast group and then go silent for more than 3.5 minutes. These intermittent sources may cause trashing of state on the network and can introduce packet loss during the window of time when soft state and then hardware shorts are being created.
PIM-Bidir or PIM-SSM.
The first and best solution for intermittent sources is to use PIM-Bidir for many-to-many applications and PIM-SSM for one-to-many applications.
Both of these optimizations of the PIM protocol do not have any data-driven events in creating forwarding state. That means that as long as the receivers are subscribed to the streams, the network has the forwarding state created in the hardware switching path.
Intermittent sources are not an issue with PIM-Bidir and PIM-SSM.
Null Packets.
In PIM-SM environments a common method to make sure forwarding state is created is to send a burst of null packets to the multicast group before the actual data stream. The application must efficiently ignore these null data packets to ensure it does not affect performance. The sources must only send the burst of packets if they have been silent for more than 3 minutes. A good practice is to send the burst if the source is silent for more than a minute. Many financials send out an initial burst of traffic in the morning and then all well-behaved sources do not have problems.
Periodic Keepalives or Heartbeats.
An alternative approach for PIM-SM environments is for sources to send periodic heartbeat messages to the multicast groups. This is a similar approach to the null packets, but the packets can be sent on a regular timer so that the forwarding state never expires.
S, G Expiry Timer.
Finally, Cisco has made a modification to the operation of the S, G expiry timer in IOS. There is now a CLI knob to allow the state for a S, G to stay alive for hours without any traffic being sent. The (S, G) expiry timer is configurable. This approach should be considered a workaround until PIM-Bidir or PIM-SSM is deployed or the application is fixed.
RTCP Feedback.
A common issue with real time voice and video applications that use RTP is the use of RTCP feedback traffic. Unnecessary use of the feedback option can create excessive multicast state in the network. If the RTCP traffic is not required by the application it should be avoided.
Fast Producers and Slow Consumers.
Today many servers providing market data are attached at Gigabit speeds, while the receivers are attached at different speeds, usually 100Mbps. This creates the potential for receivers to drop packets and request re-transmissions, which creates more traffic that the slowest consumers cannot handle, continuing the vicious circle.
The solution needs to be some type of access control in the application that limits the amount of data that one host can request. QoS and other network functions can mitigate the problem, but ultimately the subscriptions need to be managed in the application.
Tibco Heartbeats.
TibcoRV has had the ability to use IP multicast for the heartbeat between the TICs for many years. However, there are some brokerage houses that are still using very old versions of TibcoRV that use UDP broadcast support for the resiliency. This limitation is often cited as a reason to maintain a Layer 2 infrastructure between TICs located in different data centers. These older versions of TibcoRV should be phased out in favor of the IP multicast supported versions.
Multicast Forwarding Options.
PIM Sparse Mode.
The standard IP multicast forwarding protocol used today for market data delivery is PIM Sparse Mode. It is supported on all Cisco routers and switches and is well understood. PIM-SM can be used in all the network components from the exchange, FSP, and brokerage.
There are, however, some long-standing issues and unnecessary complexity associated with a PIM-SM deployment that could be avoided by using PIM-Bidir and PIM-SSM. These are covered in the next sections.
The main components of the PIM-SM implementation are:
• PIM Sparse Mode v2.
• Shared Tree (spt-threshold infinity)
A design option in the brokerage or in the exchange.
Details of Anycast RP can be found in:
The classic high availability design for Tibco in the brokerage network is documented in:
Bidirectional PIM.
PIM-Bidir is an optimization of PIM Sparse Mode for many-to-many applications. It has several key advantages over a PIM-SM deployment:
• Better support for intermittent sources.
• No data-triggered events.
One of the weaknesses of PIM-SM is that the network continually needs to react to active data flows. This can cause non-deterministic behavior that may be hard to troubleshoot. PIM-Bidir has the following major protocol differences over PIM-SM:
– No source registration.
Source traffic is automatically sent to the RP and then down to the interested receivers. There is no unicast encapsulation, PIM joins from the RP to the first hop router and then registration stop messages.
All PIM-Bidir traffic is forwarded on a *,G forwarding entry. The router does not have to monitor the traffic flow on a *,G and then send joins when the traffic passes a threshold.
– No need for an actual RP.
The RP does not have an actual protocol function in PIM-Bidir. The RP acts as a routing vector in which all the traffic converges. The RP can be configured as an address that is not assigned to any particular device. This is called a Phantom RP.
– No need for MSDP.
MSDP provides source information between RPs in a PIM-SM network. PIM-Bidir does not use the active source information for any forwarding decisions and therefore MSDP is not required.
Bidirectional PIM is ideally suited for the brokerage network in the data center of the exchange. In this environment there are many sources sending to a relatively few set of groups in a many-to-many traffic pattern.
The key components of the PIM-Bidir implementation are:
Further details about Phantom RP and basic PIM-Bidir design are documented in:
Source Specific Multicast.
PIM-SSM is an optimization of PIM Sparse Mode for one-to-many applications. In certain environments it can offer several distinct advantages over PIM-SM. Like PIM-Bidir, PIM-SSM does not rely on any data-triggered events. Furthermore, PIM-SSM does not require an RP at all—there is no such concept in PIM-SSM. The forwarding information in the network is completely controlled by the interest of the receivers.
Source Specific Multicast is ideally suited for market data delivery in the financial service provider. The FSP can receive the feeds from the exchanges and then route them to the end of their network.
Many FSPs are also implementing MPLS and Multicast VPNs in their core. PIM-SSM is the preferred method for transporting traffic in VRFs.
When PIM-SSM is deployed all the way to the end user, the receiver indicates his interest in a particular S, G with IGMPv3. Even though IGMPv3 was defined by RFC 2236 back in October, 2002, it still has not been implemented by all edge devices. This creates a challenge for deploying an end-to-end PIM-SSM service. A transitional solution has been developed by Cisco to enable an edge device that supports IGMPv2 to participate in an PIM-SSM service. This feature is called SSM Mapping and is documented in:
Storage Services.
The service provides storage capabilities into the market data and trading environments. Trading applications access backend storage to connect to different databases and other repositories consisting of portfolios, trade settlements, compliance data, management applications, Enterprise Service Bus (ESB), and other critical applications where reliability and security is critical to the success of the business. The main requirements for the service are:
Storage virtualization is an enabling technology that simplifies management of complex infrastructures, enables non-disruptive operations, and facilitates critical elements of a proactive information lifecycle management (ILM) strategy. EMC Invista running on the Cisco MDS 9000 enables heterogeneous storage pooling and dynamic storage provisioning, allowing allocation of any storage to any application. High availability is increased with seamless data migration. Appropriate class of storage is allocated to point-in-time copies (clones). Storage virtualization is also leveraged through the use of Virtual Storage Area Networks (VSANs), which enable the consolidation of multiple isolated SANs onto a single physical SAN infrastructure, while still partitioning them as completely separate logical entities. VSANs provide all the security and fabric services of traditional SANs, yet give organizations the flexibility to easily move resources from one VSAN to another. This results in increased disk and network utilization while driving down the cost of management. Integrated Inter VSAN Routing (IVR) enables sharing of common resources across VSANs.
Figure 18 High Performance Computing Storage.
Replication of data to a secondary and tertiary data center is crucial for business continuance. Replication offsite over Fiber Channel over IP (FCIP) coupled with write acceleration and tape acceleration provides improved performance over long distance. Continuous Data Replication (CDP) is another mechanism which is gaining popularity in the industry. It refers to backup of computer data by automatically saving a copy of every change made to that data, essentially capturing every version of the data that the user saves. It allows the user or administrator to restore data to any point in time. Solutions from EMC and Incipient utilize the SANTap protocol on the Storage Services Module (SSM) in the MDS platform to provide CDP functionality. The SSM uses the SANTap service to intercept and redirect a copy of a write between a given initiator and target. The appliance does not reside in the data path—it is completely passive. The CDP solutions typically leverage a history journal that tracks all changes and bookmarks that identify application-specific events. This ensures that data at any point in time is fully self-consistent and is recoverable instantly in the event of a site failure.
Backup procedure reliability and performance are extremely important when storing critical financial data to a SAN. The use of expensive media servers to move data from disk to tape devices can be cumbersome. Network-accelerated serverless backup (NASB) helps you back up increased amounts of data in shorter backup time frames by shifting the data movement from multiple backup servers to Cisco MDS 9000 Series multilayer switches. This technology decreases impact on application servers because the MDS offloads the application and backup servers. It also reduces the number of backup and media servers required, thus reducing CAPEX and OPEX. The flexibility of the backup environment increases because storage and tape drives can reside anywhere on the SAN.
Trading Resilience and Mobility.
The main requirements for this service are to provide the virtual trader:
• Fully scalable and redundant campus trading environment.
• Resilient server load balancing and high availability in analytic server farms.
• Global site load balancing that provide the capability to continue participating in the market venues of closest proximity.
A highly-available campus environment is capable of sustaining multiple failures (i. e., links, switches, modules, etc.), which provides non-disruptive access to trading systems for traders and market data feeds. Fine-tuned routing protocol timers, in conjunction with mechanisms such as NSF/SSO, provide subsecond recovery from any failure.
The high-speed interconnect between data centers can be DWDM/dark fiber, which provides business continuance in case of a site failure. Each site is 100km-200km apart, allowing synchronous data replication. Usually the distance for synchronous data replication is 100km, but with Read/Write Acceleration it can stretch to 200km. A tertiary data center can be greater than 200km away, which would replicate data in an asynchronous fashion.
Figure 19 Trading Resilience.
A robust server load balancing solution is required for order routing, algorithmic trading, risk analysis, and other services to offer continuous access to clients regardless of a server failure. Multiple servers encompass a "farm" and these hosts can added/removed without disruption since they reside behind a virtual IP (VIP) address which is announced in the network.
A global site load balancing solution provides remote traders the resiliency to access trading environments which are closer to their location. This minimizes latency for execution times since requests are always routed to the nearest venue.
Figure 20 Virtualization of Trading Environment.
A trading environment can be virtualized to provide segmentation and resiliency in complex architectures. Figure 20 illustrates a high-level topology depicting multiple market data feeds entering the environment, whereby each vendor is assigned its own Virtual Routing and Forwarding (VRF) instance. The market data is transferred to a high-speed InfiniBand low-latency compute fabric where feed handlers, order routing systems, and algorithmic trading systems reside. All storage is accessed via a SAN and is also virtualized with VSANs, allowing further security and segmentation. The normalized data from the compute fabric is transferred to the campus trading environment where the trading desks reside.
Wide Area Application Services.
This service provides application acceleration and optimization capabilities for traders who are located outside of the core trading floor facility/data center and working from a remote office. To consolidate servers and increase security in remote offices, file servers, NAS filers, storage arrays, and tape drives are moved to a corporate data center to increase security and regulatory compliance and facilitate centralized storage and archival management. As the traditional trading floor is becoming more virtual, wide area application services technology is being utilized to provide a "LAN-like" experience to remote traders when they access resources at the corporate site. Traders often utilize Microsoft Office applications, especially Excel in addition to Sharepoint and Exchange. Excel is used heavily for modeling and permutations where sometime only small portions of the file are changed. CIFS protocol is notoriously known to be "chatty," where several message normally traverse the WAN for a simple file operation and it is addressed by Wide Area Application Service (WAAS) technology. Bloomberg and Reuters applications are also very popular financial tools which access a centralized SAN or NAS filer to retrieve critical data which is fused together before represented to a trader's screen.
Figure 21 Wide Area Optimization.
A pair of Wide Area Application Engines (WAEs) that reside in the remote office and the data center provide local object caching to increase application performance. The remote office WAEs can be a module in the ISR router or a stand-alone appliance. The data center WAE devices are load balanced behind an Application Control Engine module installed in a pair of Catalyst 6500 series switches at the aggregation layer. The WAE appliance farm is represented by a virtual IP address. The local router in each site utilizes Web Cache Communication Protocol version 2 (WCCP v2) to redirect traffic to the WAE that intercepts the traffic and determines if there is a cache hit or miss. The content is served locally from the engine if it resides in cache; otherwise the request is sent across the WAN the initial time to retrieve the object. This methodology optimizes the trader experience by removing application latency and shielding the individual from any congestion in the WAN.
WAAS uses the following technologies to provide application acceleration:
• Data Redundancy Elimination (DRE) is an advanced form of network compression which allows the WAE to maintain a history of previously-seen TCP message traffic for the purposes of reducing redundancy found in network traffic. This combined with the Lempel-Ziv (LZ) compression algorithm reduces the number of redundant packets that traverse the WAN, which improves application transaction performance and conserves bandwidth.
• Transport Flow Optimization (TFO) employs a robust TCP proxy to safely optimize TCP at the WAE device by applying TCP-compliant optimizations to shield the clients and servers from poor TCP behavior because of WAN conditions. By running a TCP proxy between the devices and leveraging an optimized TCP stack between the devices, many of the problems that occur in the WAN are completely blocked from propagating back to trader desktops. The traders experience LAN-like TCP response times and behavior because the WAE is terminating TCP locally. TFO improves reliability and throughput through increases in TCP window scaling and sizing enhancements in addition to superior congestion management.
Thin Client Service.
This service provides a "thin" advanced trading desktop which delivers significant advantages to demanding trading floor environments requiring continuous growth in compute power. As financial institutions race to provide the best trade executions for their clients, traders are utilizing several simultaneous critical applications that facilitate complex transactions. It is not uncommon to find three or more workstations and monitors at a trader's desk which provide visibility into market liquidity, trading venues, news, analysis of complex portfolio simulations, and other financial tools. In addition, market dynamics continue to evolve with Direct Market Access (DMA), ECNs, alternative trading volumes, and upcoming regulation changes with Regulation National Market System (RegNMS) in the US and Markets in Financial Instruments Directive (MiFID) in Europe. At the same time, business seeks greater control, improved ROI, and additional flexibility, which creates greater demands on trading floor infrastructures.
Traders no longer require multiple workstations at their desk. Thin clients consist of keyboard, mouse, and multi-displays which provide a total trader desktop solution without compromising security. Hewlett Packard, Citrix, Desktone, Wyse, and other vendors provide thin client solutions to capitalize on the virtual desktop paradigm. Thin clients de-couple the user-facing hardware from the processing hardware, thus enabling IT to grow the processing power without changing anything on the end user side. The workstation computing power is stored in the data center on blade workstations, which provide greater scalability, increased data security, improved business continuance across multiple sites, and reduction in OPEX by removing the need to manage individual workstations on the trading floor. One blade workstation can be dedicated to a trader or shared among multiple traders depending on the requirements for computer power.
The "thin client" solution is optimized to work in a campus LAN environment, but can also extend the benefits to traders in remote locations. Latency is always a concern when there is a WAN interconnecting the blade workstation and thin client devices. The network connection needs to be sized accordingly so traffic is not dropped if saturation points exist in the WAN topology. WAN Quality of Service (QoS) should prioritize sensitive traffic. There are some guidelines which should be followed to allow for an optimized user experience. A typical highly-interactive desktop experience requires a client-to-blade round trip latency of <20ms for a 2Kb packet size. There may be a slight lag in display if network latency is between 20ms to 40ms. A typical trader desk with a four multi-display terminal requires 2-3Mbps bandwidth consumption with seamless communication with blade workstation(s) in the data center. Streaming video (800x600 at 24fps/full color) requires 9 Mbps bandwidth usage.
Figure 22 Thin Client Architecture.
Management of a large thin client environment is simplified since a centralized IT staff manages all of the blade workstations dispersed across multiple data centers. A trader is redirected to the most available environment in the enterprise in the event of a particular site failure. High availability is a key concern in critical financial environments and the Blade Workstation design provides rapid provisioning of another blade workstation in the data center. This resiliency provides greater uptime, increases in productivity, and OpEx reduction.
Advanced Encryption Standard.
Advanced Message Queueing Protocol.
Application Oriented Networking.
The Archipelago® Integrated Web book gives investors the unique opportunity to view the entire ArcaEx and ArcaEdge books in addition to books made available by other market participants.
ECN Order Book feed available via NASDAQ.
شيكاغو مجلس التجارة.
Class-Based Weighted Fair Queueing.
Continuous Data Replication.
Chicago Mercantile Exchange is engaged in trading of futures contracts and derivatives.
Central Processing Unit.
Distributed Defect Tracking System.
الوصول المباشر إلى السوق.
Data Redundancy Elimination.
Dense Wavelength Division Multiplexing.
Electronic Communication Network.
Enterprise Service Bus.
Enterprise Solutions Engineering.
FIX Adapted for Streaming.
Fibre Channel over IP.
Financial Information Exchange.
Financial Services Latency Monitoring Solution.
Financial Service Provider.
Information Lifecycle Management.
Instinet Island Book.
Internetworking Operating System.
Keyboard Video Mouse.
Low Latency Queueing.
Metro Area Network.
Multilayer Director Switch.
Markets in Financial Instruments Directive.
Message Passing Interface is an industry standard specifying a library of functions to enable the passing of messages between nodes within a parallel computing environment.
Network Attached Storage.
Network Accelerated Serverless Backup.
Network Interface Card.
Nasdaq Quotation Dissemination Service.
نظام إدارة النظام.
Open Systems Interconnection.
Protocol Independent Multicast.
PIM-Source Specific Multicast.
جودة الخدمة.
Random Access Memory.
Reuters Data Feed.
Reuters Data Feed Direct.
Remote Direct Memory Access.
Regulation National Market System.
Remote Graphics Software.
Reuters Market Data System.
RTP Control Protocol.
Real Time Protocol.
Reuters Wire Format.
Storage Area Network.
Small Computer System Interface.
Sockets Direct Protocol—Given that many modern applications are written using the sockets API, SDP can intercept the sockets at the kernel level and map these socket calls to an InfiniBand transport service that uses RDMA operations to offload data movement from the CPU to the HCA hardware.
Server Fabric Switch.
Secure Financial Transaction Infrastructure network developed to provide firms with excellent communication paths to NYSE Group, AMEX, Chicago Stock Exchange, NASDAQ, and other exchanges. It is often used for order routing.

Evolution and Practice: Low-latency Distributed Applications in Finance.
The finance industry has unique demands for low-latency distributed systems.
Andrew Brook.
Virtually all systems have some requirements for latency, defined here as the time required for a system to respond to input. (Non-halting computations exist, but they have few practical applications.) Latency requirements appear in problem domains as diverse as aircraft flight controls (copter. ardupilot/), voice communications (queue. acm/detail. cfm? id=1028895), multiplayer gaming (queue. acm/detail. cfm? id=971591), online advertising (acuityads/real-time-bidding/), and scientific experiments (home. web. cern. ch/about/accelerators/cern-neutrinos-gran-sasso).
Distributed systems—in which computation occurs on multiple networked computers that communicate and coordinate their actions by passing messages—present special latency considerations. In recent years the automation of financial trading has driven requirements for distributed systems with challenging latency requirements (often measured in microseconds or even nanoseconds; see table 1) and global geographic distribution. Automated trading provides a window into the engineering challenges of ever-shrinking latency requirements, which may be useful to software engineers in other fields.
This article focuses on applications where latency (as opposed to throughput, efficiency, or some other metric) is one of the primary design considerations. Phrased differently, "low-latency systems" are those for which latency is the main measure of success and is usually the toughest constraint to design around. The article presents examples of low-latency systems that illustrate the external factors that drive latency and then discusses some practical engineering approaches to building systems that operate at low latency.
Why is everyone in such a hurry?
To understand the impact of latency on an application, it's important first to understand the external, real-world factors that drive the requirement. The following examples from the finance industry illustrate the impact of some real-world factors.
Request for Quote Trading.
In 2003 I worked at a large bank that had just deployed a new Web-based institutional foreign-currency trading system. The quote and trade engine, a J2EE (Java 2 Platform, Enterprise Edition) application running in a WebLogic server on top of an Oracle database, had response times that were reliably under two seconds—fast enough to ensure good user experience.
Around the same time that the bank's Web site went live, a multibank online trading platform was launched. On this new platform, a client would submit an RFQ (request for quote) that would be forwarded to multiple participating banks. Each bank would respond with a quote, and the client would choose which one to accept.
My bank initiated a project to connect to the new multibank platform. The reasoning was that since a two-second response time was good enough for a user on the Web site, it should be good enough for the new platform, and so the same quote and trade engine could be reused. Within weeks of going live, however, the bank was winning a surprisingly small percentage of RFQs. The root cause was latency. When two banks responded with the same price (which happened quite often), the first response was displayed at the top of the list. Most clients waited to see a few different quotes and then clicked on the one at the top of the list. The result was that the fastest bank often won the client's business—and my bank wasn't the fastest.
The slowest part of the quote-generation process occurred in the database queries loading customer pricing parameters. Adding a cache to the quote engine and optimizing a few other "hot spots" in the code brought quote latency down to the range of roughly 100 milliseconds. With a faster engine, the bank was able to capture significant market share on the competitive quotation platform—but the market continued to evolve.
Streaming Quotes.
By 2006 a new style of currency trading was becoming popular. Instead of a customer sending a specific request and the bank responding with a quote, customers wanted the banks to send a continuous stream of quotes. This streaming-quotes style of trading was especially popular with certain hedge funds that were developing automated trading strategies—applications that would receive streams of quotes from multiple banks and automatically decide when to trade. In many cases, humans were now out of the loop on both sides of the trade.
To understand this new competitive dynamic, it's important to know how banks compute the rates they charge their clients for foreign-exchange transactions. The largest banks trade currencies with each other in the so-called interbank market. The exchange rates set in that market are the most competitive and form the basis for the rates (plus some markup) that are offered to clients. Every time the interbank rate changes, each bank recomputes and republishes the corresponding client rate quotes. If a client accepts a quote (i. e., requests to trade against a quoted exchange rate), the bank can immediately execute an offsetting trade with the interbank market, minimizing risk and locking in a small profit. There are, however, risks to banks that are slow to update their quotes. A simple example can illustrate:
Imagine that the interbank spot market for EUR/USD has rates of 1.3558 / 1.3560. (The term spot means that the agreed-upon currencies are to be exchanged within two business days. Currencies can be traded for delivery at any mutually agreed-upon date in the future, but the spot market is the most active in terms of number of trades.) Two rates are quoted: one for buying (the bid rate), and one for selling (the offered or ask rate). In this case, a participant in the interbank market could sell one euro and receive 1.3558 US dollars in return. Conversely, one could buy one euro for a price of 1.3560 US dollars.
Say that two banks, A and B, are participants in the interbank market and are publishing quotes to the same hedge fund client, C. Both banks add a margin of 0.0001 to the exchange rates they quote to their clients—so both publish quotes of 1.3557 / 1.3561 to client C. Bank A, however, is faster at updating its quotes than bank B, taking about 50 milliseconds while bank B takes about 250 milliseconds. There are approximately 50 milliseconds of network latency between banks A and B and their mutual client C. Both banks A and B take about 10 milliseconds to acknowledge an order, while the hedge fund C takes about 10 milliseconds to evaluate new quotes and submit orders. Table 2 breaks down the sequence of events.
The net effect of this new streaming-quote style of trading was that any bank that was significantly slower than its rivals was likely to suffer losses when market prices changed and its quotes weren't updated quickly enough. At the same time, those banks that could update their quotes fastest made significant profits. Latency was no longer just a factor in operational efficiency or market share—it directly impacted the profit and loss of the trading desk. As the volume and speed of trading increased throughout the mid-2000s, these profits and losses grew to be quite large. (How low can you go? Table 3 shows some examples of approximate latencies of systems and applications across nine orders of magnitude.)
To improve its latency, my bank split its quote and trading engine into distinct applications and rewrote the quote engine in C++. The small delays added by each hop in the network from the interbank market to the bank and onward to its clients were now significant, so the bank upgraded firewalls and procured dedicated telecom circuits. Network upgrades combined with the faster quote engine brought end-to-end quote latency down below 10 milliseconds for clients who were physically located close to our facilities in New York, London, or Hong Kong. Trading performance and profits rose accordingly—but, of course, the market kept evolving.
Engineering systems for low latency.
The latency requirements of a given application can be addressed in many ways, and each problem requires a different solution. There are some common themes, though. First, it is usually necessary to measure latency before it can be improved. Second, optimization often requires looking below abstraction layers and adapting to the reality of the physical infrastructure. Finally, it is sometimes possible to restructure the algorithms (or even the problem definition itself) to achieve low latency.
Lies, damn lies, and statistics.
The first step to solving most optimization problems (not just those that involve software) is to measure the current system's performance. Start from the highest level and measure the end-to-end latency. Then measure the latency of each component or processing stage. If any stage is taking an unusually large portion of the latency, then break it down further and measure the latency of its substages. The goal is to find the parts of the system that contribute the most to the total latency and focus optimization efforts there. This is not always straightforward in practice, however.
For example, imagine an application that responds to customer quote requests received over a network. The client sends 100 quote requests in quick succession (the next request is sent as soon as the prior response is received) and reports total elapsed time of 360 milliseconds—or 3.6 milliseconds on average to service a request. The internals of the application are broken down and measured using the same 100-quote test set:
والثور؛ Read input message from network and parse - 5 microseconds.
والثور؛ Look up client profile - 3.2 milliseconds (3,200 microseconds)
والثور؛ Compute client quote - 15 microseconds.
والثور؛ Log quote - 20 microseconds.
والثور؛ Serialize quote to a response message - 5 microseconds.
والثور؛ Write to network - 5 microseconds.
As clearly shown in this example, significantly reducing latency means addressing the time it takes to look up the client's profile. A quick inspection shows that the client profile is loaded from a database and cached locally. Further testing shows that when the profile is in the local cache (a simple hash table), response time is usually under a microsecond, but when the cache is missed it takes several hundred milliseconds to load the profile. The average of 3.2 milliseconds was almost entirely the result of one very slow response (of about 320 milliseconds) caused by a cache miss. Likewise, the client's reported 3.6-millisecond average response time turns out to be a single very slow response (350 milliseconds) and 99 fast responses that took around 100 microseconds each.
Means and outliers.
Most systems exhibit some variance in latency from one event to the next. In some cases the variance (and especially the highest-latency outliers) drives the design, much more so than the average case. It is important to understand which statistical measure of latency is appropriate to the specific problem. For example, if you are building a trading system that earns small profits when the latency is below some threshold but incurs massive losses when latency exceeds that threshold, then you should be measuring the peak latency (or, alternatively, the percentage of requests that exceed the threshold) rather than the mean. On the other hand, if the value of the system is more or less inversely proportional to the latency, then measuring (and optimizing) the average latency makes more sense even if it means there are some large outliers.
What are you measuring?
Astute readers may have noticed that the latency measured inside the quote server application doesn't quite add up to the latency reported by the client application. That is most likely because they aren't actually measuring the same thing. Consider the following simplified pseudocode:
(In the client application)
for (int i = 0; i < 100; i++)
RequestMessage requestMessage = new RequestMessage(quoteRequest);
long sentTime = getSystemTime();
ResponseMessage responseMessage = receiveMessage();
long quoteLatency = getSystemTime() - sentTime;
(In the quote server application)
RequestMessage requestMessage = receive();
long receivedTime = getSystemTime();
QuoteRequest quoteRequest = parseRequest(requestMessage);
long parseTime = getSystemTime();
long parseLatency = parseTime - receivedTime;
ClientProfile profile = lookupClientProfile(quoteRequest. client);
long profileTime = getSystemTime();
long profileLatency = profileTime - parseTime;
Quote quote = computeQuote(profile);
long computeTime = getSystemTime();
long computeLatency = computeTime - profileTime;
long logTime = getSystemTime();
long logLatency = logTime - computeTime;
QuoteMessage quoteMessage = new QuoteMessage(quote);
long serializeTime = getSystemTime();
long serializationLatency = serializeTime - logTime;
long sentTime = getSystemTime();
long sendLatency = sentTime - serializeTime;
logStats(parseLatency, profileLatency, computeLatency,
logLatency, serializationLatency, sendLatency);
Note that the elapsed time measured by the client application includes the time to transmit the request over the network, as well as the time for the response to be transmitted back. The quote server, on the other hand, measures the time elapsed only from the arrival of the quote to when it is sent (or more precisely, when the send method returns). The 350-microsecond discrepancy between the average response time measured by the client and the equivalent measurement by the quote server could be caused by the network, but it might also be the result of delays within the client or server. Moreover, depending on the programming language and operating system, checking the system clock and logging the latency statistics may introduce material delays.
This approach is simplistic, but when combined with code-profiling tools to find the most commonly executed code and resource contention, it is usually good enough to identify the first (and often easiest) targets for latency optimization. It's important to keep this limitation in mind, though.
Measuring distributed systems latency via network traffic capture.
Distributed systems pose some additional challenges to latency measurement—as well as some opportunities. In cases where the system is distributed across multiple servers it can be hard to correlate timestamps of related events. The network itself can be a significant contributor to the latency of the system. Messaging middleware and the networking stacks of operating systems can be complex sources of latency.
At the same time, the decomposition of the overall system into separate processes running on independent servers can make it easier to measure certain interactions accurately between components of the system over the network. Many network devices (such as switches and routers) provide mechanisms for making timestamped copies of the data that traverse the device with minimal impact on the performance of the device. Most operating systems provide similar capabilities in software, albeit with a somewhat higher risk of delaying the actual traffic. Timestamped network-traffic captures (often called packet captures ) can be a useful tool to measure more precisely when a message was exchanged between two parts of the system. These measurements can be obtained without modifying the application itself and generally with very little impact on the performance of the system as a whole. (See wireshark and tcpdump.)
One of the challenges of measuring performance at short time scales across distributed systems is clock synchronization. In general, to measure the time elapsed from when an application on server A transmits a message to when the message reaches a second application on server B, it is necessary to check the time on A's clock when the message is sent and on B's clock when the message arrives, and then subtract those two timestamps to determine the latency. If the clocks on A and B are not in sync, then the computed latency will actually be the real latency plus the clock skew between A and B.
When is this a problem in the real world? Real-world drift rates for the quartz oscillators that are used in most commodity server motherboards are on the order of 10^-5, which means that the oscillator may be expected to drift by 10 microseconds each second. If uncorrected, it may gain or lose as much as a second over the course of a day. For systems operating at time scales of milliseconds or less, clock skew may render the measured latency meaningless. Oscillators with significantly lower drift rates are available, but without some form of synchronization, they will eventually drift apart. Some mechanism is needed to bring each server's local clock into alignment with some common reference time.
Developers of distributed systems should understand NTP (Network Time Protocol) at a minimum and are encouraged to learn about PTP (Precision Time Protocol) and usage of external signals such as GPS to obtain high-accuracy time synchronization in practice. Those who need time accuracy at the sub-microsecond scale will want to become familiar with hardware implementations of PTP (especially at the network interface) as well as tools for extracting time information from each core's local clock. (See tools. ietf/html/rfc1305, tools. ietf/html/rfc5905, nist. gov/el/isd/ieee/ieee1588.cfm, and queue. acm/detail. cfm? id=2354406.)
Abstraction versus Reality.
Modern software engineering is built upon abstractions that allow programmers to manage the complexity of ever-larger systems. Abstractions do this by simplifying or generalizing some aspect of the underlying system. This doesn't come for free, though—simplification is an inherently lossy process and some of the lost details may be important. Moreover, abstractions are often defined in terms of function rather than performance.
Somewhere deep below an application are electrical currents flowing through semiconductors and pulses of light traveling down fibers. Programmers rarely need to think of their systems in these terms, but if their conceptualized view drifts too far from reality they are likely to experience unpleasant surprises.
Four examples illustrate this point:
والثور؛ TCP provides a useful abstraction over UDP (User Datagram Protocol) in terms of delivery of a sequence of bytes. TCP ensures that bytes will be delivered in the order they were sent even if some of the underlying UDP datagrams are lost. The transmission latency of each byte (the time from when it is written to a TCP socket in the sending application until it is read from the corresponding receiving application's socket) is not guaranteed, however. In certain cases (specifically when an intervening datagram is lost) the data contained in a given UDP datagram may be delayed significantly from delivery to the application, while the missed data ahead of it is recovered.
والثور؛ Cloud hosting provides virtual servers that can be created on demand without precise control over the location of the hardware. An application or administrator can create a new virtual server "on the cloud" in less than a minute—an impossible feat when assembling and installing physical hardware in a data center. Unlike the physical server, however, the location of the cloud server or its location in the network topology may not be precisely known. If a distributed application depends on the rapid exchange of messages between servers, the physical proximity of those servers may have a significant impact on the overall application performance.
والثور؛ Threads allow developers to decompose a problem into separate sequences of instructions that can be allowed to run concurrently, subject to certain ordering constraints, and that can operate on shared resources (such as memory). This allows developers to take advantage of multicore processors without needing to deal directly with issues of scheduling and core assignment. In some cases, however, the overhead of context switches and passing data between cores can outweigh the advantages gained by concurrency.
والثور؛ Hierarchical storage and cache-coherency protocols allow programmers to write applications that use large amounts of virtual memory (on the order of terabytes in modern commodity servers), while experiencing latencies measured in nanoseconds when requests can be serviced by the closest caches. The abstraction hides the fact that the fastest memory is very limited in capacity (e. g., register files on the order of a few kilobytes), while memory that has been swapped out to disk may incur latencies in the tens of milliseconds.
Each of these abstractions is extremely useful but can have unanticipated consequences for low-latency applications. There are some practical steps to take to identify and mitigate latency issues resulting from these abstractions.
Messaging and Network Protocols.
The near ubiquity of IP-based networks means that regardless of which messaging product is in use, under the covers the data is being transmitted over the network as a series of discrete packets. The performance characteristics of the network and the needs of an application can vary dramatically—so one size almost certainly does not fit all when it comes to messaging middleware for latency-sensitive distributed systems.
There's no substitute for getting under the hood here. For example, if an application runs on a private network (you control the hardware), communications follow a publisher/subscriber model, and the application can tolerate a certain rate of data loss, then raw multicast may offer significant performance gains over any middleware based on TCP. If an application is distributed across very long distances and data order is not important, then a UDP-based protocol may offer advantages in terms of not stalling to resend a missed packet. If TCP-based messaging is being used, then it's worth keeping in mind that many of its parameters (especially buffer sizes, slow start, and Nagle's algorithm) are configurable and the "out-of-the-box" settings are usually optimized for throughput rather than latency (queue. acm/detail. cfm? id=2539132).
The physical constraint that information cannot propagate faster than the speed of light is a very real consideration when dealing with short time scales and/or long distances. The two largest stock exchanges, NASDAQ and NYSE, run their matching engines in data centers in Carteret and Mahwah, New Jersey, respectively. A ray of light takes 185 microseconds to travel the 55.4-km distance between these two locations. Light in a glass fiber with a refractive index of 1.6 and following a slightly longer path (roughly 65 km) takes almost 350 microseconds to make the same one-way trip. Given that the computations involved in trading decisions can now be made on time scales of 10 microseconds or less, signal propagation latency cannot be ignored.
Decomposing a problem into a number of threads that can be executed concurrently can greatly increase performance, especially in multicore systems, but in some cases it may actually be slower than a single-threaded solution.
Specifically, multithreaded code incurs overhead in the following three ways:
والثور؛ When multiple threads operate on the same data, controls are required to ensure that the data remains consistent. This may include acquisition of locks or implementations of read or write barriers. In multicore systems, these concurrency controls require that thread execution is suspended while messages are passed between cores. If a lock is already held by one thread, then other threads seeking that lock will need to wait until the first one is finished. If several threads are frequently accessing the same data, there may be significant contention for locks.
والثور؛ Similarly, when multiple threads operate on the same data, the data itself must be passed between cores. If several threads access the same data but each performs only a few computations on it, the time required to move the data between cores may exceed the time spent operating on it.
والثور؛ Finally, if there are more threads than cores, the operating system must periodically perform a context switch in which the thread running on a given core is halted, its state is saved, and another thread is allowed to run. The cost of a context switch can be significant. If the number of threads far exceeds the number of cores, context switching can be a significant source of delay.
In general, application design should use threads in a way that represents the inherent concurrency of the underlying problem. If the problem contains significant computation that can be performed in isolation, then a larger number of threads is called for. On the other hand, if there is a high degree of interdependency between computations or (worst case) if the problem is inherently serial, then a single-threaded solution may make more sense. In both cases, profiling tools should be used to identify excessive lock contention or context switching. Lock-free data structures (now available for several programming languages) are another alternative to consider (queue. acm/detail. cfm? id=2492433).
It's also worth noting that the physical arrangement of cores, memory, and I/O may not be uniform. For example, on modern Intel microprocessors certain cores can interact with external I/O (e. g., network interfaces) with much lower latency than others, and exchanging data between certain cores is faster than others. As a result, it may be advantageous explicitly to pin specific threads to specific cores (queue. acm/detail. cfm? id=2513149).
Hierarchical storage and cache misses.
All modern computing systems use hierarchical data storage—a small amount of fast memory combined with multiple levels of larger (but slower) memory. Recently accessed data is cached so that subsequent access is faster. Since most applications exhibit a tendency to access the same memory multiple times in a short period, this can greatly increase performance. To obtain maximum benefit, however, the following three factors should be incorporated into application design:
والثور؛ Using less memory overall (or at least in the parts of the application that are latency-sensitive) increases the probability that needed data will be available in one of the caches. In particular, for especially latency-sensitive applications, designing the app so that frequently accessed data fits within the CPU's caches can significantly improve performance. Specifications vary but Intel's Haswell microprocessors, for example, provide 32 KB per core for L1 data cache and up to 40 MB of shared L3 cache for the entire CPU.
والثور؛ Repeated allocation and release of memory should be avoided if reuse is possible. An object or data structure that is allocated once and reused has a much greater chance of being present in a cache than one that is repeatedly allocated anew. This is especially true when developing in environments where memory is managed automatically, as overhead caused by garbage collection of memory that is released can be significant.
والثور؛ The layout of data structures in memory can have a significant impact on performance because of the architecture of caches in modern processors. While the details vary by platform and are outside the scope of this article, it is generally a good idea to prefer arrays as data structures over linked lists and trees and to prefer algorithms that access memory sequentially since these allow the hardware prefetcher (which attempts to 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.
&نسخ؛ 2018 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 2018 09:29:52 UTC.
Thanks for the nice post. 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 ?

Why Low Latency.
Clone this wiki locally.
Clone in Desktop.
Within high-frequency trading (HFT) it is almost impossible to avoid the subject of low-latency. What does low-latency mean in this context? Latency is a measure of time to get a response for a given action. To achieve low-latency a response must be fast, where fast is often measured in micro or nano seconds for HFT. HFT systems must respond in a timely manner to market events otherwise a trading opportunity is missed at best, or at worst can mean the trading algorithm is exposed to significant risk as they lag the market.
What the name low-latency does not convey is the importance of having consistent latency. It is often more important to be consistent than being fast most of the time but occasionally slow. Therefore trading systems and exchanges strive to not just offer low-latency they also try to minimise the variance. Achieving low-latency with minimal variance can be a real challenge when dealing with response times measured in microseconds, especially at the event rates which can be in the many millions per second for the largest feeds.
For a system to be very responsive when faced with large event rates then it must be incredibly efficient. There is no room for waste in such a system. Each instruction executed must pay its own way and be purely focused on the goal of processing the incoming events and responding accordingly. Design of such systems need a similar design approach to that of aircraft or spacecraft. Spacecraft are designed to be as minimalist as possible with the appropriate level of safety features. This requires a keen understanding of what exactly is required and a razor sharp focus on efficiency. No extra baggage should be carried on the way.
To minimise variance requires a full stack, or platform, understanding so that the system is always amortizing the cost of expensive operations and all algorithms have a Big-O notation of O(log n) or even better.
Variance can be introduced at all layers or the stack. At a very low level it could be SMI interrupts checking the status of hardware or system interrupts pre-empting execution. Further up the stack it could be the operating system or virtual machines managing memory that is being churned by the applications. Variance often comes from algorithms employed within the trading systems themselves traversing data structures that can cause cache-misses and O(n) processing or searching.
The design approach taken to the SBE codec has the goals of being as efficient as possible and keeping variance to a minimum while taking a risk appropriate approach to safety.
&نسخ؛ 2017 GitHub , Inc. Terms Privacy Security Status Help.
لا يمكنك تنفيذ هذا الإجراء في الوقت الحالي.
لقد سجلت الدخول باستخدام علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة. لقد سجلت الخروج في علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة.

Comments

Popular posts from this blog

الروبوت نسخة الفوركس

إشارات التداول. نسخ الصفقات من التجار الناجحين، أو التداول الاجتماعي. إشارات التداول في ميتاترادر ​​4 تسمح لك بالنسخ التلقائي للصفقات التي يقوم بها تجار آخرون في الوقت الحقيقي. يوفر العديد من التجار الناجحين صفقات الفوركس الخاصة بهم في الوصول العام إما مجانا أو مقابل رسوم معقولة، لتصبح مقدمي إشارة. استخدام الفوركس فس لنسخ الصفقات 24 ساعة في اليوم. عرض 3 200+ الإشارات الحرة والتجارية ويمكن الاطلاع على الموقع وعلى علامة التبويب إشارات من منصة التداول الخاصة بك. لراحتك، يتم فرز جميع مقدمي إشارة من نتائج التداول الخاصة بهم. يتم عرض الأكثر نجاحا في الجزء العلوي من القائمة. حدد مزود إشارة الخاص بك، والاشتراك في إشارة والبدء في نسخ صفقاتهم على حد سواء على الحسابات التجريبية والحقيقية دون أن تترك ميتاترادر ​​4. إشارة يفعل كل عمل بالنسبة لك وفقا لمعلمات التداول سوف تعيين! إذا كنت تاجرا ناجحا وتريد كسب المزيد من الدخل، تصبح مزود إشارة! شارك استراتيجية التداول مع الملايين من التجار الآخرين وكسب رسوم من المشتركين. وقد وجدت الروبوتات الفوركس لدينا أكثر. تلبية المستشارين الخبراء الأقوى الحاكمة الأسو...

انتشار الرهان الفوركس أوك الضرائب

انتشار الرهان مع فكسم. أما الرهان المالي فيتمثل في عدم فرض ضريبة على المقيمين في المملكة المتحدة وأيرلندا للاستفادة من الأسواق الصاعدة والسقوطية دون الحاجة إلى شراء أصول من السوق الأساسية. الرهانات انتشار هي أيضا خالية من العمولة ويمكن تداولها مع الرافعة المالية. لماذا انتشار الرهان؟ لا ضريبة الأرباح الرأسمالية ولا واجب ختم عند انتشار الرهان. 1. الوصول إلى الرافعة المالية. انتشار الرهان مع ما يصل إلى 200: 1 الرافعة المالية على الفوركس والمؤشرات والسلع. 2. منصة متعددة الأصول. انتشار الرهان الفوركس والمؤشرات والسلع على منصة التداول الحائز على جائزة فكسم. انتشار الرهان أو تساقط الأسواق. انتشار الرهان مرن، مما يتيح لك الاستفادة من كل من ارتفاع وانخفاض الأسواق. لماذا انتشار الرهان مع فكسم؟ عندما تنتشر الرهان مع فكسم، يمكنك التمتع: منصات متعددة وتطبيقات الجوال أحجام رهان أصغر (من 7p نقطة) لا يوجد حد أدنى للموقف أو الحد من المسافات على الفوركس وعقود الفروقات شعبية دعم العملاء الحائز على جائزة. مع انتشار الرهان، ينتشر يشمل علامة المتابعة، ولكن لا توجد عمولات لدفع جميع تكاليف التداول هي في صلب ...

آخر فوريكس نيوس-إنديا

فوركس. وكان آخر كريبتوكيرنسي بنسبة 2.94 في المائة في 14،030.00 $ في بيتستامب مقرها لوكسمبورغ الصرف. وقد تلقت الروبية بعض الدعم الجيد من ارتفاع األسهم المحلية. وحقق سهم سينسكس أكثر من 100 نقطة في التعاملات المبكرة. ولكن الدولار القوي في الخارج أبقى الروبية في الاختيار. في يوم الأربعاء، كانت الروبية قد شهدت انتعاشا طفيفا بعد هبوط الجلسة مرتين وانتهت أعلى ب 7 بيسة عند 64.96 مقابل العملة الأمريكية. وكان رئيس الوزراء ناريندرا مودي العام الماضي في خطوة مفاجئة حظرت 500 روبية و 1،000 روبية نوتس لمكافحة المال الأسود، مع الملاحظات عالية المذهب فقدان وضع العطاء القانوني من منتصف ليلة 8 نوفمبر. وقد أعطت الحكومة إشارة إلى بنك الاحتياطي الاسترالي لإصدار 200 روبية نوتس، وهي خطوة تهدف إلى تخفيف الضغط على العملة المنخفضة. ويقول الخبراء روبية. 200 ملاحظة سوف تخفف بشكل ملحوظ المعاملات. وارتفع الدولار على النحو الواجب إلى أعلى مستوى له مقابل سلة من العملات الرئيسية في نحو ثلاثة أسابيع وكان آخر عقد عند 93.849. وقال التقرير ان الروبية كانت من بين افضل العملات اداء فى العالم خلال العام الماضى وسط سوق النقد ا...