From 18011ace53b1817dec8aebcb711486e3e26b2a51 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Wed, 17 Apr 2019 12:25:09 -0400 Subject: [PATCH 1/9] Initial sketch --- _drafts/writing-fast-code.md | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 _drafts/writing-fast-code.md diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md new file mode 100644 index 0000000..ce135aa --- /dev/null +++ b/_drafts/writing-fast-code.md @@ -0,0 +1,40 @@ +--- +layout: post +title: "Writing Fast Code" +description: "" +category: +tags: [] +--- + +The thing that has surprised me the most about low-latency trading systems I've worked on is simply that they aren't magical. The vast majority run on commodity Intel processors (FPGA's are being used, but are pretty niche), and while the developers are incredibly smart and talented, they're still mortals. + +Rather, what I believe sets these systems apart is a relentless focus on a few philosophical differences. It's not that C++ metaprogramming tricks make all the difference (though they can be helpful), but that the goals of a trading system are from inception very different than most other software. There are two principles in place: + +1. It's impossible to make code fast if it's inconsistent. +2. Don't do unnecessary work. + +# Reducing variance + +Code gets fast when you care about consistency. So where is inconsistency introduced? + +- Kernel + - Scheduling; Make sure you pin the core you're executing on, and that nobody else can use that core. + - Context switching/syscalls; reading data from the network requires switching into the kernel unless you use openonload or other kernel bypass. Never do I/O on main thread unless you need that data to continue the program (epoll market data for example) + - Allocation; Finding space in memory has inconsistent timing because of fragmentation +- Languages + - JIT in Java; Hotspot may decide now is the time to compile your code into native format, and need to wait for that to finish. Alternately, may decide to decompile back into Java bitcode, and you're waiting for that process. + - GC in Java; Same issue as allocations in the kernel, use object pooling strategies to bypass +- Hardware + - CPU pipelining; can use code inlining as a hint, but branch predictor might guess incorrectly and have to rewind + - Main-memory access; need to go through MMU and page tables, etc. If you can keep things cache local, don't have to worry about how long it may take for DRAM access. For multi-socket computers, make sure all lookups are on the same NUMA node as the CPU. + +# Don't do unnecessary work + +- Don't recompute results - see the C++ template trick to go down buy/sell-specific code paths +- Stack frames are not free; jumping around isn't helpful if you can inline and help out the instruction cache +- Copies are not free + +# Miscellaneous + +- Do you know where you care about latency? If any humans are involved, none of these tools make a difference, the humans are already too slow +- If you benchmark, are you benchmarking in a way that's actually helpful? All the same variance rules from above apply to your benchmarks \ No newline at end of file From 6e208cbc83e876bb1a8bed9a65d214a2fdc5413b Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Wed, 17 Apr 2019 16:18:09 -0400 Subject: [PATCH 2/9] Start actually writing the article. Also, kung-fu GIFs. --- _drafts/writing-fast-code.md | 49 ++++++++++++++++++++++---- assets/images/2019-04-24-kung-fu.webp | Bin 0 -> 310854 bytes 2 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 assets/images/2019-04-24-kung-fu.webp diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index ce135aa..287359b 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -1,19 +1,54 @@ --- layout: post -title: "Writing Fast Code" +title: "On Writing High Performance Code" description: "" category: tags: [] --- -The thing that has surprised me the most about low-latency trading systems I've worked on is simply that they aren't magical. The vast majority run on commodity Intel processors (FPGA's are being used, but are pretty niche), and while the developers are incredibly smart and talented, they're still mortals. +Prior to working in the trading industry, my assumption was that High Frequency Trading (HFT) is made up of people who have access to secret techniques the rest of us mortal developers could only dream of. There had to be some lost art of trading that could only be learned if one had an appropriately tragic backstory: -Rather, what I believe sets these systems apart is a relentless focus on a few philosophical differences. It's not that C++ metaprogramming tricks make all the difference (though they can be helpful), but that the goals of a trading system are from inception very different than most other software. There are two principles in place: +kung-fu fight +> How I assumed HFT people learn their secret techniques -1. It's impossible to make code fast if it's inconsistent. +How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) [within 750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? +In roughly the time it takes other computers to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), these systems are capable of reading the market data packets, deciding what orders to send, (presumably) doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. + +Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, I think what sets high-performance systems apart is philosophy, not technique. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they can be helpful); rather, the problems these systems care about are very different than most other software. There are two principles I think are worth mentioning and reflecting on: + +1. Focus on variance first, overall speed comes later. 2. Don't do unnecessary work. -# Reducing variance +# Variance First + +Don't get me wrong, I'm a much happier person when things are fast. Computer now boots up in 9 seconds after switching from spinning plates to solid-state? Awesome. However, when it comes to code, speeding up a function by 10 microseconds doesn't mean anything if the variance of that function is ±1000μs. You may have improved on average, but the function is too noisy for this to be a meaningful change. **Fundamentally, high-performance code should optimize for time variance first**. Once you're consistent, then you can focus on improving overall time. + +But you don't have to take my word for it (emphasis added in all quotes below): + +- In [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, they specifically call out variance: + > Able to consistently sustain an order rate of over 100,000 orders per second at **sub-40 microsecond average latency** + +- The [Aeron](https://github.com/real-logic/aeron) message bus has this to say about performance: + > Performance is the key focus. Aeron is designed to be the highest throughput with the lowest and **most predictable latency possible** of any messaging system + +- The company PolySync, which is working on autonomous vehicles, [mentions why](https://polysync.io/blog/session-types-for-hearty-codecs/) they picked their specific messaging format: + > In general, high performance is almost always desirable for serialization. But in the world of autonomous vehicles, **steady timing performance is even more important** than peak throughput. This is because safe operation is sensitive to timing outliers. Nobody wants the system that decides when to slam on the brakes to occasionally take 100 times longer than usual to encode its commands. + +So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the technology being used, and (B) actually measuring the code through benchmarks. And even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content if you never trigger garbage collection in Java. + +Even though each high-performance project has different needs, there are still common things to look for when trying to isolate variance. In my experience, these also come up in interviews, so pay attention. In no particular order, here are potential sources of timing variability in high-performance code: + +## Kernel + +**Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your program, and make sure only your program can run on that processor. It's impossible to know how long it is until your program begins running again, so never let other processes use your precious CPU. Also, turning on [`CONFIG_NO_HZ_IDLE=y` or `CONFIG_NO_HZ_FULL=y`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. + +**System calls**: Reading from a UNIX socket? Writing to a file? In addition to not knowing how long the I/O operation takes, these all trigger expensive [system calls](https://en.wikipedia.org/wiki/System_call). To handle these, the CPU must [context switch](https://en.wikipedia.org/wiki/Context_switch) to the kernel, let the kernel operation complete, then context switch back to your program. Similar to issues with scheduling, we want to make sure that our program is running at all times. + +**Signal Handling**: Far less likely to be an issue, but does trigger a context switch if your code has a handler registered. This will be highly dependent on the application, but strategies like [blocking signals](https://www.linuxprogrammingblog.com/all-about-linux-signals?page=show#Blocking_signals) are available. + +**Allocation**: Any time you call `new` in Java, or `std::make_shared` in C++, you're asking the system to provide you with exclusive access to chunks of memory. However, searching for blocks of memory that are ready for you to use takes a variable amount of time. Allocation libraries have a great deal of sophisticated strategies to deal with this, but it's unknown how long it may take to find available space. + +**Interrupts**: System interrupts are how devices connected to your computer notify the CPU that something has happened. It's then up to the CPU to pause whatever program is running so the operating system can handle the interrupt. We don't want our program to be the one paused, so make sure that [SMP affinity](http://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux) is set and the interrupts are handled on a CPU core not running the program we care about. Code gets fast when you care about consistency. So where is inconsistency introduced? @@ -21,12 +56,14 @@ Code gets fast when you care about consistency. So where is inconsistency introd - Scheduling; Make sure you pin the core you're executing on, and that nobody else can use that core. - Context switching/syscalls; reading data from the network requires switching into the kernel unless you use openonload or other kernel bypass. Never do I/O on main thread unless you need that data to continue the program (epoll market data for example) - Allocation; Finding space in memory has inconsistent timing because of fragmentation + - Interrupts - Languages - JIT in Java; Hotspot may decide now is the time to compile your code into native format, and need to wait for that to finish. Alternately, may decide to decompile back into Java bitcode, and you're waiting for that process. - GC in Java; Same issue as allocations in the kernel, use object pooling strategies to bypass - Hardware - CPU pipelining; can use code inlining as a hint, but branch predictor might guess incorrectly and have to rewind - - Main-memory access; need to go through MMU and page tables, etc. If you can keep things cache local, don't have to worry about how long it may take for DRAM access. For multi-socket computers, make sure all lookups are on the same NUMA node as the CPU. + - Cache-local operations/Main memory access; need to go through MMU and page tables, etc. If you can keep things cache local, don't have to worry about how long it may take for DRAM access. For multi-socket computers, make sure all lookups are on the same NUMA node as the CPU. + - DMA/Open Onload # Don't do unnecessary work diff --git a/assets/images/2019-04-24-kung-fu.webp b/assets/images/2019-04-24-kung-fu.webp new file mode 100644 index 0000000000000000000000000000000000000000..cd9dfb0bcabf99f765fbc0880fbe1d51c8cebaf8 GIT binary patch literal 310854 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ⓈWV!?H;P>0bex{{|Ab};#0N>${Ap~bd1&36QjFK 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%0A;znj9jC&n{`&;+2o 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Ξ;c$@w0o1#BE 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 z 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 literal 0 HcmV?d00001 From f10a858a7f6c67f64624ee04906cf5757850a0d4 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Thu, 18 Apr 2019 17:20:27 -0400 Subject: [PATCH 3/9] Keep on fleshing things out --- _drafts/writing-fast-code.md | 46 +++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index 287359b..0fc2213 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -11,17 +11,17 @@ Prior to working in the trading industry, my assumption was that High Frequency kung-fu fight > How I assumed HFT people learn their secret techniques -How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) [within 750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? +How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) [consistently within 750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? In roughly the time it takes other computers to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), these systems are capable of reading the market data packets, deciding what orders to send, (presumably) doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. -Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, I think what sets high-performance systems apart is philosophy, not technique. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they can be helpful); rather, the problems these systems care about are very different than most other software. There are two principles I think are worth mentioning and reflecting on: +Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, what shows up from reading public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they're definitely useful); rather, there are two governing principles I want to reflect on: -1. Focus on variance first, overall speed comes later. +1. Focus on variance (average latency) first, overall speed comes later. 2. Don't do unnecessary work. # Variance First -Don't get me wrong, I'm a much happier person when things are fast. Computer now boots up in 9 seconds after switching from spinning plates to solid-state? Awesome. However, when it comes to code, speeding up a function by 10 microseconds doesn't mean anything if the variance of that function is ±1000μs. You may have improved on average, but the function is too noisy for this to be a meaningful change. **Fundamentally, high-performance code should optimize for time variance first**. Once you're consistent, then you can focus on improving overall time. +Don't get me wrong, I'm a much happier person when things are fast. Computer now boots up in 9 seconds after switching from spinning plates to solid-state? Awesome. But if the computer takes a full 60 seconds to boot up tomorrow? Not so great. When it comes to code, speeding up a function by 10 milliseconds doesn't mean much if the variance of that function is ±1000ms; you simply won't know until you call the function how long it takes to complete. **High-performance code should first optimize for time variance**. Once you're consistent, then you can focus on improving overall time. But you don't have to take my word for it (emphasis added in all quotes below): @@ -34,36 +34,44 @@ But you don't have to take my word for it (emphasis added in all quotes below): - The company PolySync, which is working on autonomous vehicles, [mentions why](https://polysync.io/blog/session-types-for-hearty-codecs/) they picked their specific messaging format: > In general, high performance is almost always desirable for serialization. But in the world of autonomous vehicles, **steady timing performance is even more important** than peak throughput. This is because safe operation is sensitive to timing outliers. Nobody wants the system that decides when to slam on the brakes to occasionally take 100 times longer than usual to encode its commands. -So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the technology being used, and (B) actually measuring the code through benchmarks. And even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content if you never trigger garbage collection in Java. +So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring the code through benchmarks. And even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply avoid garbage collection in your Java code. -Even though each high-performance project has different needs, there are still common things to look for when trying to isolate variance. In my experience, these also come up in interviews, so pay attention. In no particular order, here are potential sources of timing variability in high-performance code: +Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are places to focus on when building high-performance/low-latency systems: + +## Language-specific + +**Garbage Collection**: How often does garbage collection happen? What are the impacts? +- [In Python](https://rushter.com/blog/python-garbage-collector/), individual objects are collected if the reference count reaches 0, and each generation is collected if `num_alloc - num_dealloc > gc_threshold` whenever an allocation happens. The GIL is acquired for the duration of generational collection. +- Java has [many](https://docs.oracle.com/en/java/javase/12/gctuning/parallel-collector1.html#GUID-DCDD6E46-0406-41D1-AB49-FB96A50EB9CE) [different](https://docs.oracle.com/en/java/javase/12/gctuning/garbage-first-garbage-collector.html#GUID-ED3AB6D3-FD9B-4447-9EDF-983ED2F7A573) [collection](https://docs.oracle.com/en/java/javase/12/gctuning/garbage-first-garbage-collector-tuning.html#GUID-90E30ACA-8040-432E-B3A0-1E0440AB556A) [algorithms](https://docs.oracle.com/en/java/javase/12/gctuning/z-garbage-collector1.html#GUID-A5A42691-095E-47BA-B6DC-FB4E5FAA43D0) to choose from, each with different characteristics. The default algorithms (Parallel GC in Java 8, G1 in Java 9) freeze the JVM while collecting, while more recent algorithms ([ZGC](https://wiki.openjdk.java.net/display/zgc) and [Shenandoah](https://wiki.openjdk.java.net/display/shenandoah)) are designed to keep "stop the world" to a minimum by doing collection work in parallel. + +**Allocation**: Every language has a different way of interacting with "heap" memory, but the principle is the same; figuring out what chunks of memory are available to give to a program is complex. Allocation libraries have a great deal of sophisticated strategies to deal with this, but it's unknown how long it may take to find available space. Understanding when your language interacts with the allocator is crucial (and I wrote [a guide for Rust](https://speice.io/2019/02/understanding-allocations-in-rust.html)). + +**Data Layout**: Your CPU does a lot of work to keep things running quickly, from [speculative execution](https://www.youtube.com/watch?v=_f7O3IfIR2k) to [caching](https://www.youtube.com/watch?v=vDns3Um39l0&feature=youtu.be&t=1311). And when it comes to caching, how your data is arranged in memory matters. The C family (C, value types in C#, C++) and Rust all have guarantees about layout; from the CPU's perspective, if the work has been done to retrieve one part of a structure from main memory, other parts are likely available in the cache without needing to contact main memory again. Java and Python don't make these same guarantees, so the CPU may have to wait more often on memory lookups. [Cachegrind](http://valgrind.org/docs/manual/cg-manual.html) is great for understanding what's going on. + +**Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used. However, there's a variance cost associated with this; the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, some languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Benchmarking is incredibly important here. ## Kernel -**Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your program, and make sure only your program can run on that processor. It's impossible to know how long it is until your program begins running again, so never let other processes use your precious CPU. Also, turning on [`CONFIG_NO_HZ_IDLE=y` or `CONFIG_NO_HZ_FULL=y`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. +Code you wrote is likely not the *only* code running on your system. There are many ways the operating system interacts with your program, from system calls to memory allocation, that are important to be aware of. -**System calls**: Reading from a UNIX socket? Writing to a file? In addition to not knowing how long the I/O operation takes, these all trigger expensive [system calls](https://en.wikipedia.org/wiki/System_call). To handle these, the CPU must [context switch](https://en.wikipedia.org/wiki/Context_switch) to the kernel, let the kernel operation complete, then context switch back to your program. Similar to issues with scheduling, we want to make sure that our program is running at all times. +**Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your program, and make sure only your program can run on that processor. The kernel, by default, is free to schedule any process on any core, so it's important to reserve CPU cores exclusively for the important programs. Also, turning on [`NO_HZ`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. -**Signal Handling**: Far less likely to be an issue, but does trigger a context switch if your code has a handler registered. This will be highly dependent on the application, but strategies like [blocking signals](https://www.linuxprogrammingblog.com/all-about-linux-signals?page=show#Blocking_signals) are available. +**System calls**: Reading from a UNIX socket? Writing to a file? In addition to not knowing how long the I/O operation takes, these all trigger expensive [system calls (syscalls)](https://en.wikipedia.org/wiki/System_call). To handle these, the CPU must [context switch](https://en.wikipedia.org/wiki/Context_switch) to the kernel, let the kernel operation complete, then context switch back to your program. We'd rather keep these to a minimum. [Strace](https://linux.die.net/man/1/strace) is your friend for understanding when and where syscalls happen. -**Allocation**: Any time you call `new` in Java, or `std::make_shared` in C++, you're asking the system to provide you with exclusive access to chunks of memory. However, searching for blocks of memory that are ready for you to use takes a variable amount of time. Allocation libraries have a great deal of sophisticated strategies to deal with this, but it's unknown how long it may take to find available space. +**Signal Handling**: Far less likely to be an issue, but does trigger a context switch if your code has a handler registered. This will be highly dependent on the application, but you can [block signals](https://www.linuxprogrammingblog.com/all-about-linux-signals?page=show#Blocking_signals) if it's an issue. **Interrupts**: System interrupts are how devices connected to your computer notify the CPU that something has happened. It's then up to the CPU to pause whatever program is running so the operating system can handle the interrupt. We don't want our program to be the one paused, so make sure that [SMP affinity](http://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux) is set and the interrupts are handled on a CPU core not running the program we care about. -Code gets fast when you care about consistency. So where is inconsistency introduced? +**[NUMA](https://www.kernel.org/doc/html/latest/vm/numa.html)**: While NUMA is good at making multi-cell systems transparent, there are variance implications; if the kernel moves a process across nodes, future memory accesses must wait for the controller on the original node. Use [numactl](https://linux.die.net/man/8/numactl) to handle memory/cpu pinning. -- Kernel - - Scheduling; Make sure you pin the core you're executing on, and that nobody else can use that core. - - Context switching/syscalls; reading data from the network requires switching into the kernel unless you use openonload or other kernel bypass. Never do I/O on main thread unless you need that data to continue the program (epoll market data for example) - - Allocation; Finding space in memory has inconsistent timing because of fragmentation - - Interrupts -- Languages - - JIT in Java; Hotspot may decide now is the time to compile your code into native format, and need to wait for that to finish. Alternately, may decide to decompile back into Java bitcode, and you're waiting for that process. - - GC in Java; Same issue as allocations in the kernel, use object pooling strategies to bypass - Hardware - CPU pipelining; can use code inlining as a hint, but branch predictor might guess incorrectly and have to rewind + - TLB/MMU/paging strategies; - Cache-local operations/Main memory access; need to go through MMU and page tables, etc. If you can keep things cache local, don't have to worry about how long it may take for DRAM access. For multi-socket computers, make sure all lookups are on the same NUMA node as the CPU. - DMA/Open Onload +- Networks + - Internet routing - no idea what the network path looks like, so financial firms pay big money to make sure they have straight-line connections + - Latency within the switch - cut-through vs. store-and-forward routing - https://www.networkworld.com/article/2241573/latency-and-jitter--cut-through-design-pays-off-for-arista--blade.html # Don't do unnecessary work From a47d3c24bf13496e8ae6556f4483c0146bacaa36 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Thu, 25 Apr 2019 17:39:39 -0400 Subject: [PATCH 4/9] Add section on hardware --- _drafts/writing-fast-code.md | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index 0fc2213..0686eeb 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -1,27 +1,27 @@ --- layout: post -title: "On Writing High Performance Code" +title: "On Building High Performance Systems" description: "" category: tags: [] --- -Prior to working in the trading industry, my assumption was that High Frequency Trading (HFT) is made up of people who have access to secret techniques the rest of us mortal developers could only dream of. There had to be some lost art of trading that could only be learned if one had an appropriately tragic backstory: +Prior to working in the trading industry, my assumption was that High Frequency Trading (HFT) is made up of people who have access to secret techniques the rest of us mortal developers could only dream of. There had to be some secret art that could only be learned if one had an appropriately tragic backstory: kung-fu fight > How I assumed HFT people learn their secret techniques How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) [consistently within 750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? -In roughly the time it takes other computers to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), these systems are capable of reading the market data packets, deciding what orders to send, (presumably) doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. +In roughly the time it takes other computers to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), trading systems are capable of reading the market data packets, deciding what orders to send, (presumably) doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. -Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, what shows up from reading public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they're definitely useful); rather, there are two governing principles I want to reflect on: +Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, what shows up from reading public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they're definitely useful); rather, there are two governing principles I want to point out: -1. Focus on variance (average latency) first, overall speed comes later. +1. Optimize for variance (average latency) first. 2. Don't do unnecessary work. # Variance First -Don't get me wrong, I'm a much happier person when things are fast. Computer now boots up in 9 seconds after switching from spinning plates to solid-state? Awesome. But if the computer takes a full 60 seconds to boot up tomorrow? Not so great. When it comes to code, speeding up a function by 10 milliseconds doesn't mean much if the variance of that function is ±1000ms; you simply won't know until you call the function how long it takes to complete. **High-performance code should first optimize for time variance**. Once you're consistent, then you can focus on improving overall time. +Don't get me wrong, I'm a much happier person when things are fast. Computer now boots up in 9 seconds after switching from spinning plates to solid-state? Awesome. But if the computer takes a full 60 seconds to boot up tomorrow? Not so great. When it comes to code, speeding up a function by 10 milliseconds doesn't mean much if the variance of that function is ±1000ms; you simply won't know until you call the function how long it takes to complete. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then you can focus on improving overall time. But you don't have to take my word for it (emphasis added in all quotes below): @@ -34,7 +34,10 @@ But you don't have to take my word for it (emphasis added in all quotes below): - The company PolySync, which is working on autonomous vehicles, [mentions why](https://polysync.io/blog/session-types-for-hearty-codecs/) they picked their specific messaging format: > In general, high performance is almost always desirable for serialization. But in the world of autonomous vehicles, **steady timing performance is even more important** than peak throughput. This is because safe operation is sensitive to timing outliers. Nobody wants the system that decides when to slam on the brakes to occasionally take 100 times longer than usual to encode its commands. -So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring the code through benchmarks. And even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply avoid garbage collection in your Java code. +- [Solarflare](https://solarflare.com/), which makes highly-specialized network hardware, points out variance as a big concern for [electronic trading](https://solarflare.com/electronic-trading/): + > The high stakes world of electronic trading, investment banks, market makers, hedge funds and exchanges demand the **lowest possible latency and jitter** while utilizing the highest bandwidth and return on their investment. + +So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring performance using benchmarks (or (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos). Even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are places to focus on when building high-performance/low-latency systems: @@ -46,7 +49,7 @@ Even though everyone has different needs, there are still common things to look **Allocation**: Every language has a different way of interacting with "heap" memory, but the principle is the same; figuring out what chunks of memory are available to give to a program is complex. Allocation libraries have a great deal of sophisticated strategies to deal with this, but it's unknown how long it may take to find available space. Understanding when your language interacts with the allocator is crucial (and I wrote [a guide for Rust](https://speice.io/2019/02/understanding-allocations-in-rust.html)). -**Data Layout**: Your CPU does a lot of work to keep things running quickly, from [speculative execution](https://www.youtube.com/watch?v=_f7O3IfIR2k) to [caching](https://www.youtube.com/watch?v=vDns3Um39l0&feature=youtu.be&t=1311). And when it comes to caching, how your data is arranged in memory matters. The C family (C, value types in C#, C++) and Rust all have guarantees about layout; from the CPU's perspective, if the work has been done to retrieve one part of a structure from main memory, other parts are likely available in the cache without needing to contact main memory again. Java and Python don't make these same guarantees, so the CPU may have to wait more often on memory lookups. [Cachegrind](http://valgrind.org/docs/manual/cg-manual.html) is great for understanding what's going on. +**Data Layout**: How your data is arranged in memory matters; [data-oriented design](https://www.youtube.com/watch?v=yy8jQgmhbAU) and [cache locality](https://www.youtube.com/watch?v=2EWejmkKlxs&feature=youtu.be&t=1185) can have huge impacts on performance. The C family of languages (C, value types in C#, C++) and Rust all have guarantees about the shape every object takes in memory that others (like Java and Python) can't make. [Cachegrind](http://valgrind.org/docs/manual/cg-manual.html) and kernel [perf](https://perf.wiki.kernel.org/index.php/Main_Page) counters are both great for understanding how performance relates to memory layout. **Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used. However, there's a variance cost associated with this; the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, some languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Benchmarking is incredibly important here. @@ -58,17 +61,20 @@ Code you wrote is likely not the *only* code running on your system. There are m **System calls**: Reading from a UNIX socket? Writing to a file? In addition to not knowing how long the I/O operation takes, these all trigger expensive [system calls (syscalls)](https://en.wikipedia.org/wiki/System_call). To handle these, the CPU must [context switch](https://en.wikipedia.org/wiki/Context_switch) to the kernel, let the kernel operation complete, then context switch back to your program. We'd rather keep these to a minimum. [Strace](https://linux.die.net/man/1/strace) is your friend for understanding when and where syscalls happen. -**Signal Handling**: Far less likely to be an issue, but does trigger a context switch if your code has a handler registered. This will be highly dependent on the application, but you can [block signals](https://www.linuxprogrammingblog.com/all-about-linux-signals?page=show#Blocking_signals) if it's an issue. +**Signal Handling**: Far less likely to be an issue, but signals do trigger a context switch if your code has a handler registered. This will be highly dependent on the application, but you can [block signals](https://www.linuxprogrammingblog.com/all-about-linux-signals?page=show#Blocking_signals) if it's an issue. **Interrupts**: System interrupts are how devices connected to your computer notify the CPU that something has happened. It's then up to the CPU to pause whatever program is running so the operating system can handle the interrupt. We don't want our program to be the one paused, so make sure that [SMP affinity](http://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux) is set and the interrupts are handled on a CPU core not running the program we care about. **[NUMA](https://www.kernel.org/doc/html/latest/vm/numa.html)**: While NUMA is good at making multi-cell systems transparent, there are variance implications; if the kernel moves a process across nodes, future memory accesses must wait for the controller on the original node. Use [numactl](https://linux.die.net/man/8/numactl) to handle memory/cpu pinning. -- Hardware - - CPU pipelining; can use code inlining as a hint, but branch predictor might guess incorrectly and have to rewind - - TLB/MMU/paging strategies; - - Cache-local operations/Main memory access; need to go through MMU and page tables, etc. If you can keep things cache local, don't have to worry about how long it may take for DRAM access. For multi-socket computers, make sure all lookups are on the same NUMA node as the CPU. - - DMA/Open Onload +## Hardware + +**CPU Pipelining/Speculation**: Speculative execution in modern processors gave us vulnerabilities like Spectre, but it also gave us performance improvements like [branch prediction](https://stackoverflow.com/a/11227902/1454178). However, there's variance involved because the CPU might mis-predict. And while the compiler knows a lot about how your CPU [pipelines instructions](https://youtu.be/nAbCKa0FzjQ?t=4467), code can be [structured to help](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=755) the branch predictor. + +**Paging**: For most systems, virtual memory is incredible. Applications live in their own worlds, and the CPU/[MMU](https://en.wikipedia.org/wiki/Memory_management_unit) figures out the details afterward. However, there's a variance penalty associated with memory paging and caching; if you access more memory pages than the [TLB](https://en.wikipedia.org/wiki/Translation_lookaside_buffer) can store, you'll have to wait for the page walk. Kernel perf tools are necessary to figure out if this is an issue, but techniques like [huge pages](https://blog.pythian.com/performance-tuning-hugepages-in-linux/) can reduce TLB burdens. Alternately, running applications in a hypervisor like [Jailhouse](https://github.com/siemens/jailhouse) allows one to skip virtual memory entirely, but this is potentially more work than the benefits are worth. + +**Network Interfaces**: When more than one computer is involved, variance can go up dramatically. Tuning kernel [network parameters](https://github.com/leandromoreira/linux-network-performance-parameters) may be helpful, but modern systems more frequently opt to skip the kernel altogether with a technique called [kernel bypass](https://blog.cloudflare.com/kernel-bypass/). This typically requires specialized hardware and [custom drivers](https://www.openonload.org/), but even industries like [telecom](https://www.bbc.co.uk/rd/blog/2018-04-high-speed-networking-open-source-kernel-bypass) are finding the benefits. + - Networks - Internet routing - no idea what the network path looks like, so financial firms pay big money to make sure they have straight-line connections - Latency within the switch - cut-through vs. store-and-forward routing - https://www.networkworld.com/article/2241573/latency-and-jitter--cut-through-design-pays-off-for-arista--blade.html From 3814544256167ef65ad7af38a1b6381f01f0443c Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Wed, 1 May 2019 17:02:52 -0400 Subject: [PATCH 5/9] Finish post body Still needs a conclusion, but that's all the details that I wanted to cover --- _drafts/writing-fast-code.md | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index 0686eeb..233914e 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -6,24 +6,19 @@ category: tags: [] --- -Prior to working in the trading industry, my assumption was that High Frequency Trading (HFT) is made up of people who have access to secret techniques the rest of us mortal developers could only dream of. There had to be some secret art that could only be learned if one had an appropriately tragic backstory: +Prior to working in the trading industry, my assumption was that High Frequency Trading (HFT) is made up of people who have access to secret techniques mortal developers could only dream of. There had to be some secret art that could only be learned if one had an appropriately tragic backstory: kung-fu fight > How I assumed HFT people learn their secret techniques -How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) [consistently within 750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? +How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) consistently within [750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? In roughly the time it takes other computers to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), trading systems are capable of reading the market data packets, deciding what orders to send, (presumably) doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. -Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, what shows up from reading public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they're definitely useful); rather, there are two governing principles I want to point out: +Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, what shows up from reading public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they can be useful); there's a lot more to worry about than just the code written for the project. Rather, what shows up time and again is a focus on variance, and reducing the gap between the fastest and slowest runs of the same code. -1. Optimize for variance (average latency) first. -2. Don't do unnecessary work. +Don't get me wrong, I'm a much happier person when things are fast. Booting my computer in 10 seconds using SSD's, rather than 20 seconds with spinning plates? Awesome. But if every other day it takes a full 30 seconds to boot up because my computer is feeling temperamental? Not so great. When it comes to code, speeding up a function by an average 10 milliseconds doesn't mean much if there's a 1000ms difference between your fastest and slowest runs; you simply won't know until you call the function how long it takes to complete. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then focus on improving overall time. -# Variance First - -Don't get me wrong, I'm a much happier person when things are fast. Computer now boots up in 9 seconds after switching from spinning plates to solid-state? Awesome. But if the computer takes a full 60 seconds to boot up tomorrow? Not so great. When it comes to code, speeding up a function by 10 milliseconds doesn't mean much if the variance of that function is ±1000ms; you simply won't know until you call the function how long it takes to complete. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then you can focus on improving overall time. - -But you don't have to take my word for it (emphasis added in all quotes below): +This focus on variance shows up all the time in public discussions (emphasis added in all quotes below): - In [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, they specifically call out variance: > Able to consistently sustain an order rate of over 100,000 orders per second at **sub-40 microsecond average latency** @@ -37,7 +32,7 @@ But you don't have to take my word for it (emphasis added in all quotes below): - [Solarflare](https://solarflare.com/), which makes highly-specialized network hardware, points out variance as a big concern for [electronic trading](https://solarflare.com/electronic-trading/): > The high stakes world of electronic trading, investment banks, market makers, hedge funds and exchanges demand the **lowest possible latency and jitter** while utilizing the highest bandwidth and return on their investment. -So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring performance using benchmarks (or (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos). Even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. +So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring system performance (though (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos never hurt). Even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are places to focus on when building high-performance/low-latency systems: @@ -53,9 +48,11 @@ Even though everyone has different needs, there are still common things to look **Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used. However, there's a variance cost associated with this; the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, some languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Benchmarking is incredibly important here. +**Programming Tricks**: These won't make or break performance, but can be useful in specific circumstances. For example, C++ can use [templates instead of branches](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=1206). + ## Kernel -Code you wrote is likely not the *only* code running on your system. There are many ways the operating system interacts with your program, from system calls to memory allocation, that are important to be aware of. +Code you wrote is almost certainly not the *only* code running on your system. There are many ways the operating system interacts with your program, from system calls to memory allocation, that are important to watch for. **Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your program, and make sure only your program can run on that processor. The kernel, by default, is free to schedule any process on any core, so it's important to reserve CPU cores exclusively for the important programs. Also, turning on [`NO_HZ`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. @@ -75,15 +72,13 @@ Code you wrote is likely not the *only* code running on your system. There are m **Network Interfaces**: When more than one computer is involved, variance can go up dramatically. Tuning kernel [network parameters](https://github.com/leandromoreira/linux-network-performance-parameters) may be helpful, but modern systems more frequently opt to skip the kernel altogether with a technique called [kernel bypass](https://blog.cloudflare.com/kernel-bypass/). This typically requires specialized hardware and [custom drivers](https://www.openonload.org/), but even industries like [telecom](https://www.bbc.co.uk/rd/blog/2018-04-high-speed-networking-open-source-kernel-bypass) are finding the benefits. -- Networks - - Internet routing - no idea what the network path looks like, so financial firms pay big money to make sure they have straight-line connections - - Latency within the switch - cut-through vs. store-and-forward routing - https://www.networkworld.com/article/2241573/latency-and-jitter--cut-through-design-pays-off-for-arista--blade.html +## Networks -# Don't do unnecessary work +**Routing**: There's a reason financial firms are willing to pay [millions of euros](https://sniperinmahwah.wordpress.com/2019/03/26/4-les-moeres-english-version/) for rights to land and cell towers - having a straight-line connection from point A to point B means the path their data takes is incredibly simple. In contrast, there are currently 6 computers in between me and Google, but that may change at any moment that my ISP decides a more efficient route is available. Whether it's using [research-quality equipment](https://sniperinmahwah.wordpress.com/2018/05/07/shortwave-trading-part-i-the-west-chicago-tower-mystery/) or just making sure there's no data inadvertently going between data centers, routing matters. -- Don't recompute results - see the C++ template trick to go down buy/sell-specific code paths -- Stack frames are not free; jumping around isn't helpful if you can inline and help out the instruction cache -- Copies are not free +**Protocol**: TCP as a network protocol is awesome: guaranteed and in-order delivery, flow control, and congestion control all built in. But these attributes make the most sense when networking infrastructure is reasonably lossy. For systems that expect nearly all packets to be delivered correctly, the setup handshaking and packet acknowledgment are just overhead. Using UDP (unicast or multicast) may make sense in these contexts as it avoids the chatter needed to track connection state, and [gap-fill](https://iextrading.com/docs/IEX%20Transport%20Specification.pdf) [strategies](http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/moldudp64.pdf) can handle the rest. + +**Switching**: Many routers/switches handle packets by waiting for the whole packet, validating checksums, and then sending to the next device. This behavior is referred to as "store-and-forward." In variance terms, the time needed to move data between two nodes is proportional to the size of that data; the switch must "store" all data before it can calculate checksums and "forward" to the next node. With [cut-through](https://www.networkworld.com/article/2241573/latency-and-jitter--cut-through-design-pays-off-for-arista--blade.html) designs, switches will begin forwarding data as soon as they know where the destination is, checksums be damned. For communications within a datacenter, this can have a huge benefit. # Miscellaneous From 2ee1e22eb140e0d1b261d17a642ead2d1edaaae0 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Thu, 2 May 2019 15:09:42 -0400 Subject: [PATCH 6/9] Finish the first draft Needs editing, but looking good so far. --- _drafts/writing-fast-code.md | 25 ++++++++++++++++--------- _sass/components/_archives.scss | 4 ++++ _sass/components/_page.scss | 4 ++++ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index 233914e..bbe92a3 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -16,7 +16,7 @@ In roughly the time it takes other computers to access [main memory 8 times](htt Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, what shows up from reading public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they can be useful); there's a lot more to worry about than just the code written for the project. Rather, what shows up time and again is a focus on variance, and reducing the gap between the fastest and slowest runs of the same code. -Don't get me wrong, I'm a much happier person when things are fast. Booting my computer in 10 seconds using SSD's, rather than 20 seconds with spinning plates? Awesome. But if every other day it takes a full 30 seconds to boot up because my computer is feeling temperamental? Not so great. When it comes to code, speeding up a function by an average 10 milliseconds doesn't mean much if there's a 1000ms difference between your fastest and slowest runs; you simply won't know until you call the function how long it takes to complete. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then focus on improving overall time. +Don't get me wrong, I'm a much happier person when things are fast. Computer goes from booting in 20 seconds down to 10 because I installed a solid-state drive? Awesome. But if every other day it takes a full 30 seconds to boot up because of corrupted sectors? Not so great. When it comes to code, speeding up a function by an average 10 milliseconds doesn't mean much if there's a 1000ms difference between your fastest and slowest runs; you simply won't know until you call the function how long it takes to complete. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then focus on improving overall time. This focus on variance shows up all the time in public discussions (emphasis added in all quotes below): @@ -32,9 +32,11 @@ This focus on variance shows up all the time in public discussions (emphasis add - [Solarflare](https://solarflare.com/), which makes highly-specialized network hardware, points out variance as a big concern for [electronic trading](https://solarflare.com/electronic-trading/): > The high stakes world of electronic trading, investment banks, market makers, hedge funds and exchanges demand the **lowest possible latency and jitter** while utilizing the highest bandwidth and return on their investment. +One more important thing to note: we're not discussing *total runtime*, but variance of that total runtime. For example, trading firms use [wireless networks](https://sniperinmahwah.wordpress.com/2017/06/07/network-effects-part-i/) because the speed of light through air is faster than through fiber-optic cables. However, there's still at *absolute minimum* a [~33.76 millisecond](http://tinyurl.com/y2vd7tn8) delay required to send data between, say, [Chicago and Tokyo](https://www.theice.com/market-data/connectivity-and-feeds/wireless/tokyo-chicago) (unless [neutrinos](https://arxiv.org/pdf/1203.2847.pdf) become [a thing](https://news.ycombinator.com/item?id=10979340)). If a trading system in Chicago calls the function for "send order to Tokyo" and waits for a result, there's a fundamental limit to how long that will take. The focus should be to keep variance of any additional processing time to a minimum. + So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring system performance (though (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos never hurt). Even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. -Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are places to focus on when building high-performance/low-latency systems: +Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are valuable places to focus on when thinking about variance in high-performance systems: ## Language-specific @@ -46,15 +48,15 @@ Even though everyone has different needs, there are still common things to look **Data Layout**: How your data is arranged in memory matters; [data-oriented design](https://www.youtube.com/watch?v=yy8jQgmhbAU) and [cache locality](https://www.youtube.com/watch?v=2EWejmkKlxs&feature=youtu.be&t=1185) can have huge impacts on performance. The C family of languages (C, value types in C#, C++) and Rust all have guarantees about the shape every object takes in memory that others (like Java and Python) can't make. [Cachegrind](http://valgrind.org/docs/manual/cg-manual.html) and kernel [perf](https://perf.wiki.kernel.org/index.php/Main_Page) counters are both great for understanding how performance relates to memory layout. -**Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used. However, there's a variance cost associated with this; the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, some languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Benchmarking is incredibly important here. +**Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used. However, there's a variance cost associated with this because the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, some languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Benchmarking is incredibly important here. **Programming Tricks**: These won't make or break performance, but can be useful in specific circumstances. For example, C++ can use [templates instead of branches](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=1206). ## Kernel -Code you wrote is almost certainly not the *only* code running on your system. There are many ways the operating system interacts with your program, from system calls to memory allocation, that are important to watch for. +Code you wrote is almost certainly not the *only* code running on your system. There are many ways the operating system interacts with your program, from system calls to memory allocation, that are important to watch for. These are written from a Linux perspective, but Windows does typically have equivalent functionality. -**Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your program, and make sure only your program can run on that processor. The kernel, by default, is free to schedule any process on any core, so it's important to reserve CPU cores exclusively for the important programs. Also, turning on [`NO_HZ`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. +**Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your program (typically using [taskset](https://linux.die.net/man/1/taskset)), and make sure only your program can run on that processor. The kernel, by default, is free to schedule any process on any core, so it's important to reserve CPU cores exclusively for the important programs. Also, turning on [`NO_HZ`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. **System calls**: Reading from a UNIX socket? Writing to a file? In addition to not knowing how long the I/O operation takes, these all trigger expensive [system calls (syscalls)](https://en.wikipedia.org/wiki/System_call). To handle these, the CPU must [context switch](https://en.wikipedia.org/wiki/Context_switch) to the kernel, let the kernel operation complete, then context switch back to your program. We'd rather keep these to a minimum. [Strace](https://linux.die.net/man/1/strace) is your friend for understanding when and where syscalls happen. @@ -74,13 +76,18 @@ Code you wrote is almost certainly not the *only* code running on your system. T ## Networks -**Routing**: There's a reason financial firms are willing to pay [millions of euros](https://sniperinmahwah.wordpress.com/2019/03/26/4-les-moeres-english-version/) for rights to land and cell towers - having a straight-line connection from point A to point B means the path their data takes is incredibly simple. In contrast, there are currently 6 computers in between me and Google, but that may change at any moment that my ISP decides a more efficient route is available. Whether it's using [research-quality equipment](https://sniperinmahwah.wordpress.com/2018/05/07/shortwave-trading-part-i-the-west-chicago-tower-mystery/) or just making sure there's no data inadvertently going between data centers, routing matters. +**Routing**: There's a reason financial firms are willing to pay [millions of euros](https://sniperinmahwah.wordpress.com/2019/03/26/4-les-moeres-english-version/) for rights to a small plot of land - having a straight-line connection from point A to point B means the path their data takes is incredibly simple. In contrast, there are currently 6 computers in between me and Google, but that may change at any moment that my ISP realizes a [more efficient route](https://en.wikipedia.org/wiki/Border_Gateway_Protocol) is available. Whether it's using [research-quality equipment](https://sniperinmahwah.wordpress.com/2018/05/07/shortwave-trading-part-i-the-west-chicago-tower-mystery/) for shortwave radio, or just making sure there's no data inadvertently going between data centers, routing matters. **Protocol**: TCP as a network protocol is awesome: guaranteed and in-order delivery, flow control, and congestion control all built in. But these attributes make the most sense when networking infrastructure is reasonably lossy. For systems that expect nearly all packets to be delivered correctly, the setup handshaking and packet acknowledgment are just overhead. Using UDP (unicast or multicast) may make sense in these contexts as it avoids the chatter needed to track connection state, and [gap-fill](https://iextrading.com/docs/IEX%20Transport%20Specification.pdf) [strategies](http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/moldudp64.pdf) can handle the rest. **Switching**: Many routers/switches handle packets by waiting for the whole packet, validating checksums, and then sending to the next device. This behavior is referred to as "store-and-forward." In variance terms, the time needed to move data between two nodes is proportional to the size of that data; the switch must "store" all data before it can calculate checksums and "forward" to the next node. With [cut-through](https://www.networkworld.com/article/2241573/latency-and-jitter--cut-through-design-pays-off-for-arista--blade.html) designs, switches will begin forwarding data as soon as they know where the destination is, checksums be damned. For communications within a datacenter, this can have a huge benefit. -# Miscellaneous +# Final Thoughts -- Do you know where you care about latency? If any humans are involved, none of these tools make a difference, the humans are already too slow -- If you benchmark, are you benchmarking in a way that's actually helpful? All the same variance rules from above apply to your benchmarks \ No newline at end of file +High-performance systems, whether military, finance, or autonomous cars, are not magical. They do require precision and attention to detail, but much of the tech is available to regular people. Interested in seeing how context switching affects performance of your benchmarks? `taskset` should be installed in all modern Linux distributions. Curious how often garbage collection triggers during a crucial operation? Your language of choice will typically expose details of its operations ([Python](https://docs.python.org/3/library/gc.html), [Java](https://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#DebuggingOptions)). Want to know how hard your program is stressing the TLB? Use `perf record` and look for `dtlb_load_misses.miss_causes_a_walk`. + +Two final caveats then. First, before attempting to apply some of the technology above to your own systems, can you first identify [where/when you care](http://wiki.c2.com/?PrematureOptimization) about "high-performance"? If there's ongoing human involvement with parts of the system, those likely don't need to worry about things like CPU pinning; humans are already far too slow to react in time. + +Second, if you're using benchmarks, are they being designed in a way that's actually helpful? Tools like [Criterion](http://www.serpentine.com/criterion/) (also in [Rust](https://github.com/bheisler/criterion.rs)) and Google's [Benchmark](https://github.com/google/benchmark) output not only average run time, but variance as well; your benchmarking environment is subject to the same concerns your production environment is. + +Finally then, I believe high-performance systems are a matter of philosophy, not necessarily technique. Rigorous focus on variance matters most, and there are plenty of ways to measure and mitigate it; once that's at an acceptable level, then optimize for speed. diff --git a/_sass/components/_archives.scss b/_sass/components/_archives.scss index 1d6ec8d..9f32dc8 100644 --- a/_sass/components/_archives.scss +++ b/_sass/components/_archives.scss @@ -46,5 +46,9 @@ @include fs--body; color: #515862; } + + a { + border-bottom-style: none; + } } diff --git a/_sass/components/_page.scss b/_sass/components/_page.scss index 5a4daab..05a178c 100644 --- a/_sass/components/_page.scss +++ b/_sass/components/_page.scss @@ -17,6 +17,10 @@ p { @include fs--meta; } + + a { + border-bottom-style: none; + } } .c-page__footer { From 53d7b03a14d86e4a4d03edc065731f943fd8146e Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Wed, 5 Jun 2019 16:46:06 -0400 Subject: [PATCH 7/9] First pass revision --- _drafts/writing-fast-code.md | 50 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index bbe92a3..9aef398 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -14,14 +14,14 @@ Prior to working in the trading industry, my assumption was that High Frequency How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) consistently within [750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? In roughly the time it takes other computers to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), trading systems are capable of reading the market data packets, deciding what orders to send, (presumably) doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. -Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. But more to the point, what shows up from reading public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they can be useful); there's a lot more to worry about than just the code written for the project. Rather, what shows up time and again is a focus on variance, and reducing the gap between the fastest and slowest runs of the same code. +Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. Instead, what shows up in public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they have their place); there's a lot more to worry about than just the code written for the project. What I focus on now is **variance**, and reducing the gap between the fastest and slowest runs of the same code. -Don't get me wrong, I'm a much happier person when things are fast. Computer goes from booting in 20 seconds down to 10 because I installed a solid-state drive? Awesome. But if every other day it takes a full 30 seconds to boot up because of corrupted sectors? Not so great. When it comes to code, speeding up a function by an average 10 milliseconds doesn't mean much if there's a 1000ms difference between your fastest and slowest runs; you simply won't know until you call the function how long it takes to complete. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then focus on improving overall time. +Don't get me wrong, I'm a much happier person when things are fast. Computer goes from booting in 20 seconds down to 10 because I installed a solid-state drive? Awesome. But if every fifth day it takes a full minute to boot up because of corrupted sectors? Not so great. Average speed is the same in each situation, but you're painfully aware of that minute when it happens. When it comes to code, the principal is the same: speeding up a function by an average 10 milliseconds doesn't mean much if there's a 100ms difference between your fastest and slowest runs. When performance matters, you need to respond quickly *every time*, not just in aggregate. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then focus on improving overall time. This focus on variance shows up all the time in public discussions (emphasis added in all quotes below): -- In [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, they specifically call out variance: - > Able to consistently sustain an order rate of over 100,000 orders per second at **sub-40 microsecond average latency** +- In [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, they mention consistency alongside average latency: + > Able to **consistently sustain an order rate** of over 100,000 orders per second at sub-40 microsecond average latency - The [Aeron](https://github.com/real-logic/aeron) message bus has this to say about performance: > Performance is the key focus. Aeron is designed to be the highest throughput with the lowest and **most predictable latency possible** of any messaging system @@ -32,62 +32,62 @@ This focus on variance shows up all the time in public discussions (emphasis add - [Solarflare](https://solarflare.com/), which makes highly-specialized network hardware, points out variance as a big concern for [electronic trading](https://solarflare.com/electronic-trading/): > The high stakes world of electronic trading, investment banks, market makers, hedge funds and exchanges demand the **lowest possible latency and jitter** while utilizing the highest bandwidth and return on their investment. -One more important thing to note: we're not discussing *total runtime*, but variance of that total runtime. For example, trading firms use [wireless networks](https://sniperinmahwah.wordpress.com/2017/06/07/network-effects-part-i/) because the speed of light through air is faster than through fiber-optic cables. However, there's still at *absolute minimum* a [~33.76 millisecond](http://tinyurl.com/y2vd7tn8) delay required to send data between, say, [Chicago and Tokyo](https://www.theice.com/market-data/connectivity-and-feeds/wireless/tokyo-chicago) (unless [neutrinos](https://arxiv.org/pdf/1203.2847.pdf) become [a thing](https://news.ycombinator.com/item?id=10979340)). If a trading system in Chicago calls the function for "send order to Tokyo" and waits for a result, there's a fundamental limit to how long that will take. The focus should be to keep variance of any additional processing time to a minimum. +One more important thing to note: we're not discussing *total runtime*, but variance of that total runtime. For example, trading firms use [wireless networks](https://sniperinmahwah.wordpress.com/2017/06/07/network-effects-part-i/) because the speed of light through air is faster than through fiber-optic cables. There's still at *absolute minimum* a [~33.76 millisecond](http://tinyurl.com/y2vd7tn8) delay required to send data between, say, [Chicago and Tokyo](https://www.theice.com/market-data/connectivity-and-feeds/wireless/tokyo-chicago) (unless [neutrinos](https://arxiv.org/pdf/1203.2847.pdf) become [a thing](https://news.ycombinator.com/item?id=10979340)). If a trading system in Chicago calls the function for "send order to Tokyo" and waits for a result, there's a physical limit to how long that will take. In this situation, the focus is on keeping variance of additional processing to a minimum. So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring system performance (though (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos never hurt). Even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. -Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are valuable places to focus on when thinking about variance in high-performance systems: +Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are my focus areas when thinking about high-performance systems: ## Language-specific -**Garbage Collection**: How often does garbage collection happen? What are the impacts? +**Garbage Collection**: How often does garbage collection happen? When is it triggered? What are the impacts? - [In Python](https://rushter.com/blog/python-garbage-collector/), individual objects are collected if the reference count reaches 0, and each generation is collected if `num_alloc - num_dealloc > gc_threshold` whenever an allocation happens. The GIL is acquired for the duration of generational collection. - Java has [many](https://docs.oracle.com/en/java/javase/12/gctuning/parallel-collector1.html#GUID-DCDD6E46-0406-41D1-AB49-FB96A50EB9CE) [different](https://docs.oracle.com/en/java/javase/12/gctuning/garbage-first-garbage-collector.html#GUID-ED3AB6D3-FD9B-4447-9EDF-983ED2F7A573) [collection](https://docs.oracle.com/en/java/javase/12/gctuning/garbage-first-garbage-collector-tuning.html#GUID-90E30ACA-8040-432E-B3A0-1E0440AB556A) [algorithms](https://docs.oracle.com/en/java/javase/12/gctuning/z-garbage-collector1.html#GUID-A5A42691-095E-47BA-B6DC-FB4E5FAA43D0) to choose from, each with different characteristics. The default algorithms (Parallel GC in Java 8, G1 in Java 9) freeze the JVM while collecting, while more recent algorithms ([ZGC](https://wiki.openjdk.java.net/display/zgc) and [Shenandoah](https://wiki.openjdk.java.net/display/shenandoah)) are designed to keep "stop the world" to a minimum by doing collection work in parallel. -**Allocation**: Every language has a different way of interacting with "heap" memory, but the principle is the same; figuring out what chunks of memory are available to give to a program is complex. Allocation libraries have a great deal of sophisticated strategies to deal with this, but it's unknown how long it may take to find available space. Understanding when your language interacts with the allocator is crucial (and I wrote [a guide for Rust](https://speice.io/2019/02/understanding-allocations-in-rust.html)). +**Allocation**: Every language has a different way of interacting with "heap" memory, but the principle is the same; figuring out what chunks of memory are available to give to a program is complex. Understanding when your language interacts with the allocator is crucial (and I wrote [a guide for Rust](https://speice.io/2019/02/understanding-allocations-in-rust.html)). Maybe look into alternative allocators like [jemalloc](http://jemalloc.net/) and [tcmalloc](https://gperftools.github.io/gperftools/tcmalloc.html). -**Data Layout**: How your data is arranged in memory matters; [data-oriented design](https://www.youtube.com/watch?v=yy8jQgmhbAU) and [cache locality](https://www.youtube.com/watch?v=2EWejmkKlxs&feature=youtu.be&t=1185) can have huge impacts on performance. The C family of languages (C, value types in C#, C++) and Rust all have guarantees about the shape every object takes in memory that others (like Java and Python) can't make. [Cachegrind](http://valgrind.org/docs/manual/cg-manual.html) and kernel [perf](https://perf.wiki.kernel.org/index.php/Main_Page) counters are both great for understanding how performance relates to memory layout. +**Data Layout**: How your data is arranged in memory matters; [data-oriented design](https://www.youtube.com/watch?v=yy8jQgmhbAU) and [cache locality](https://www.youtube.com/watch?v=2EWejmkKlxs&feature=youtu.be&t=1185) can have huge impacts on performance. The C family of languages (C, value types in C#, C++) and Rust all have guarantees about the shape every object takes in memory that others (e.g. Java and Python) can't make. [Cachegrind](http://valgrind.org/docs/manual/cg-manual.html) and kernel [perf](https://perf.wiki.kernel.org/index.php/Main_Page) counters are both great for understanding how performance relates to memory layout. -**Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used. However, there's a variance cost associated with this because the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, some languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Benchmarking is incredibly important here. +**Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used, rather than how the compiler expects it to be used. However, there's a variance cost associated with this because the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, many of these languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Be careful when benchmarking to avoid comparing apples and oranges; you don't want a benchmark to suddenly speed up because the JIT compiler kicked in. -**Programming Tricks**: These won't make or break performance, but can be useful in specific circumstances. For example, C++ can use [templates instead of branches](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=1206). +**Programming Tricks**: These won't make or break performance, but can be useful in specific circumstances. For example, C++ can use [templates instead of branches](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=1206) in critical sections. ## Kernel -Code you wrote is almost certainly not the *only* code running on your system. There are many ways the operating system interacts with your program, from system calls to memory allocation, that are important to watch for. These are written from a Linux perspective, but Windows does typically have equivalent functionality. +Code you wrote is almost certainly not the *only* code running on your hardware. There are many ways the operating system interacts with your program, from interrupts to system calls, that are important to watch for. These are written from a Linux perspective, but Windows does typically have equivalent functionality. -**Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your program (typically using [taskset](https://linux.die.net/man/1/taskset)), and make sure only your program can run on that processor. The kernel, by default, is free to schedule any process on any core, so it's important to reserve CPU cores exclusively for the important programs. Also, turning on [`NO_HZ`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. +**Scheduling**: Set the [processor affinity](https://en.wikipedia.org/wiki/Processor_affinity) of your process/thread (typically using [taskset](https://linux.die.net/man/1/taskset)), and make sure only your program can run on that processor. The kernel, by default, is free to schedule any process on any core, so it's important to reserve CPU cores exclusively for the important programs. Also, turning on [`NO_HZ`](https://github.com/torvalds/linux/blob/master/Documentation/timers/NO_HZ.txt) and turning off hyper-threading are probably good ideas. -**System calls**: Reading from a UNIX socket? Writing to a file? In addition to not knowing how long the I/O operation takes, these all trigger expensive [system calls (syscalls)](https://en.wikipedia.org/wiki/System_call). To handle these, the CPU must [context switch](https://en.wikipedia.org/wiki/Context_switch) to the kernel, let the kernel operation complete, then context switch back to your program. We'd rather keep these to a minimum. [Strace](https://linux.die.net/man/1/strace) is your friend for understanding when and where syscalls happen. +**System calls**: Reading from a UNIX socket? Writing to a file? In addition to not knowing how long the I/O operation takes, these all trigger expensive [system calls (syscalls)](https://en.wikipedia.org/wiki/System_call). To handle these, the CPU must [context switch](https://en.wikipedia.org/wiki/Context_switch) to the kernel, let the kernel operation complete, then context switch back to your program. We'd rather keep these [to a minimum](https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript) (see timestamp 18:20). [Strace](https://linux.die.net/man/1/strace) is your friend for understanding when and where syscalls happen. **Signal Handling**: Far less likely to be an issue, but signals do trigger a context switch if your code has a handler registered. This will be highly dependent on the application, but you can [block signals](https://www.linuxprogrammingblog.com/all-about-linux-signals?page=show#Blocking_signals) if it's an issue. -**Interrupts**: System interrupts are how devices connected to your computer notify the CPU that something has happened. It's then up to the CPU to pause whatever program is running so the operating system can handle the interrupt. We don't want our program to be the one paused, so make sure that [SMP affinity](http://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux) is set and the interrupts are handled on a CPU core not running the program we care about. +**Interrupts**: System interrupts are how devices connected to your computer notify the CPU that something has happened. The CPU will then choose a processor core to pause and context switch to the OS to handle the interrupt. Make sure that [SMP affinity](http://www.alexonlinux.com/smp-affinity-and-proper-interrupt-handling-in-linux) is set so that interrupts are handled on a CPU core not running the program you care about. -**[NUMA](https://www.kernel.org/doc/html/latest/vm/numa.html)**: While NUMA is good at making multi-cell systems transparent, there are variance implications; if the kernel moves a process across nodes, future memory accesses must wait for the controller on the original node. Use [numactl](https://linux.die.net/man/8/numactl) to handle memory/cpu pinning. +**[NUMA](https://www.kernel.org/doc/html/latest/vm/numa.html)**: While NUMA is good at making multi-cell systems transparent, there are variance implications; if the kernel moves a process across nodes, future memory accesses must wait for the controller on the original node. Use [numactl](https://linux.die.net/man/8/numactl) to handle memory-/cpu-cell pinning so this doesn't happen. ## Hardware -**CPU Pipelining/Speculation**: Speculative execution in modern processors gave us vulnerabilities like Spectre, but it also gave us performance improvements like [branch prediction](https://stackoverflow.com/a/11227902/1454178). However, there's variance involved because the CPU might mis-predict. And while the compiler knows a lot about how your CPU [pipelines instructions](https://youtu.be/nAbCKa0FzjQ?t=4467), code can be [structured to help](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=755) the branch predictor. +**CPU Pipelining/Speculation**: Speculative execution in modern processors gave us vulnerabilities like Spectre, but it also gave us performance improvements like [branch prediction](https://stackoverflow.com/a/11227902/1454178). And if the CPU mis-speculates your code, there's variance associated with rewind and replay. While the compiler knows a lot about how your CPU [pipelines instructions](https://youtu.be/nAbCKa0FzjQ?t=4467), code can be [structured to help](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=755) the branch predictor. -**Paging**: For most systems, virtual memory is incredible. Applications live in their own worlds, and the CPU/[MMU](https://en.wikipedia.org/wiki/Memory_management_unit) figures out the details afterward. However, there's a variance penalty associated with memory paging and caching; if you access more memory pages than the [TLB](https://en.wikipedia.org/wiki/Translation_lookaside_buffer) can store, you'll have to wait for the page walk. Kernel perf tools are necessary to figure out if this is an issue, but techniques like [huge pages](https://blog.pythian.com/performance-tuning-hugepages-in-linux/) can reduce TLB burdens. Alternately, running applications in a hypervisor like [Jailhouse](https://github.com/siemens/jailhouse) allows one to skip virtual memory entirely, but this is potentially more work than the benefits are worth. +**Paging**: For most systems, virtual memory is incredible. Applications live in their own worlds, and the CPU/[MMU](https://en.wikipedia.org/wiki/Memory_management_unit) figures out the details. However, there's a variance penalty associated with memory paging and caching; if you access more memory pages than the [TLB](https://en.wikipedia.org/wiki/Translation_lookaside_buffer) can store, you'll have to wait for the page walk. Kernel perf tools are necessary to figure out if this is an issue, but using [huge pages](https://blog.pythian.com/performance-tuning-hugepages-in-linux/) can reduce TLB burdens. Alternately, running applications in a hypervisor like [Jailhouse](https://github.com/siemens/jailhouse) allows one to skip virtual memory entirely, but this is probably more work than the benefits are worth. -**Network Interfaces**: When more than one computer is involved, variance can go up dramatically. Tuning kernel [network parameters](https://github.com/leandromoreira/linux-network-performance-parameters) may be helpful, but modern systems more frequently opt to skip the kernel altogether with a technique called [kernel bypass](https://blog.cloudflare.com/kernel-bypass/). This typically requires specialized hardware and [custom drivers](https://www.openonload.org/), but even industries like [telecom](https://www.bbc.co.uk/rd/blog/2018-04-high-speed-networking-open-source-kernel-bypass) are finding the benefits. +**Network Interfaces**: When more than one computer is involved, variance can go up dramatically. Tuning kernel [network parameters](https://github.com/leandromoreira/linux-network-performance-parameters) may be helpful, but modern systems more frequently opt to skip the kernel altogether with a technique called [kernel bypass](https://blog.cloudflare.com/kernel-bypass/). This typically requires specialized hardware and [drivers](https://www.openonload.org/), but even industries like [telecom](https://www.bbc.co.uk/rd/blog/2018-04-high-speed-networking-open-source-kernel-bypass) are finding the benefits. ## Networks -**Routing**: There's a reason financial firms are willing to pay [millions of euros](https://sniperinmahwah.wordpress.com/2019/03/26/4-les-moeres-english-version/) for rights to a small plot of land - having a straight-line connection from point A to point B means the path their data takes is incredibly simple. In contrast, there are currently 6 computers in between me and Google, but that may change at any moment that my ISP realizes a [more efficient route](https://en.wikipedia.org/wiki/Border_Gateway_Protocol) is available. Whether it's using [research-quality equipment](https://sniperinmahwah.wordpress.com/2018/05/07/shortwave-trading-part-i-the-west-chicago-tower-mystery/) for shortwave radio, or just making sure there's no data inadvertently going between data centers, routing matters. +**Routing**: There's a reason financial firms are willing to pay [millions of euros](https://sniperinmahwah.wordpress.com/2019/03/26/4-les-moeres-english-version/) for rights to a small plot of land - having a straight-line connection from point A to point B means the path their data takes is the shortest possible. In contrast, there are currently 6 computers in between me and Google, but that may change at any moment if my ISP realizes a [more efficient route](https://en.wikipedia.org/wiki/Border_Gateway_Protocol) is available. Whether it's using [research-quality equipment](https://sniperinmahwah.wordpress.com/2018/05/07/shortwave-trading-part-i-the-west-chicago-tower-mystery/) for shortwave radio, or just making sure there's no data inadvertently going between data centers, routing matters. -**Protocol**: TCP as a network protocol is awesome: guaranteed and in-order delivery, flow control, and congestion control all built in. But these attributes make the most sense when networking infrastructure is reasonably lossy. For systems that expect nearly all packets to be delivered correctly, the setup handshaking and packet acknowledgment are just overhead. Using UDP (unicast or multicast) may make sense in these contexts as it avoids the chatter needed to track connection state, and [gap-fill](https://iextrading.com/docs/IEX%20Transport%20Specification.pdf) [strategies](http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/moldudp64.pdf) can handle the rest. +**Protocol**: TCP as a network protocol is awesome: guaranteed and in-order delivery, flow control, and congestion control all built in. But these attributes make the most sense when networking infrastructure is lossy; for systems that expect nearly all packets to be delivered correctly, the setup handshaking and packet acknowledgment are just overhead. Using UDP (unicast or multicast) may make sense in these contexts as it avoids the chatter needed to track connection state, and [gap-fill](https://iextrading.com/docs/IEX%20Transport%20Specification.pdf) [strategies](http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/moldudp64.pdf) can handle the rest. -**Switching**: Many routers/switches handle packets by waiting for the whole packet, validating checksums, and then sending to the next device. This behavior is referred to as "store-and-forward." In variance terms, the time needed to move data between two nodes is proportional to the size of that data; the switch must "store" all data before it can calculate checksums and "forward" to the next node. With [cut-through](https://www.networkworld.com/article/2241573/latency-and-jitter--cut-through-design-pays-off-for-arista--blade.html) designs, switches will begin forwarding data as soon as they know where the destination is, checksums be damned. For communications within a datacenter, this can have a huge benefit. +**Switching**: Many routers/switches handle packets using "store-and-forward" behavior: wait for the whole packet, validate checksums, and then send to the next device. In variance terms, the time needed to move data between two nodes is proportional to the size of that data; the switch must "store" all data before it can calculate checksums and "forward" to the next node. With ["cut-through"](https://www.networkworld.com/article/2241573/latency-and-jitter--cut-through-design-pays-off-for-arista--blade.html) designs, switches will begin forwarding data as soon as they know where the destination is, checksums be damned. This means there's a fixed cost (at the switch) for network traffic, no matter the size. # Final Thoughts -High-performance systems, whether military, finance, or autonomous cars, are not magical. They do require precision and attention to detail, but much of the tech is available to regular people. Interested in seeing how context switching affects performance of your benchmarks? `taskset` should be installed in all modern Linux distributions. Curious how often garbage collection triggers during a crucial operation? Your language of choice will typically expose details of its operations ([Python](https://docs.python.org/3/library/gc.html), [Java](https://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#DebuggingOptions)). Want to know how hard your program is stressing the TLB? Use `perf record` and look for `dtlb_load_misses.miss_causes_a_walk`. +High-performance systems, regardless of industry, are not magical. They do require extreme precision and attention to detail, but they're designed, built, and operated by regular people, using a lot of tools that are publicly available. Interested in seeing how context switching affects performance of your benchmarks? `taskset` should be installed in all modern Linux distributions, and can be used to make sure the OS never migrates your process. Curious how often garbage collection triggers during a crucial operation? Your language of choice will typically expose details of its operations ([Python](https://docs.python.org/3/library/gc.html), [Java](https://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#DebuggingOptions)). Want to know how hard your program is stressing the TLB? Use `perf record` and look for `dtlb_load_misses.miss_causes_a_walk`. -Two final caveats then. First, before attempting to apply some of the technology above to your own systems, can you first identify [where/when you care](http://wiki.c2.com/?PrematureOptimization) about "high-performance"? If there's ongoing human involvement with parts of the system, those likely don't need to worry about things like CPU pinning; humans are already far too slow to react in time. +Two final caveats then. First, before attempting to apply some of the technology above to your own systems, can you first identify [where/when you care](http://wiki.c2.com/?PrematureOptimization) about "high-performance"? As an example, if parts of a system rely on humans pushing buttons, you likely don't need to worry CPU pinning. Humans are already far too slow to react in time. Second, if you're using benchmarks, are they being designed in a way that's actually helpful? Tools like [Criterion](http://www.serpentine.com/criterion/) (also in [Rust](https://github.com/bheisler/criterion.rs)) and Google's [Benchmark](https://github.com/google/benchmark) output not only average run time, but variance as well; your benchmarking environment is subject to the same concerns your production environment is. -Finally then, I believe high-performance systems are a matter of philosophy, not necessarily technique. Rigorous focus on variance matters most, and there are plenty of ways to measure and mitigate it; once that's at an acceptable level, then optimize for speed. +Finally then, I believe high-performance systems are a matter of philosophy, not necessarily technique. Rigorous focus on variance is the first step, and there are plenty of ways to measure and mitigate it; once that's at an acceptable level, then optimize for speed. From 3f561c959c88792eec508ffa603151e07da0c3c1 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Wed, 5 Jun 2019 18:12:12 -0400 Subject: [PATCH 8/9] Allocation rewording --- _drafts/writing-fast-code.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index 9aef398..0918926 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -12,16 +12,18 @@ Prior to working in the trading industry, my assumption was that High Frequency > How I assumed HFT people learn their secret techniques How else do you explain people working on systems that complete the round trip of market data in to orders out (a.k.a. tick-to-trade) consistently within [750-800 nanoseconds](https://stackoverflow.com/a/22082528/1454178)? -In roughly the time it takes other computers to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), trading systems are capable of reading the market data packets, deciding what orders to send, (presumably) doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. +In roughly the time it takes a computer to access [main memory 8 times](https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html), trading systems are capable of reading the market data packets, deciding what orders to send, doing risk checks, creating new packets for exchange-specific protocols, and putting those packets on the wire. -Having now worked in the trading industry, I can confirm the developers are mortal; I've made some simple mistakes at the very least. Instead, what shows up in public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on C++ optimization tricks to make code fast (though they have their place); there's a lot more to worry about than just the code written for the project. What I focus on now is **variance**, and reducing the gap between the fastest and slowest runs of the same code. +Having now worked in the trading industry, I can confirm the developers aren't super-human; I've made some simple mistakes at the very least. Instead, what shows up in public discussions is that philosophy, not technique, separates high-performance systems from everything else. Performance-critical systems don't rely on "this one cool C++ optimization trick" to make code fast (though micro-optimizations have their place); there's a lot more to worry about than just the code written for the project. -Don't get me wrong, I'm a much happier person when things are fast. Computer goes from booting in 20 seconds down to 10 because I installed a solid-state drive? Awesome. But if every fifth day it takes a full minute to boot up because of corrupted sectors? Not so great. Average speed is the same in each situation, but you're painfully aware of that minute when it happens. When it comes to code, the principal is the same: speeding up a function by an average 10 milliseconds doesn't mean much if there's a 100ms difference between your fastest and slowest runs. When performance matters, you need to respond quickly *every time*, not just in aggregate. **High-performance systems should first optimize for time variance**. Once you're consistent at the time scale you care about, then focus on improving overall time. +The framework I'd propose is this: **If you want to build high-performance systems, focus first on reducing performance variance** (reducing the gap between the fastest and slowest runs of the same code), **and only look at average latency once variance is at an acceptable level**. + +Don't get me wrong, I'm a much happier person when things are fast. Computer goes from booting in 20 seconds down to 10 because I installed a solid-state drive? Awesome. But if every fifth day it takes a full minute to boot because of corrupted sectors? Not so great. Average speed over the course of a week is the same in each situation, but you're painfully aware of that minute when it happens. When it comes to code, the principal is the same: speeding up a function by an average 10 milliseconds doesn't mean much if there's a 100ms difference between your fastest and slowest runs. When performance matters, you need to respond quickly *every time*, not just in aggregate. High-performance systems should first optimize for time variance. Once you're consistent at the time scale you care about, then focus on improving overall time. This focus on variance shows up all the time in public discussions (emphasis added in all quotes below): -- In [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, they mention consistency alongside average latency: - > Able to **consistently sustain an order rate** of over 100,000 orders per second at sub-40 microsecond average latency +- Consistency shows up in [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, the most performance-sensitive component of the exchange: + > Able to **consistently sustain** an order rate of over 100,000 orders per second at sub-40 microsecond average latency - The [Aeron](https://github.com/real-logic/aeron) message bus has this to say about performance: > Performance is the key focus. Aeron is designed to be the highest throughput with the lowest and **most predictable latency possible** of any messaging system @@ -29,14 +31,14 @@ This focus on variance shows up all the time in public discussions (emphasis add - The company PolySync, which is working on autonomous vehicles, [mentions why](https://polysync.io/blog/session-types-for-hearty-codecs/) they picked their specific messaging format: > In general, high performance is almost always desirable for serialization. But in the world of autonomous vehicles, **steady timing performance is even more important** than peak throughput. This is because safe operation is sensitive to timing outliers. Nobody wants the system that decides when to slam on the brakes to occasionally take 100 times longer than usual to encode its commands. -- [Solarflare](https://solarflare.com/), which makes highly-specialized network hardware, points out variance as a big concern for [electronic trading](https://solarflare.com/electronic-trading/): +- [Solarflare](https://solarflare.com/), which makes highly-specialized network hardware, points out variance (jitter) as a big concern for [electronic trading](https://solarflare.com/electronic-trading/): > The high stakes world of electronic trading, investment banks, market makers, hedge funds and exchanges demand the **lowest possible latency and jitter** while utilizing the highest bandwidth and return on their investment. -One more important thing to note: we're not discussing *total runtime*, but variance of that total runtime. For example, trading firms use [wireless networks](https://sniperinmahwah.wordpress.com/2017/06/07/network-effects-part-i/) because the speed of light through air is faster than through fiber-optic cables. There's still at *absolute minimum* a [~33.76 millisecond](http://tinyurl.com/y2vd7tn8) delay required to send data between, say, [Chicago and Tokyo](https://www.theice.com/market-data/connectivity-and-feeds/wireless/tokyo-chicago) (unless [neutrinos](https://arxiv.org/pdf/1203.2847.pdf) become [a thing](https://news.ycombinator.com/item?id=10979340)). If a trading system in Chicago calls the function for "send order to Tokyo" and waits for a result, there's a physical limit to how long that will take. In this situation, the focus is on keeping variance of additional processing to a minimum. +And one more clarification: we're not discussing how to reduce *total run-time*, but its variance. For example, trading firms use [wireless networks](https://sniperinmahwah.wordpress.com/2017/06/07/network-effects-part-i/) because the speed of light through air is faster than through fiber-optic cables. There's still at *absolute minimum* a [~33.76 millisecond](http://tinyurl.com/y2vd7tn8) delay required to send data between, say, [Chicago and Tokyo](https://www.theice.com/market-data/connectivity-and-feeds/wireless/tokyo-chicago) (unless [neutrinos](https://arxiv.org/pdf/1203.2847.pdf) become [a thing](https://news.ycombinator.com/item?id=10979340)). If a trading system in Chicago calls the function for "send order to Tokyo" and waits for a result, there's a physical limit to how long that will take. In this situation, the focus is on keeping variance of additional processing to a minimum. -So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring system performance (though (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos never hurt). Even then, each project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision. Alternately, you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. +So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring system performance (though (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos never hurt). Even then, every project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision, or you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. -Even though everyone has different needs, there are still common things to look for when trying to isolate variance. In no particular order, these are my focus areas when thinking about high-performance systems: +Even though everyone has different needs, there are still common things to look for when trying to isolate and eliminate variance. In no particular order, these are my focus areas when thinking about high-performance systems: ## Language-specific @@ -44,11 +46,11 @@ Even though everyone has different needs, there are still common things to look - [In Python](https://rushter.com/blog/python-garbage-collector/), individual objects are collected if the reference count reaches 0, and each generation is collected if `num_alloc - num_dealloc > gc_threshold` whenever an allocation happens. The GIL is acquired for the duration of generational collection. - Java has [many](https://docs.oracle.com/en/java/javase/12/gctuning/parallel-collector1.html#GUID-DCDD6E46-0406-41D1-AB49-FB96A50EB9CE) [different](https://docs.oracle.com/en/java/javase/12/gctuning/garbage-first-garbage-collector.html#GUID-ED3AB6D3-FD9B-4447-9EDF-983ED2F7A573) [collection](https://docs.oracle.com/en/java/javase/12/gctuning/garbage-first-garbage-collector-tuning.html#GUID-90E30ACA-8040-432E-B3A0-1E0440AB556A) [algorithms](https://docs.oracle.com/en/java/javase/12/gctuning/z-garbage-collector1.html#GUID-A5A42691-095E-47BA-B6DC-FB4E5FAA43D0) to choose from, each with different characteristics. The default algorithms (Parallel GC in Java 8, G1 in Java 9) freeze the JVM while collecting, while more recent algorithms ([ZGC](https://wiki.openjdk.java.net/display/zgc) and [Shenandoah](https://wiki.openjdk.java.net/display/shenandoah)) are designed to keep "stop the world" to a minimum by doing collection work in parallel. -**Allocation**: Every language has a different way of interacting with "heap" memory, but the principle is the same; figuring out what chunks of memory are available to give to a program is complex. Understanding when your language interacts with the allocator is crucial (and I wrote [a guide for Rust](https://speice.io/2019/02/understanding-allocations-in-rust.html)). Maybe look into alternative allocators like [jemalloc](http://jemalloc.net/) and [tcmalloc](https://gperftools.github.io/gperftools/tcmalloc.html). +**Allocation**: Every language has a different way of interacting with "heap" memory, but the principle is the same: running the allocator to allocate/deallocate memory takes time that can often be put to better use. Understanding when your language interacts with the allocator is crucial, and not always obvious. For example: C++ and Rust don't allocate heap memory for iterators, but Java does (meaning potential GC pauses). Take time to understand heap behavior (I made a [a guide for Rust](https://speice.io/2019/02/understanding-allocations-in-rust.html)), and look into alternative allocators ([jemalloc](http://jemalloc.net/), [tcmalloc](https://gperftools.github.io/gperftools/tcmalloc.html)) that might run faster than the operating system default. **Data Layout**: How your data is arranged in memory matters; [data-oriented design](https://www.youtube.com/watch?v=yy8jQgmhbAU) and [cache locality](https://www.youtube.com/watch?v=2EWejmkKlxs&feature=youtu.be&t=1185) can have huge impacts on performance. The C family of languages (C, value types in C#, C++) and Rust all have guarantees about the shape every object takes in memory that others (e.g. Java and Python) can't make. [Cachegrind](http://valgrind.org/docs/manual/cg-manual.html) and kernel [perf](https://perf.wiki.kernel.org/index.php/Main_Page) counters are both great for understanding how performance relates to memory layout. -**Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used, rather than how the compiler expects it to be used. However, there's a variance cost associated with this because the virtual machine may stop executing while it waits for translation from VM bytecode to native code. As a remedy, many of these languages now support ahead-of-time compilation ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which should bring JIT-like benefits to non-JIT languages. Be careful when benchmarking to avoid comparing apples and oranges; you don't want a benchmark to suddenly speed up because the JIT compiler kicked in. +**Just-In-Time Compilation**: Languages that are compiled on the fly (LuaJIT, C#, Java, PyPy) are great because they optimize your program for how it's actually being used, rather than how a compiler expects it to be used. However, there's a variance problem if the program stops executing while waiting for translation from VM bytecode to native code. As a remedy, many languages support ahead-of-time compilation in addition to the JIT versions ([CoreRT](https://github.com/dotnet/corert) in C# and [GraalVM](https://www.graalvm.org/) in Java). On the other hand, LLVM supports [Profile Guided Optimization](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization), which theoretically brings JIT benefits to non-JIT languages. Finally, be careful to avoid comparing apples and oranges during benchmarks; you don't want your code to suddenly speed up because the JIT compiler kicked in. **Programming Tricks**: These won't make or break performance, but can be useful in specific circumstances. For example, C++ can use [templates instead of branches](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=1206) in critical sections. From 4714448b1a124a3e8d1d3bd42632a03b34845fe3 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Wed, 31 Jul 2019 16:17:15 -0400 Subject: [PATCH 9/9] Final draft, and publish --- _drafts/writing-fast-code.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/_drafts/writing-fast-code.md b/_drafts/writing-fast-code.md index 0918926..8005ca4 100644 --- a/_drafts/writing-fast-code.md +++ b/_drafts/writing-fast-code.md @@ -18,11 +18,11 @@ Having now worked in the trading industry, I can confirm the developers aren't s The framework I'd propose is this: **If you want to build high-performance systems, focus first on reducing performance variance** (reducing the gap between the fastest and slowest runs of the same code), **and only look at average latency once variance is at an acceptable level**. -Don't get me wrong, I'm a much happier person when things are fast. Computer goes from booting in 20 seconds down to 10 because I installed a solid-state drive? Awesome. But if every fifth day it takes a full minute to boot because of corrupted sectors? Not so great. Average speed over the course of a week is the same in each situation, but you're painfully aware of that minute when it happens. When it comes to code, the principal is the same: speeding up a function by an average 10 milliseconds doesn't mean much if there's a 100ms difference between your fastest and slowest runs. When performance matters, you need to respond quickly *every time*, not just in aggregate. High-performance systems should first optimize for time variance. Once you're consistent at the time scale you care about, then focus on improving overall time. +Don't get me wrong, I'm a much happier person when things are fast. Computer goes from booting in 20 seconds down to 10 because I installed a solid-state drive? Awesome. But if every fifth day it takes a full minute to boot because of corrupted sectors? Not so great. Average speed over the course of a week is the same in each situation, but you're painfully aware of that minute when it happens. When it comes to code, the principal is the same: speeding up a function by an average of 10 milliseconds doesn't mean much if there's a 100ms difference between your fastest and slowest runs. When performance matters, you need to respond quickly *every time*, not just in aggregate. High-performance systems should first optimize for time variance. Once you're consistent at the time scale you care about, then focus on improving average time. -This focus on variance shows up all the time in public discussions (emphasis added in all quotes below): +This focus on variance shows up all the time in industry too (emphasis added in all quotes below): -- Consistency shows up in [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, the most performance-sensitive component of the exchange: +- In [marketing materials](https://business.nasdaq.com/market-tech/marketplaces/trading) for NASDAQ's matching engine, the most performance-sensitive component of the exchange, dependability is highlighted in addition to instantaneous metrics: > Able to **consistently sustain** an order rate of over 100,000 orders per second at sub-40 microsecond average latency - The [Aeron](https://github.com/real-logic/aeron) message bus has this to say about performance: @@ -34,9 +34,9 @@ This focus on variance shows up all the time in public discussions (emphasis add - [Solarflare](https://solarflare.com/), which makes highly-specialized network hardware, points out variance (jitter) as a big concern for [electronic trading](https://solarflare.com/electronic-trading/): > The high stakes world of electronic trading, investment banks, market makers, hedge funds and exchanges demand the **lowest possible latency and jitter** while utilizing the highest bandwidth and return on their investment. -And one more clarification: we're not discussing how to reduce *total run-time*, but its variance. For example, trading firms use [wireless networks](https://sniperinmahwah.wordpress.com/2017/06/07/network-effects-part-i/) because the speed of light through air is faster than through fiber-optic cables. There's still at *absolute minimum* a [~33.76 millisecond](http://tinyurl.com/y2vd7tn8) delay required to send data between, say, [Chicago and Tokyo](https://www.theice.com/market-data/connectivity-and-feeds/wireless/tokyo-chicago) (unless [neutrinos](https://arxiv.org/pdf/1203.2847.pdf) become [a thing](https://news.ycombinator.com/item?id=10979340)). If a trading system in Chicago calls the function for "send order to Tokyo" and waits for a result, there's a physical limit to how long that will take. In this situation, the focus is on keeping variance of additional processing to a minimum. +And to further clarify: we're not discussing *total run-time*, but variance of total run-time. There are situations where it's not reasonably possible to make things faster, and you'd much rather be consistent. For example, trading firms use [wireless networks](https://sniperinmahwah.wordpress.com/2017/06/07/network-effects-part-i/) because the speed of light through air is faster than through fiber-optic cables. There's still at *absolute minimum* a [~33.76 millisecond](http://tinyurl.com/y2vd7tn8) delay required to send data between, say, [Chicago and Tokyo](https://www.theice.com/market-data/connectivity-and-feeds/wireless/tokyo-chicago). If a trading system in Chicago calls the function for "send order to Tokyo" and waits to see if a trade occurs, there's a physical limit to how long that will take. In this situation, the focus is on keeping variance of *additional processing* to a minimum, since speed of light is the limiting factor. -So how exactly does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring system performance (though (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos never hurt). Even then, every project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision, or you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. +So how does one go about looking for and eliminating performance variance? To tell the truth, I don't think a systematic answer or flow-chart exists. There's no substitute for (A) building a deep understanding of the entire technology stack, and (B) actually measuring system performance (though (C) watching a lot of [CppCon](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg) videos for inspiration never hurt). Even then, every project cares about performance to a different degree; you may need to build an entire [replica production system](https://www.youtube.com/watch?v=NH1Tta7purM&feature=youtu.be&t=3015) to accurately benchmark at nanosecond precision, or you may be content to simply [avoid garbage collection](https://www.youtube.com/watch?v=BD9cRbxWQx8&feature=youtu.be&t=1335) in your Java code. Even though everyone has different needs, there are still common things to look for when trying to isolate and eliminate variance. In no particular order, these are my focus areas when thinking about high-performance systems: @@ -88,8 +88,6 @@ Code you wrote is almost certainly not the *only* code running on your hardware. High-performance systems, regardless of industry, are not magical. They do require extreme precision and attention to detail, but they're designed, built, and operated by regular people, using a lot of tools that are publicly available. Interested in seeing how context switching affects performance of your benchmarks? `taskset` should be installed in all modern Linux distributions, and can be used to make sure the OS never migrates your process. Curious how often garbage collection triggers during a crucial operation? Your language of choice will typically expose details of its operations ([Python](https://docs.python.org/3/library/gc.html), [Java](https://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#DebuggingOptions)). Want to know how hard your program is stressing the TLB? Use `perf record` and look for `dtlb_load_misses.miss_causes_a_walk`. -Two final caveats then. First, before attempting to apply some of the technology above to your own systems, can you first identify [where/when you care](http://wiki.c2.com/?PrematureOptimization) about "high-performance"? As an example, if parts of a system rely on humans pushing buttons, you likely don't need to worry CPU pinning. Humans are already far too slow to react in time. +Two final guiding questions, then: first, before attempting to apply some of the technology above to your own systems, can you first identify [where/when you care](http://wiki.c2.com/?PrematureOptimization) about "high-performance"? As an example, if parts of a system rely on humans pushing buttons, CPU pinning won't have any measurable effect. Humans are already far too slow to react in time. Second, if you're using benchmarks, are they being designed in a way that's actually helpful? Tools like [Criterion](http://www.serpentine.com/criterion/) (also in [Rust](https://github.com/bheisler/criterion.rs)) and Google's [Benchmark](https://github.com/google/benchmark) output not only average run time, but variance as well; your benchmarking environment is subject to the same concerns your production environment is. -Second, if you're using benchmarks, are they being designed in a way that's actually helpful? Tools like [Criterion](http://www.serpentine.com/criterion/) (also in [Rust](https://github.com/bheisler/criterion.rs)) and Google's [Benchmark](https://github.com/google/benchmark) output not only average run time, but variance as well; your benchmarking environment is subject to the same concerns your production environment is. - -Finally then, I believe high-performance systems are a matter of philosophy, not necessarily technique. Rigorous focus on variance is the first step, and there are plenty of ways to measure and mitigate it; once that's at an acceptable level, then optimize for speed. +Finally, I believe high-performance systems are a matter of philosophy, not necessarily technique. Rigorous focus on variance is the first step, and there are plenty of ways to measure and mitigate it; once that's at an acceptable level, then optimize for speed.