ChiefMonkeyGrinder writes "This summer, the London Stock Exchange decided to move away from its Microsoft .Net-based trading platform, TradElect. Instead, they'll be using the GNU/Linux-based MillenniumIT system. The switch is a pretty savage indictment of the costs of a complex .Net system. The GNU/Linux-based software is also faster, and offers several other major benefits. The details provide some fascinating insights into the world of very high performance — and very expensive — enterprise systems. ... [R]ather than being just any old deal that Microsoft happened to lose, this really is something of a total rout, and in an extremely demanding and high-profile sector. Enterprise wins for GNU/Linux don't come much better than this."
Actually from what I have seen.net is a good development environment. Mono has produced some very nice software for the Linux desktop that lots of people use. What I didn't get from this story was just what they where using for the development system? I doubt that it is all in c or c++ so maybe they are using mono.
The TradElect system was originally developed by Microsoft and Accenture so it was to be a showcase of how excellent.NET was.
Unfortunately, other companies showed how good their stuff was for this kind of work, and MS showed that you cannot polish a turd.
(well, ok,.NET would have created a system that would run your line-of-business apps without problem, but when it comes to very high performance, low latency systems, its simply not suitable, a bit like Java is not suitable for nuclear reactors).
The new system will be written entirely in a lower level language, and MilleniumIT does use C++ - take a look at their jobs board and you'll see the only skill referenced is C++.
It doesn't take a rocket scientist to work out that a GC-based, VM-based language that has layers of intermediate execution is going to be slower than is required for a trading system. What I don;t get is that MS thought they could throw hardware at it until it worked. Don't forget that MilleniumIT also was bought for $30m which is roughly half what the.NET system cost (£40m).
The moral is that you don't want to use the simple-to-code MS platform when you can get a best-of-breed system, based on Linux and good engineering for a lot less. IT managers around the world should be looking at this and thinking what similar lessons their IT departments could learn.
Actually you can polish a turd, it was a surprising result from a Mythbusters episode a while back. Denser turds turn out especially shiny.
Otherwise your post was spot on. I think the concept behind.Net can be very useful in the Enterprise environment, primarily in areas where efficient memory/processor management of apps from multiple vendors is required. This particular case seems more suited to the pure process effeciency you get with C and C++. The only thing that seems strange is the cost disparity..NET apps are usually much cheaper to develop, and the hardware costs would have to be astronomical to make up the difference were that the case. Obviously something about the structure of.Net did not fit the application and had to be worked around in a big way. Of course I've also seen projects whose primary costs have nothing to do with actually engineering or delivering the system.
As for GC. Well, unless you can develop a system that eliminates memory allocation altogether and uses no threading while doing it. Good GC based environments (like CLR/Mono) are almost always faster than straight memory allocation. I highly recommend you research it... and if you're going to try and prove it with 5 lines of code, don't waste your time. That's not a real world test.
Speaking as a real-time programmer, GC and memory allocations are enormously damaging to system performance. You really do need to switch to an almost statically allocated approach, with no memory allocations in real-time execution segments. The x86 architecture has special instructions to make the use of Base Pointer, Stack Pointer, and Index Pointer based memory access usable. If you ever program on a less powerful processor, like an 8-bit PIC microcontroller, you would quickly discover that indirect memory accesses have significant timing penalties. Direct memory access, where data is at fixed locations in system memory, can be accessed in a single instruction on almost all architectures.
The second problem is that dynamic memory allocation has an unbounded maximum execution time. It can also be incredibly difficult to prove that memory accesses do not fragment, and that the program can execute in bounded memory space. Proving finite execution times and finite resource issues are major issues for a real-time system. In soft real-time systems, some forgiveness is tolerable. However, if you are in a language like C# and discover that one block of code is rate limiting because of memory allocation issues, how do you overcome the problem? In C/C++, you can statically allocate the memory blocks and work around the problem. In Java/C#, the issue is pretty much the end of the project.
Test it instead for example with an XML parser that generates a DOM tree and then deletes/dereferences it.
Simply put, you can't have algorithms like that in programs with bounded maximum execution times. What happens if the XML file is corrupt? Excessively large? A pathological case deliberately designed to take down the London Stock Exchange? An unbounded tree based on a customer provided data file is a bug in a LSE style application.
Whenever I am looking at code blocks that need to execute quickly, the first thing I look for is blocks of code with unbounded memory, or unbounded execution times. C# encourages using these blocks of code. Real-time software requires using a small subset of available computer science techniques. Language and library support for this must be present.
The article was clear that they were not dumping.Net just because it was.Net, but dumping the application and system that just happened to use.Net. They also dumped the out-source model and actually bought the company that makes the new product so that they would have more in-house control. The.Net thing is just a minor quibble in the big story.
The languages are merely tools; the bigger picture is about the application and the customers. The problem with Microsoft's approach to being a "solutions provider" is that they're too focused on pushing their tools and technology, with the actual application being an afterthought. That is, they're Microsoft focused, not customer focused.
At the end of the day, the London Stock Exchange could not care less what the developers think about the language they're using, or even what the operating system is. They're not trying to stick a finger in the eye of Microsoft or promote open source, they just want a product that does what they want at the best price they can get.
But seriously what is wrong with having a registry?
You can't do this in registry:
... #X11Forwarding - Specifies whether X11 forwarding is permitted. Default is "no" #rastos: changed to "yes" because boss B asked for it in e-mail sent on 7th of Oct 2009 #rastos: with Subject "I'll throw some more chairs if this does not work tonight!" X11Forwarding yes ...
Hehe:) For those that are interested, they still have a InfoElect case study [microsoft.com] from 2006 posted on their site, which I believe was the the precursor to TradElect.
Actually, in retrospect, I supposed they *are* being truthful there..
It says 100% reliable on high-volume trading days... so any day where it doesn't work won't be a high-volume day (because it doesn't work, there won't *be* any volume)
In other words, this is marketspeak for the redundant phrase "when it doesn't work, you won't be able to use it".
"Enterprise wins for GNU/Linux don't come much better than this."
Enterprise wins like this are happening all the time for Linux and other free software options. What makes this unique is MS touted LSE running their system as a huge win for their solution. The fact it gets ripped out a year latter for Linux is marketing gold if free software needed to market.
As one other note, while OSS fanatics (I'm quite keen about OSS, but not quite a fanatic) go apeshit about this - This was more "switched from Accenture to running it `in house' in the form of a large team of low-paid talent in Sri Lanka" way more than it was "abandoned.NET for Linux! Rah rah rah!". The fact that people are hilariously so focused on the latter while missing the former speaks to how incredibly myopic people can be.
As far as reliability, purportedly the LSE had a single day of problems caused by never qualified reasons.
Purportedly a single day of problems?
The exchange shut down during a high-volume trading session. That's not purported, that's fact. What's purported is the number of times HVTs observed execution delays on the LSE at other high-volume times... and that's one reason Euronext has been claiming increasing market share from LSE.
The LSE sounds like it has very incompetent technical leadership, and this sounds very pie-in-the-sky-ish. So now in return for selecting this Sri Lankan company, they get 100% ownership (???) of some speculative wish. Great..NET is a fantastic development environment, and it is fantastic for virtually any size websites. Probably not so great for real-time trading, though throw enough specialization at it and you can get whatever you want out of it.
Wait, Microsoft + Accenture built a piss-poor platform. As you may recall, Accenture is a giant in the consulting business. Their combined efforts failed miserably.
Linux is the OS of most large trading systems. This has been covered on slashdot before.
MilleniumIT has a proven product in deployment in several exchanges. Their product is not pie-in-the-sky. It works. They've had several big wins in the past decade. They've been collaborating with Intel on optimizing their platform. Their transaction processing times are an order of magnitude better than LSE's current system.
So, I'm not sure what your angle is... are you trolling? Astroturfing? Or just spouting knee-jerk reactionism without any kind of basis in reality? A quick googling might have helped you out a bit.
and the "pie in the sky" element is that one of the reasons they decided to acquire this company is because now they have stars in their eyes about the great things they are going to do.
Pie-in-the-sky is unobtainable by definition. Are you claiming that LSE won't be able to implement a trading platform with lower latency and better uptime than their current system? Or are you just claiming that LSE & MilleniumIT are being a little too optimistic in their press releases? Because the latter of those two is probably true.
Gosh, you got it all covered there. I guess you provided a savage indictment of my post. Or maybe I'm actually a realist, and see a lot of people doing a hilarious happy dance far too prematurely. That's what she said!
You made a very generic post about pie-in-the-sky cheap outsourcing to Sri
Lanka. You appeared to have little-to-no actual knowledge of the subject, since none was communicated in you post (except the mention of Sri Lanka, which was gleanable from the first comment to the article on the site it was originally posted). You do not appear to be familiar with MilleniumIT.
You call yourself a realist... yet realistic perspective is dependent upon knowledge of the subject. It's well known that most trading platforms are faster than the piece of crap they had on the LSE... often more than 25ms faster, which means that it was faster to trade on Euronext.
But you know... whatever man... you can try to backtrack and defend your reactionary post however you want... you simply made claims that don't stack up to reality.
LSE isn't going to run setup.exe (sorry./setup.so), they're going to have to do some large-scale integration work and customization to make it work with their system...?
Huh? Trading platforms are trivial applications. Send data down the wire. Commit it. Get data back. Typically, these systems have multiple servers per stock offered at the exchange, each of them acting as a market maker/auctioneer to each others (trivial, a 10KB binary can do it, VERY QUICKLY). Each of the machines buffer trading history until it can be sent to the clearing house.
There's little need to "customize" Linux. Linux already deals with the networking part just fine.
The issue is writing the software using an easily maintainable, testable, and rigorously provable language. Credit Suisse is using Haskell for this purpose, very successfully. The only real difficulty is implementing the exchange rules regarding sorting the stock orders. That's going to be a real issue in any language. Sorting large sets is always expensive (but can be done in parallel).
I find it humorous how quickly so many want to bask in the glow of this, using it as proof of something, when I'm fairly certain that it was discarded as proof of nothing when the LSE first went the.NET route.
Well, someone [microsoft.com] certainly thought LSE was proof of something, why otherwise would they have bragged [microsoft.com] about it? Now that that bragging has been shown [guardian.co.uk] to be moot [computerworlduk.com] surely you can understand this modest amount of schadenfreude?
.Net is just a specification and a bunch of languages. There is an open source implementation of.Net itself and certainly many open source projects written in C#. "Rejects windows for open source" would have been a more appropriate headline. I hope they still use some kind of language with bounds checking and type safety, given the dangers of buffer overrun exploits in a national stock trading system.
If you're trying to shave run time on complex functions down to sub millisecond times, I would expect that bounds checking, type safety, and thread safety are low on your concerns.
Curiously enough, C# lets you drop both bounds checking and type safety to exact same extent [microsoft.com] as plain C, with corresponding performance gains.
It should also come as absolutely no surprise that a C++ pointer based linked list running native locally on the OS performs faster than a.Net Generics List running as CLR in the.Net run-time environment.
What do you mean by "performs faster"? Iteration? Indexing? Insertion at front? Insertion at end? Removal? This is a surprisingly vague statement...
I can bet you $1000 that System.Collections.Generic.List<int> will significantly outperform std::list<int> on indexed access on lists of significant size, for example, simply because the former is array-backed, and the latter is a doubly linked list. This is just to show how meaningless your comparison is.
Now, yes, if you write idiomatic C# code for a linked list (using GC heap allocated objects and tracked references), it will be slower than equivalent C++ code because of all the safety checks (like null checks). But, of course, you can also use C# raw pointers and structs to write exact same code you would write for a linked list in C, and that would work just as fast (since it would compile to pretty much the same native code in the end).
This is all nice and stuff in theory. Every so often, people sometimes like to try to argue that code running under a VM such a java or C# with.Net are "as fast" or faster than machine-compiled code from C or C++ because of JIT and runtime optimizations and whatnot. Unfortunately, the reality just doesn't follow the theory. In real-world benchmarks, managed code is not faster than pre-compiled machine code. Period. This is just more evidence of what we already know. If the goal is sub-ten millisecond latency (and it is for stock exchange systems), LSE apparently never met that goal while other C++ solutions have for years. We can talk to death about data structure implementations and whatnot, but at the end of the day, we'll need to look around and see what the real-world results are telling us.
Yes, the list is contiguous in memory but that list is just a list of object pointers. The data is scattered around the heap just like the linked list data is scattered around the heap. Fast access to the object pointer does not yield any speed boosts. In C++ you could create an array of actual objects and then all the objects are contiguous in memory and incrementing to the next object is incrementing a point by sizeof(theObject). For small objects, you might be within the range of the memory cache on each increment. The managed object system most likely cannot possibly put the actual objects into contiguous memory and so you still have the cache misses when dereferencing the object pointers.
So, tell us again who understands access characteristics of linked lists and array lists better?
Yes, the list is contiguous in memory but that list is just a list of object pointers... In C++ you could create an array of actual objects and then all the objects are contiguous in memory and incrementing to the next object is incrementing a point by sizeof(theObject). For small objects, you might be within the range of the memory cache on each increment. The managed object system most likely cannot possibly put the actual objects into contiguous memory and so you still have the cache misses when dereferencing the object pointers.
Not necessarily - this isn't true for any primitive types like int or float, and this isn't true for any user-defined structs.
Unlike Java, C# lets you define your own types that don't have to be heap-allocated. For such types, exact same technique that you describe for C++ can also be used.
A generic list, even if it is array based, is going to be on the stack an array of pointers to other points of the stack and the heap.
If you use STL, then std::vector will also allocate its backing store array on heap.
On the other hand, if you use C#, you can use stackalloc [microsoft.com] to get a stack-allocated, non-GC-tracked array.
Managed.NET arrays (not stackalloc or unmanaged heap allocated) will still be slower because there are bound checks for element access (though JIT can eliminate them sometimes when it sees that they can never fail).
Mutable generic collection classes are even more slow, because they also have safeguards to do things like throwing an exception if you get an enumerator for a collection, then remove an item from that collection, and then try to move the enumerator (whereas in C++, doing same thing for a vector would just render all active iterators invalid, and their use would lead to a crash at best, and silent data corruption at worst). This is achieved by storing a "version number" for a collection (just as plain int) which incremented it on every insertion/removal - and which enumerators check against every time you move them. Naturally, this increment happening on every insert also slows things down.
Why is this news? Sun/Solaris dominated the high-end financial sector for ages...any exchange/trading house/equity firm/etc that is using Windows is insane IMHO. Linux is just the most recent unix platform to show up in the sector, it's not revolutionary...
...it's news because Microsoft bragged on.NET being in the LSE for a couple of years, pointing to it as proof that they were enterprise-ready and such.
Then at about this time last year, the TradElect system (which was the.NET bits which ran the LSE) went 'splat', taking the London Stock Exchange down with it.
The relevant info should be sitting right there in TFA.
any exchange/trading house/equity firm/etc that is using Windows is insane IMHO
You mean like an exchange that was the cornerstone of MS's advertisements for 2 years? About how.NET was so scalable, it was used in the exchange, and SQL Server was so wonderful, it was used in the exchange...
Well, it was the cornerstone of advertising until the exchange had a few day long technical outtage a year or so ago.. That left people in the dark, and they had to suspend all trading for a few days.. suddenly, the ads stopped.
Didn't the New York Stock Exchange move over to Linux because Microsoft couldn't provide a good, low-latency RT kernel? They begged Microsoft, wanted to stay with Microsoft, and Microsoft couldn't provide them with a solution.
They never were with Microsoft, at least not in the Chicago Operations Center when I worked for them. They were pretty hard-core Solaris, and slowly began switching their systems to Linux.
while TradElect is based on Microsoftâ(TM)s.Net technology. The choice of the latter, which has raised quite a few eyebrows in the market, is defended by Lester. He claims that LSE is coming off TradElect not because of the.Net technology itself (although its trading speed is 2.7 milliseconds compared to Linux-based Chi-Xâ(TM)s 0.4 milliseconds), but âfor more control, less costs, and the ability to build and innovateâ(TM). Furthermore, he describes LSEâ(TM)s experience with.Net as âvery positiveâ(TM).
i will grant that the 2.7 ms benchmark is definately slower than.4 ms. However, i don't think you can benchmark the trading speed of.Net, only the trading speed of TradElect. Last time i checked msdn, there was no System.StockExchange namespace provided with the.net framework.
These articles sound more like MilleniumIT's just got a faster, nicer, cheaper product than TradElect. It sounds to me like Accenture failed, not.net
Having read the article, and having traded equities on the London Stock exchange and Borsa Italiana for twenty years, I must say that I believe that the declaration that it was not a performance issue is correct.....to the point that I suspect that no amount of performance gains on Microsoft's part would have turned the scales. Stock Exchanges are not national monopolies anymore, even if the few remaining big ones are gobbling each other. Controlling the technology involved is much more important than a slight performance hit. The London stock exchange scores a double hit on this one, since not only it will own the system, but the internals of said system will be open source, freeing it for example from limitation of sale to third parties by the US government. And anyway, when an istitution that big uses only Microsoft inhouse, is like having another stakeholder on your back, with an agenda of its own, like having you switch soon to the latest and greatest of its Server suite, if only for its publicity value. By doing the move, LSE is back to setting its own pace. I wish I could do the same on my desktop in the office.
Anyone who was ever fool enough to believe that Microsoft software was
good enough to be used for a mission-critical operation had their face
slapped this September when the LSE (London Stock Exchange)'s
Windows-based TradElect system brought the market to a standstill for
almost an entire day. While the LSE denied that the collapse was
TradElect's fault, they also refused to explain what the problem really
wa. Sources at the LSE tell me to this day that the problem was with
TradElect.
Since then, the CEO that brought TradElect to the LSE, Clara Furse, has
left without saying why she was leaving. Sources in the City-London's
equivalent of New York City's Wall Street--tell me that TradElect's
failure was the final straw for her tenure. The new CEO, Xavier Rolet,
is reported to have immediately decided to put an end to TradElect.
TradElect runs on HP ProLiant servers running, in turn, Windows Server
2003. The TradElect software itself is a custom blend of C# and.NET
programs, which was created by Microsoft and Accenture, the global
consulting firm. On the back-end, it relied on Microsoft SQL Server
2000. Its goal was to maintain sub-ten millisecond response times,
real-time system speeds, for stock trades.
It never, ever came close to achieving these performance goals. Worse
still, the LSE's competition, such as its main rival Chi-X with its
MarketPrizm trading platform software, was able to deliver that level
of performance and in general it was running rings about TradElect.
Three guesses what MarketPrizm runs on and the first two don't count.
The answer is Linux.
It's not often that you see a major company dump its infrastructure
software the way the LSE is about to do. But, then, it's not often you
see enterprise software fail quite so badly and publicly as was the
case with the LSE. I can only wonder how many other Windows enterprise
software failures are kept hidden away within IT departments by
companies unwilling to reveal just how foolish their decisions to rely
on archaic, cranky Windows software solutions have proven to be.
I'm sure the LSE management couldn't tell Linux from Windows without a
techie at hand. They can tell, however, when their business comes to a
complete stop in front of the entire world.
So, might I suggest to the LSE that they consider Linux as the
foundation for their next stock software infrastructure? After all,
besides working well for Chi-X, Linux seems to be doing quite nicely
for the CME (Chicago Mercantile Exchange), the NYSE (New York Stock
Exchange), etc., etc.
From now on, it will no longer possible to take refuge in the idea that you can't get fired for keeping with Microsoft.
the CEO that brought TradElect to the LSE, Clara Furse, has left without saying why she was leaving. Sources in the City-London's equivalent of New York City's Wall Street--tell me that TradElect's failure was the final straw for her tenure.
Might I suggest teak? I suppose you could go with faux finished MDF if you are on a budget, but teak is beautiful and will last forever. Then if you have any money left over, nothing says "I have arrived" like a porcelain fountain.
They had $60M to throw into development. There's a good chance it's as fast as they could make it.
Also, Microsoft gets to crow about the awesome power of their platform when they "win" these big installations. It's only fair we get to revel in it when they stub their toe on them.
Strictly speaking, it isn't. However, back before they made the change, the deployment of the app was supposed to be a ringing endorsement of the platform. It was one of the most prominent "get the facts" cases. So, although the relationship between the quality of the app and the quality of the platform isn't obvious in either direction, there is certain symmetry here. If the app's success was going to be an endorsement, and was hyped as such, its failure can plausibly be considered an indictment.
You are incorrect, they are trading a $65 million dollar piece of software for a $30 million COMPANY. They bought the MilleniumIT company that had ALREADY IMPLEMENTED a trading platform. They bought the company for the platform, and now they control the development of the platform going forward in house. They are not trading one IT consultancy for another, as they now OWN the software and the company that built it.
However, they state the platform they bought ALREADY achieves 6 times the performance of the piece of software built by accenture (.4ms vs 2.7ms transaction times).
While I agree that this is more of an indictment of Accenture's apparently shoddy work than of.NET itself, the fact that they've had 6 years (the article states the TradElect software/project was started in 2003) and $65 million dollars thrown at the problem and haven't been able to make the software perform better does raise some eyebrows about the underlying technology as well.
If you're over 300 kilometers away from the server, a one-way transaction will take more than 1 millisecond at the speed of light anyway. If millisecond gaps were that important, you'd hear about global disparities directly related to distances from the stock exchange servers.
Democratic Senators Charles Schumer and Ted Kaufman urged the commission to halt the practice, arguing frequent traders use technology to profit from access to information not available to retail investors.
Flash traders have direct connections to the NYSE exchange and pay large sums just for bandwidth to make sure the trades are almost real time. Goldman Sachs is a key participator in this.
That said, their trades often have no human interaction and generally are computers following trading algorithms only a block away from the exchange with a direct fiber line to the office. It would be impossible otherwise.
Some traders have been raising a stink over this, but generally the miliseconds do count.
The maximum allowable time for a flash is 500 milliseconds, or half a second, although most of the markets flash routable orders for under 30 milliseconds.
Of course I don't know how the LSE handles flash trading or even wants it but I'm going to assume they need everything to be as real time as possible. You just don't hear the finacial firms complaining about the disparities simply because they have the money to set up the transactions their servers pretty much next to the exchange itself (if not in the same building).
It was cheaper for them to buy the WHOLE COMPANY that had built this technology, than it was to continue running/maintaining a.NET application. The.NET application was built and maintained by accenture, who can just as easily hire cheap devs in india or sri lanka as any other outsourced IT consultancy.
Also, they specifically state multiple times that the.NET solution would not scale to meet their needs, the quoted stats are 2.7ms/transaction in.NET and the linux app performs the same transaction in.4ms... So the linux system can handle 6-7 times the transactions on the same hardware...
They are talking about scaling up from 100 million transactions a day to 5-6 billion, so, yeah having to buy 6 times less hardware will probably save them some cash.
If you had read the earlier articles on the TradElect fiasco, you would have known that it was basically written and designed by Microsoft itself. Accenture had a very heavy involvement in the project straight from Redmond.
So yes, this is an outright condemnation of the quality of Microsoft's products.
Uhh... I've never seen this level of RTFA and.. man this is slashdot where that is the norm.
the LSE ALREADY ENTERED A PURCHASE AGREEMENT TO BUY THE COMPANY that ALREADY BUILT A TRADING PLATFORM THAT IS BEING USED TODAY IN OTHER EXCHANGES! The deal closes in the next week or 2. The article says 95% of the "Non-Refundable" parts of the deal have already been transacted. Neither the LSE nor Millenium IT (the Sri Lankan company that is being purchased) is walking away from this deal.
You don't spend $30 million dollars and purchase a company if you aren't moving your software to that platform. The article states they already had a trial phase and brought in originally 20 platforms, shortlisted 4, ran those for a period, and MilleniumIT won. They then decided to purchase the entire company. This process is much further along the road than you seem to think.
You are not accurate. The LSE bought a dev shop that ALREADY BUILT A TRADING PLATFORM, that is being used today in other exchanges. The platform in question ALREADY achieves 6 times the performance of their existing platform (built by accenture), and has MORE FEATURES.
And they are moving from an outsourced dev model to an in house model, as they now own the devs and the software. Sure they devs are still in Sri Lanka, but Accenture could just as easily hire people in India or Sri Lanka to get the same cost savings.
I bet they will use Mono to ease the transition. If they've already got a huge codebase written for.NET, wouldn't it be insane to throw it away?
They don't like the performance, or the feature set of the current codebase. They are buying an entirely new system to address those issues. It would be far more insane to keep any of it, or have to maintain it - they want it out wholesale.
De Icaza Responds (Score:5, Funny)
De Icaza Responds [slashdot.org]:
Nooo, wait, come back. I found a way for people ditching Windows to keep using Microsoft technologies..
Re:De Icaza Responds (Score:5, Interesting)
Actually from what I have seen .net is a good development environment. Mono has produced some very nice software for the Linux desktop that lots of people use. What I didn't get from this story was just what they where using for the development system?
I doubt that it is all in c or c++ so maybe they are using mono.
Parent
Re:De Icaza Responds (Score:5, Interesting)
The TradElect system was originally developed by Microsoft and Accenture so it was to be a showcase of how excellent .NET was.
Unfortunately, other companies showed how good their stuff was for this kind of work, and MS showed that you cannot polish a turd.
(well, ok, .NET would have created a system that would run your line-of-business apps without problem, but when it comes to very high performance, low latency systems, its simply not suitable, a bit like Java is not suitable for nuclear reactors).
The new system will be written entirely in a lower level language, and MilleniumIT does use C++ - take a look at their jobs board and you'll see the only skill referenced is C++.
It doesn't take a rocket scientist to work out that a GC-based, VM-based language that has layers of intermediate execution is going to be slower than is required for a trading system. What I don;t get is that MS thought they could throw hardware at it until it worked. Don't forget that MilleniumIT also was bought for $30m which is roughly half what the .NET system cost (£40m).
The moral is that you don't want to use the simple-to-code MS platform when you can get a best-of-breed system, based on Linux and good engineering for a lot less. IT managers around the world should be looking at this and thinking what similar lessons their IT departments could learn.
Parent
Re:De Icaza Responds (Score:5, Funny)
...you cannot polish a turd.
Actually you can polish a turd, it was a surprising result from a Mythbusters episode a while back. Denser turds turn out especially shiny.
Otherwise your post was spot on. I think the concept behind .Net can be very useful in the Enterprise environment, primarily in areas where efficient memory/processor management of apps from multiple vendors is required. This particular case seems more suited to the pure process effeciency you get with C and C++. The only thing that seems strange is the cost disparity. .NET apps are usually much cheaper to develop, and the hardware costs would have to be astronomical to make up the difference were that the case. Obviously something about the structure of .Net did not fit the application and had to be worked around in a big way. Of course I've also seen projects whose primary costs have nothing to do with actually engineering or delivering the system.
Parent
Re:De Icaza Responds (Score:5, Insightful)
what other platform allows you to literally mix inline assembly within functional programming?
Delphi - since like about 1993
Parent
Re:Whatever happened to.... (Score:5, Informative)
Speaking as a real-time programmer, GC and memory allocations are enormously damaging to system performance. You really do need to switch to an almost statically allocated approach, with no memory allocations in real-time execution segments. The x86 architecture has special instructions to make the use of Base Pointer, Stack Pointer, and Index Pointer based memory access usable. If you ever program on a less powerful processor, like an 8-bit PIC microcontroller, you would quickly discover that indirect memory accesses have significant timing penalties. Direct memory access, where data is at fixed locations in system memory, can be accessed in a single instruction on almost all architectures.
The second problem is that dynamic memory allocation has an unbounded maximum execution time. It can also be incredibly difficult to prove that memory accesses do not fragment, and that the program can execute in bounded memory space. Proving finite execution times and finite resource issues are major issues for a real-time system. In soft real-time systems, some forgiveness is tolerable. However, if you are in a language like C# and discover that one block of code is rate limiting because of memory allocation issues, how do you overcome the problem? In C/C++, you can statically allocate the memory blocks and work around the problem. In Java/C#, the issue is pretty much the end of the project.
Simply put, you can't have algorithms like that in programs with bounded maximum execution times. What happens if the XML file is corrupt? Excessively large? A pathological case deliberately designed to take down the London Stock Exchange? An unbounded tree based on a customer provided data file is a bug in a LSE style application.
Whenever I am looking at code blocks that need to execute quickly, the first thing I look for is blocks of code with unbounded memory, or unbounded execution times. C# encourages using these blocks of code. Real-time software requires using a small subset of available computer science techniques. Language and library support for this must be present.
Parent
Re:De Icaza Responds (Score:5, Insightful)
The languages are merely tools; the bigger picture is about the application and the customers. The problem with Microsoft's approach to being a "solutions provider" is that they're too focused on pushing their tools and technology, with the actual application being an afterthought. That is, they're Microsoft focused, not customer focused.
At the end of the day, the London Stock Exchange could not care less what the developers think about the language they're using, or even what the operating system is. They're not trying to stick a finger in the eye of Microsoft or promote open source, they just want a product that does what they want at the best price they can get.
Parent
Re:De Icaza Responds (Score:5, Informative)
You can't do this in registry:
Parent
How fast (Score:5, Funny)
Still there (Score:5, Informative)
Hehe:) For those that are interested, they still have a InfoElect case study [microsoft.com] from 2006 posted on their site, which I believe was the the precursor to TradElect.
Parent
Re:Still there (Score:5, Informative)
Heh.. I *love* this:
Benefits
One hundred per cent reliable on high-volume trading days
Umm, yeah [guardian.co.uk].. for various definitions of the value "one hundred", right?
Parent
Re:Still there (Score:5, Funny)
Actually, in retrospect, I supposed they *are* being truthful there..
It says 100% reliable on high-volume trading days... so any day where it doesn't work won't be a high-volume day (because it doesn't work, there won't *be* any volume)
In other words, this is marketspeak for the redundant phrase "when it doesn't work, you won't be able to use it".
Parent
More important than funny (Score:5, Insightful)
Parent
Re:How fast (Score:4, Insightful)
As one other note, while OSS fanatics (I'm quite keen about OSS, but not quite a fanatic) go apeshit about this - This was more "switched from Accenture to running it `in house' in the form of a large team of low-paid talent in Sri Lanka" way more than it was "abandoned .NET for Linux! Rah rah rah!". The fact that people are hilariously so focused on the latter while missing the former speaks to how incredibly myopic people can be.
Parent
Re:How fast (Score:5, Informative)
Purportedly a single day of problems?
The exchange shut down during a high-volume trading session. That's not purported, that's fact. What's purported is the number of times HVTs observed execution delays on the LSE at other high-volume times... and that's one reason Euronext has been claiming increasing market share from LSE.
Parent
Re:How fast (Score:5, Insightful)
Wait, Microsoft + Accenture built a piss-poor platform. As you may recall, Accenture is a giant in the consulting business. Their combined efforts failed miserably.
Linux is the OS of most large trading systems. This has been covered on slashdot before.
MilleniumIT has a proven product in deployment in several exchanges. Their product is not pie-in-the-sky. It works. They've had several big wins in the past decade. They've been collaborating with Intel on optimizing their platform. Their transaction processing times are an order of magnitude better than LSE's current system.
So, I'm not sure what your angle is... are you trolling? Astroturfing? Or just spouting knee-jerk reactionism without any kind of basis in reality? A quick googling might have helped you out a bit.
Parent
Re:How fast (Score:4, Informative)
Pie-in-the-sky is unobtainable by definition. Are you claiming that LSE won't be able to implement a trading platform with lower latency and better uptime than their current system? Or are you just claiming that LSE & MilleniumIT are being a little too optimistic in their press releases? Because the latter of those two is probably true.
You made a very generic post about pie-in-the-sky cheap outsourcing to Sri Lanka. You appeared to have little-to-no actual knowledge of the subject, since none was communicated in you post (except the mention of Sri Lanka, which was gleanable from the first comment to the article on the site it was originally posted). You do not appear to be familiar with MilleniumIT.
You call yourself a realist... yet realistic perspective is dependent upon knowledge of the subject. It's well known that most trading platforms are faster than the piece of crap they had on the LSE... often more than 25ms faster, which means that it was faster to trade on Euronext.
But you know... whatever man... you can try to backtrack and defend your reactionary post however you want... you simply made claims that don't stack up to reality.
Parent
Re:How fast (Score:4, Informative)
LSE isn't going to run setup.exe (sorry ./setup.so), they're going to have to do some large-scale integration work and customization to make it work with their system...?
Huh? Trading platforms are trivial applications. Send data down the wire. Commit it. Get data back. Typically, these systems have multiple servers per stock offered at the exchange, each of them acting as a market maker/auctioneer to each others (trivial, a 10KB binary can do it, VERY QUICKLY). Each of the machines buffer trading history until it can be sent to the clearing house.
There's little need to "customize" Linux. Linux already deals with the networking part just fine.
The issue is writing the software using an easily maintainable, testable, and rigorously provable language. Credit Suisse is using Haskell for this purpose, very successfully. The only real difficulty is implementing the exchange rules regarding sorting the stock orders. That's going to be a real issue in any language. Sorting large sets is always expensive (but can be done in parallel).
Parent
Re:How fast (Score:4, Informative)
Well, someone [microsoft.com] certainly thought LSE was proof of something, why otherwise would they have bragged [microsoft.com] about it? Now that that bragging has been shown [guardian.co.uk] to be moot [computerworlduk.com] surely you can understand this modest amount of schadenfreude?
Parent
Time to reevaluate (Score:5, Funny)
I think Microsoft needs to make sure they... Get The Facts. .... oh right
It's just a VM (Score:5, Insightful)
.Net is just a specification and a bunch of languages. There is an open source implementation of .Net itself and certainly many open source projects written in C#. "Rejects windows for open source" would have been a more appropriate headline. I hope they still use some kind of language with bounds checking and type safety, given the dangers of buffer overrun exploits in a national stock trading system.
Re:It's just a VM (Score:5, Informative)
If you're trying to shave run time on complex functions down to sub millisecond times, I would expect that bounds checking, type safety, and thread safety are low on your concerns.
Curiously enough, C# lets you drop both bounds checking and type safety to exact same extent [microsoft.com] as plain C, with corresponding performance gains.
It should also come as absolutely no surprise that a C++ pointer based linked list running native locally on the OS performs faster than a .Net Generics List running as CLR in the .Net run-time environment.
What do you mean by "performs faster"? Iteration? Indexing? Insertion at front? Insertion at end? Removal? This is a surprisingly vague statement...
I can bet you $1000 that System.Collections.Generic.List<int> will significantly outperform std::list<int> on indexed access on lists of significant size, for example, simply because the former is array-backed, and the latter is a doubly linked list. This is just to show how meaningless your comparison is.
Now, yes, if you write idiomatic C# code for a linked list (using GC heap allocated objects and tracked references), it will be slower than equivalent C++ code because of all the safety checks (like null checks). But, of course, you can also use C# raw pointers and structs to write exact same code you would write for a linked list in C, and that would work just as fast (since it would compile to pretty much the same native code in the end).
Parent
Re:It's just a VM (Score:5, Insightful)
Parent
Re:It's just a VM (Score:5, Informative)
Yes, the list is contiguous in memory but that list is just a list of object pointers. The data is scattered around the heap just like the linked list data is scattered around the heap. Fast access to the object pointer does not yield any speed boosts. In C++ you could create an array of actual objects and then all the objects are contiguous in memory and incrementing to the next object is incrementing a point by sizeof(theObject). For small objects, you might be within the range of the memory cache on each increment. The managed object system most likely cannot possibly put the actual objects into contiguous memory and so you still have the cache misses when dereferencing the object pointers.
So, tell us again who understands access characteristics of linked lists and array lists better?
Parent
Re:It's just a VM (Score:5, Informative)
Yes, the list is contiguous in memory but that list is just a list of object pointers ... In C++ you could create an array of actual objects and then all the objects are contiguous in memory and incrementing to the next object is incrementing a point by sizeof(theObject). For small objects, you might be within the range of the memory cache on each increment. The managed object system most likely cannot possibly put the actual objects into contiguous memory and so you still have the cache misses when dereferencing the object pointers.
Not necessarily - this isn't true for any primitive types like int or float, and this isn't true for any user-defined structs.
Unlike Java, C# lets you define your own types that don't have to be heap-allocated. For such types, exact same technique that you describe for C++ can also be used.
Parent
Re:Touche! (Score:5, Informative)
A generic list, even if it is array based, is going to be on the stack an array of pointers to other points of the stack and the heap.
If you use STL, then std::vector will also allocate its backing store array on heap.
On the other hand, if you use C#, you can use stackalloc [microsoft.com] to get a stack-allocated, non-GC-tracked array.
Managed .NET arrays (not stackalloc or unmanaged heap allocated) will still be slower because there are bound checks for element access (though JIT can eliminate them sometimes when it sees that they can never fail).
Mutable generic collection classes are even more slow, because they also have safeguards to do things like throwing an exception if you get an enumerator for a collection, then remove an item from that collection, and then try to move the enumerator (whereas in C++, doing same thing for a vector would just render all active iterators invalid, and their use would lead to a crash at best, and silent data corruption at worst). This is achieved by storing a "version number" for a collection (just as plain int) which incremented it on every insertion/removal - and which enumerators check against every time you move them. Naturally, this increment happening on every insert also slows things down.
Parent
Unix has dominated this sector for years... (Score:5, Informative)
Why is this news? Sun/Solaris dominated the high-end financial sector for ages...any exchange/trading house/equity firm/etc that is using Windows is insane IMHO. Linux is just the most recent unix platform to show up in the sector, it's not revolutionary...
Re:Unix has dominated this sector for years... (Score:5, Informative)
...it's news because Microsoft bragged on .NET being in the LSE for a couple of years, pointing to it as proof that they were enterprise-ready and such.
Then at about this time last year, the TradElect system (which was the .NET bits which ran the LSE) went 'splat', taking the London Stock Exchange down with it.
The relevant info should be sitting right there in TFA.
Parent
Re:Unix has dominated this sector for years... (Score:5, Informative)
any exchange/trading house/equity firm/etc that is using Windows is insane IMHO
You mean like an exchange that was the cornerstone of MS's advertisements for 2 years? About how .NET was so scalable, it was used in the exchange, and SQL Server was so wonderful, it was used in the exchange...
Well, it was the cornerstone of advertising until the exchange had a few day long technical outtage a year or so ago.. That left people in the dark, and they had to suspend all trading for a few days.. suddenly, the ads stopped.
Parent
Windows7 Launch Party Convo Killer (Score:5, Funny)
Wall Street (Score:5, Insightful)
Didn't the New York Stock Exchange move over to Linux because Microsoft couldn't provide a good, low-latency RT kernel? They begged Microsoft, wanted to stay with Microsoft, and Microsoft couldn't provide them with a solution.
Re:Wall Street (Score:5, Informative)
Parent
savage idictment of .net? (Score:4, Insightful)
i read the article and found this.
while TradElect is based on Microsoftâ(TM)s .Net technology. The choice of the latter, which has raised quite a few eyebrows in the market, is defended by Lester. He claims that LSE is coming off TradElect not because of the .Net technology itself (although its trading speed is 2.7 milliseconds compared to Linux-based Chi-Xâ(TM)s 0.4 milliseconds), but âfor more control, less costs, and the ability to build and innovateâ(TM). Furthermore, he describes LSEâ(TM)s experience with .Net as âvery positiveâ(TM).
i will grant that the 2.7 ms benchmark is definately slower than .4 ms. However, i don't think you can benchmark the trading speed of .Net, only the trading speed of TradElect. Last time i checked msdn, there was no System.StockExchange namespace provided with the .net framework.
These articles sound more like MilleniumIT's just got a faster, nicer, cheaper product than TradElect. It sounds to me like Accenture failed, not .net
Performance is neither here nor there (Score:5, Insightful)
Stock Exchanges are not national monopolies anymore, even if the few remaining big ones are gobbling each other. Controlling the technology involved is much more important than a slight performance hit. The London stock exchange scores a double hit on this one, since not only it will own the system, but the internals of said system will be open source, freeing it for example from limitation of sale to third parties by the US government. And anyway, when an istitution that big uses only Microsoft inhouse, is like having another stakeholder on your back, with an agenda of its own, like having you switch soon to the latest and greatest of its Server suite, if only for its publicity value. By doing the move, LSE is back to setting its own pace. I wish I could do the same on my desktop in the office.
Accenture had a hand in this too (Score:5, Interesting)
Typical PHB and incompetent/ expensive consulting services debacle. See below for an older ComputerWorld blog entry.
_______________________________________
July 1, 2009
.NET
programs, which was created by Microsoft and Accenture, the global
consulting firm. On the back-end, it relied on Microsoft SQL Server
2000. Its goal was to maintain sub-ten millisecond response times,
real-time system speeds, for stock trades.
Steven J. Vaughan-Nichols
London Stock Exchange to abandon failed Windows platform [computerworld.com]
Anyone who was ever fool enough to believe that Microsoft software was good enough to be used for a mission-critical operation had their face slapped this September when the LSE (London Stock Exchange)'s Windows-based TradElect system brought the market to a standstill for almost an entire day. While the LSE denied that the collapse was TradElect's fault, they also refused to explain what the problem really wa. Sources at the LSE tell me to this day that the problem was with TradElect.
Since then, the CEO that brought TradElect to the LSE, Clara Furse, has left without saying why she was leaving. Sources in the City-London's equivalent of New York City's Wall Street--tell me that TradElect's failure was the final straw for her tenure. The new CEO, Xavier Rolet, is reported to have immediately decided to put an end to TradElect.
TradElect runs on HP ProLiant servers running, in turn, Windows Server 2003. The TradElect software itself is a custom blend of C# and
It never, ever came close to achieving these performance goals. Worse still, the LSE's competition, such as its main rival Chi-X with its MarketPrizm trading platform software, was able to deliver that level of performance and in general it was running rings about TradElect. Three guesses what MarketPrizm runs on and the first two don't count. The answer is Linux.
It's not often that you see a major company dump its infrastructure software the way the LSE is about to do. But, then, it's not often you see enterprise software fail quite so badly and publicly as was the case with the LSE. I can only wonder how many other Windows enterprise software failures are kept hidden away within IT departments by companies unwilling to reveal just how foolish their decisions to rely on archaic, cranky Windows software solutions have proven to be.
I'm sure the LSE management couldn't tell Linux from Windows without a techie at hand. They can tell, however, when their business comes to a complete stop in front of the entire world.
So, might I suggest to the LSE that they consider Linux as the foundation for their next stock software infrastructure? After all, besides working well for Chi-X, Linux seems to be doing quite nicely for the CME (Chicago Mercantile Exchange), the NYSE (New York Stock Exchange), etc., etc.
_______________________________________
LSE CEO has left without saying why... (Score:5, Interesting)
From now on, it will no longer possible to take refuge in the idea that you can't get fired for keeping with Microsoft.
the CEO that brought TradElect to the LSE, Clara Furse, has
left without saying why she was leaving. Sources in the City-London's
equivalent of New York City's Wall Street--tell me that TradElect's
failure was the final straw for her tenure.
Parent
Re:Awesome. (Score:5, Funny)
Now how about my desktop?
Might I suggest teak? I suppose you could go with faux finished MDF if you are on a budget, but teak is beautiful and will last forever. Then if you have any money left over, nothing says "I have arrived" like a porcelain fountain.
Parent
Re:is slashdot news? (Score:5, Insightful)
Care to try a self-eating watermelon?
Parent
Re:Isn't it a bad app? (Score:5, Insightful)
Because it's Slashdot, silly.
Parent
Because.... (Score:4, Insightful)
They had $60M to throw into development. There's a good chance it's as fast as they could make it.
Also, Microsoft gets to crow about the awesome power of their platform when they "win" these big installations. It's only fair we get to revel in it when they stub their toe on them.
Parent
Re:Isn't it a bad app? (Score:5, Insightful)
Parent
Not out of context (Score:5, Informative)
How disingenuous.
While it is 2.3ms faster it is also compared to 0.4ms (vs 2.7) making it 6.75 *times* faster.
Sub ms latency in trading is a critical requirement for this application and .net on windows just wasn't up to the task.
As a performance expert, this doesn't surprise me. In my opinion, current .net implementations are fundamentally unsuited to hard RT.
Parent
Re:Out of context theator (Score:5, Insightful)
You are incorrect, they are trading a $65 million dollar piece of software for a $30 million COMPANY. They bought the MilleniumIT company that had ALREADY IMPLEMENTED a trading platform. They bought the company for the platform, and now they control the development of the platform going forward in house. They are not trading one IT consultancy for another, as they now OWN the software and the company that built it.
However, they state the platform they bought ALREADY achieves 6 times the performance of the piece of software built by accenture (.4ms vs 2.7ms transaction times).
While I agree that this is more of an indictment of Accenture's apparently shoddy work than of .NET itself, the fact that they've had 6 years (the article states the TradElect software/project was started in 2003) and $65 million dollars thrown at the problem and haven't been able to make the software perform better does raise some eyebrows about the underlying technology as well.
Parent
Re:Out of context theator (Score:4, Interesting)
If you're over 300 kilometers away from the server, a one-way transaction will take more than 1 millisecond at the speed of light anyway. If millisecond gaps were that important, you'd hear about global disparities directly related to distances from the stock exchange servers.
Parent
Re:Out of context theator (Score:5, Informative)
SEC Proposes Ban on Allowing Stock Flash Orders [bloomberg.com] (dated September 19th 2009)
Flash traders have direct connections to the NYSE exchange and pay large sums just for bandwidth to make sure the trades are almost real time. Goldman Sachs is a key participator in this.
That said, their trades often have no human interaction and generally are computers following trading algorithms only a block away from the exchange with a direct fiber line to the office. It would be impossible otherwise.
Some traders have been raising a stink over this, but generally the miliseconds do count.
From http://seekingalpha.com/article/150397-flash-trading-goldman-sachs-front-running-everyone-else [seekingalpha.com]
Of course I don't know how the LSE handles flash trading or even wants it but I'm going to assume they need everything to be as real time as possible. You just don't hear the finacial firms complaining about the disparities simply because they have the money to set up the transactions their servers pretty much next to the exchange itself (if not in the same building).
Parent
Re:Cheaper labor in Sir Lankan? (Score:5, Informative)
You didn't read the article did you?
It was cheaper for them to buy the WHOLE COMPANY that had built this technology, than it was to continue running/maintaining a .NET application. The .NET application was built and maintained by accenture, who can just as easily hire cheap devs in india or sri lanka as any other outsourced IT consultancy.
Also, they specifically state multiple times that the .NET solution would not scale to meet their needs, the quoted stats are 2.7ms/transaction in .NET and the linux app performs the same transaction in .4ms... So the linux system can handle 6-7 times the transactions on the same hardware...
They are talking about scaling up from 100 million transactions a day to 5-6 billion, so, yeah having to buy 6 times less hardware will probably save them some cash.
Parent
Re:OK. Let's be a bit careful about "cost" - "qual (Score:5, Informative)
If you had read the earlier articles on the TradElect fiasco, you would have known that it was basically written and designed by Microsoft itself. Accenture had a very heavy involvement in the project straight from Redmond.
So yes, this is an outright condemnation of the quality of Microsoft's products.
Mart
Parent
Re:It's not a win, it's a better fight. (Score:5, Informative)
Uhh... I've never seen this level of RTFA and.. man this is slashdot where that is the norm.
the LSE ALREADY ENTERED A PURCHASE AGREEMENT TO BUY THE COMPANY that ALREADY BUILT A TRADING PLATFORM THAT IS BEING USED TODAY IN OTHER EXCHANGES! The deal closes in the next week or 2. The article says 95% of the "Non-Refundable" parts of the deal have already been transacted. Neither the LSE nor Millenium IT (the Sri Lankan company that is being purchased) is walking away from this deal.
You don't spend $30 million dollars and purchase a company if you aren't moving your software to that platform. The article states they already had a trial phase and brought in originally 20 platforms, shortlisted 4, ran those for a period, and MilleniumIT won. They then decided to purchase the entire company. This process is much further along the road than you seem to think.
Parent
Re:LSE Acquired the Dev Shop (Score:5, Informative)
You are not accurate. The LSE bought a dev shop that ALREADY BUILT A TRADING PLATFORM, that is being used today in other exchanges. The platform in question ALREADY achieves 6 times the performance of their existing platform (built by accenture), and has MORE FEATURES.
And they are moving from an outsourced dev model to an in house model, as they now own the devs and the software. Sure they devs are still in Sri Lanka, but Accenture could just as easily hire people in India or Sri Lanka to get the same cost savings.
Parent
When the baby is bad enough, it goes out too (Score:4, Insightful)
I bet they will use Mono to ease the transition. If they've already got a huge codebase written for .NET, wouldn't it be insane to throw it away?
They don't like the performance, or the feature set of the current codebase. They are buying an entirely new system to address those issues. It would be far more insane to keep any of it, or have to maintain it - they want it out wholesale.
Parent