مقابلة مع مدير التكنولوجيا التنفيذي: إعداد الميزانية في ثوان معدودة
عمل أندرو فيليبس في شركة LMAX للسمسرة لمدة 17 عامًا وهو يشغل حاليًا منصب كبير مسؤولي التكنولوجيا في الشركة. ويتم قياس ميزانيته بالمللي ثانية.
على الرغم من أن زمن الوصول الشامل الذي تضمنه تقنية LMAX للتداولات عالية التردد هو 50 مللي ثانية، فإن الحد الأقصى للوقت المسموح به لأي تطبيق للعمل هو ثمانية نانوثانية. وعندما يتم قياس الميزانية بالنانوثانية، فإن حتى أصغر تأخير محتمل له تأثير سلبي.
ويقول فيليبس: “عملاؤنا هم بيوت التجارة الكبرى وهم يريدون شيئًا يعمل بسرعة كبيرة وبشكل حاسم للغاية”.
“سنقوم باختبار مختلف” كابلات تويناكس “واستخدام الاتصال المباشر بدلاً من استخدام الألياف الضوئية، لأن هناك عددًا صغيرًا ولكن قابلًا للقياس من النانوثانية يستغرق تحويل الإشارة الكهربائية إلى ضوء، ونقلها عبر الألياف، ثم تحويلها مرة أخرى إلى إشارة كهربائية.”
نهج مختلف لأداء البرمجيات
يقول فيليبس إنه عندما بدأت الشركة في بناء منصتها في عام 2010، كان من الشائع استخدام منهجية الشلال وتطوير البرنامج باستخدام لغة البرمجة C++. ومع ذلك، تم بناء بورصة LMAX باستخدام منهجية رشيقة وتم برمجتها بلغة Java.
ويقول: “إن استخدام تقنيات Agile وJava، مع نظامها البيئي الغني للغاية للاختبار، كان يُعتبر أمرًا غريبًا للغاية”.
على عكس لغة C++، حيث يتم تجميع كود التطبيق أولاً إلى برنامج كود آلي يتم تشغيله بعد ذلك مباشرة على المعالج الدقيق (المعالج)، فإن لغة Java هي لغة برمجة تستخدم التجميع وقت التشغيل. وهذا يعني أن كود Java يتم تجميعه “أثناء التشغيل” أثناء تشغيل البرنامج.
تقدم Java أيضًا إدارة مدمجة للذاكرة تسمى “جمع القمامة”، والتي يمكن أن تؤثر على أداء البرنامج، كما يوضح فيليبس: “لدينا الكثير من الأسئلة المحرجة من العملاء المحتملين حول ارتفاع زمن الوصول وجمع القمامة.
“بدأنا باستخدام JDK القياسي في عام 2013. ما أدركناه هو أن Java لديها تراث – فقد تم تصميمها لأجهزة فك التشفير وكانت في أفضل حالاتها عندما أعطيتها حوالي 4 جيجابايت من الذاكرة.”
وفقًا لفيليبس، فإن تجاوز سعة ذاكرة النظام 4 جيجابايت يعني أن أوقات جمع القمامة أصبحت غير مستقرة من منظور زمن الوصول. “لم نرغب في التخلي عن القدرة على التعبير أو سرعة الكتابة في Java، فضلاً عن نظام الاختبار، الذي دعم حقًا الكثير من نجاحنا.”
وتستخدم الشركة منصة Java من نظام Azul للتغلب على قيود الذاكرة في بيئة Java القياسية. ويضيف فيليبس: “في ذلك الوقت، إذا كان لدي خادم يحتوي على 64 جيجابايت من الذاكرة، فإن تجنب جمع القمامة كان أمرًا ضروريًا”.
يقول أزول إن جمع القمامة لا يتم إلا كملاذ أخير. “هذا أمر رائع بالنسبة لنا لأننا كنا نعمل على خفض زمن انتقال البيانات لدينا في ذلك الوقت من ميلي ثانية إلى ما نحن عليه الآن، وهو 50 ميكروثانية.”
وفي غضون تلك النافذة الصغيرة التي لا تتجاوز 50 ميكروثانية، يحدث الكثير من الأشياء. ويضيف فيليبس: “50 ميكروثانية هي الوقت الذي يستغرقه تقديم الطلب على حافة شبكتنا، حتى معالجته ومطابقته ثم إرسال الإقرار مرة أخرى”.
“بصرف النظر عن كوني مطورًا محترفًا للمترجمين، فأنا أتحدى حتى المبرمجين المتميزين للغاية أن يتفوقوا على المترجمين من حيث التحسين”
أندرو فيليبس، LMAX
مع هذه النافذة التي تبلغ 50 ميكروثانية، لا يتبقى لك سوى ثمانية نانوثانية لتشغيل كود Java، حيث يحدث أغلب التأخير أثناء مرور المعاملة عبر البنية الأساسية للشبكة إلى الخادم. ويعتقد فيليبس أن Java، كلغة برمجة، أفضل في تحسين الكود مقارنة بشخص يكتب الكود يدويًا لتحقيق أداء عالٍ.
“لقد جئت من خلفية C وC++ وFortran، وكنت أميل إلى الهروب إلى لغة التجميع لجعل الأشياء تعمل بشكل أسرع. [Java] “يبدو الأمر مخالفًا للمنطق إلى حد ما”، كما يقول.
وفقًا لفيليبس، فإن المعالجات الدقيقة الحديثة معقدة للغاية لدرجة أنه إذا اختار المطور كتابة شيء ما بلغة C أو C++، فسيتم تحسين الكود فقط لهندسة المعالج “المستهدفة” التي قام المطور بتكوينها في أداة المترجم C أو C++.
يقول “إن إحدى مزايا تشغيل Java هي أنها مُحسَّنة للمعالج الذي تعمل عليه. وهذا قد يكون مهمًا للغاية. وبصرف النظر عن كوني مطورًا محترفًا للمترجمات، فأنا أتحدى حتى المبرمجين المتميزين للغاية أن يتفوقوا على المترجمين من حيث التحسين”.
عادةً ما يستخدم مبرمج C++ مُجمِّع C++ على جهاز التطوير الخاص به لتجميع التطبيق، باستخدام معالج الخادم كهندسة مستهدفة. يتم إصلاح هذا الأمر فعليًا، ويتم تحسين التطبيق فقط لمعالج الخادم هذا.
ولكن كما يشير فيليبس، فإن بيئات التطوير والاختبار قد تكون عبارة عن عدة أجيال من بنية المعالج خلف خوادم الإنتاج. ومن المرجح أيضًا أن تعمل بيئات التدريج، حيث يتم نقل التعليمات البرمجية قبل الدخول إلى الإنتاج، على تشغيل أجيال أقدم من معالجات الخوادم.
جافا قادرة على تحسين الكود في وقت التشغيلوبالتالي، يمكنك الاستفادة من أي ميزات تسريع الكود المتوفرة على الأجهزة المستهدفة التي يتم تشغيل الكود عليها.
يقول فيليبس: “بسبب كوني من غير المؤمنين إلى حد ما، كنت متشككًا إلى حد كبير في قدرة جافا على القيام بذلك. لقد تحولت بعد أن خضت مسابقة برمجة بيني وبين مبرمج جافا ماهر، حيث كتبت بلغة سي و لغة التجميع“لم أتمكن من التغلب على سرعة برنامج Java.”
عندما سُئل عن أكبر التحديات التي يواجهها، قال فيليبس: “أكبر شيء يبطئني في Java هو القدرة على الوصول إلى قدر كبير من الذاكرة مع فترات تأخير حتمية منخفضة للغاية. هذا هو أحد تحدياتنا الهندسية الرئيسية. ربما تكون أكبر مشكلة أواجهها الآن هي فترة تأخير الذاكرة”.
اختراقات في تكنولوجيا زمن الوصول المنخفض
يقول فيليبس إنه معجب بالفرص التي توفرها تقنية Compute Express Link (CXL) فيما يتعلق بتقليل زمن انتقال البيانات بين الأجهزة. حيث تعمل تقنية Compute Express Link (CXL) على تمكين الاتصال المباشر بين أجزاء مختلفة من الأجهزة من خلال الذاكرة.
ويقول: “إن CXL لديها إمكانات هائلة لتغيير ما نقوم به تمامًا لأن الاختلاف بين ناقل الذاكرة والناقل المحيطي وطبقة الشبكة يبدأ في الاختفاء في طبقة واحدة”.
ومع ذلك، في حين تم الترويج لـ CXL باعتبارها تقنية من شأنها أن تغير أجهزة الكمبيوتر في غضون بضعة أشهر، لم تكتسب هذه الفكرة أي زخم بعد. ويضيف فيليبس، مستخدمًا تشبيهًا بين CXL وطاقة الاندماج: “إنها دائمًا 10 سنوات. فكرة إجراء عملية عن بعد “إن المكالمات عبر نسيج CXL جذابة للغاية.”
بالنسبة لفيليبس، توفر CXL طريقة للتغلب على تكلفة بروتوكولات الشبكة التقليدية. “كل شيء يعمل على عنوان IP الخاص بـ UDP أو عنوان IP الخاص بـ TCP، والتي هي [networking] البروتوكولات المصممة في الستينيات وأوائل السبعينيات عندما تم استخدام مودم الاتصال الهاتفي [connectivity] “كانت على أحدث طراز.”
في حين أنه يعترف بـ “الجهد الهندسي الرائع” الذي سمح لهذه البروتوكولات بالتطور إلى حيث هي الآن مع إيثرنت 25 جيجابت، يقول فيليبس: “سيكون من الرائع أن تجعل الأمور أسرع بكثير إذا لم يكن لدينا تكلفة تغليف IP”.
يساعد هذا العمل المستمر لاستكشاف فن الممكن شركة LMAX على معالجة معاملات التداول بأقل قدر من التأخير الذي تسمح به قوانين الفيزياء، مما يمنح الشركة حماية، ويمكّنها من التعامل مع إنتاجية عالية بشكل غير متوقع.
على سبيل المثال، يتذكر فيليبس مقدار التقلب الهائل في سوق العملات المشفرة الذي حدث العام الماضي والذي أدى إلى هبوط بورصات العملات المشفرة، ويقول: “لم نهبط. في الواقع، شهدنا ارتفاعًا هائلاً في الحجم حيث كان الناس ينقلون المخاطر على بورصتنا إلى بعضهم البعض”.
وعلى الرغم من أن حجم التداول لم يكن قريبًا من الحد الأقصى الذي يمكن لشركة LMAX التعامل معه، إلا أنه يقول إن الشركة كانت قادرة على التعامل مع التداول في سوق العملات المشفرة بالكامل – ووفقًا لفيليبس – كان هناك الكثير من المساحة.