2 ms·
Most of what I'm doing is systems engineering. Incorporating research and code from others. Reporting and occasionally fixing bugs. The research in this case
by kev009 8y ago
Most of what I'm doing is systems engineering. Incorporating research and code from others. Reporting and occasionally fixing bugs. The research in this case is primarily coming from Google. Linux has the state of the art TCP stack at the moment, but for various reasons (http://www.bsdnow.tv/episodes/2018_04_11-bowling_in_the_limelight http://www.bsdnow.tv/episodes/2018_04_11-bowling_in_the_lime...) we run FreeBSD. So the other part is re-implementing things on that. I am individual contributor on the main body of our code, I directly recruited and hired my team, and sought out and set up contracts to get features like TCP Fast Open done (with some particular twists that make sense for our workload). In an industrial setting, it is both competent and desirable for most companies to be in this kind of engineering mode (application of existing technology).
I'll give this simple example as a call to action. Schedulers of any kind, say the one that puts threads on to CPUs, are open-ended problems. If you co-design a system with hardware and software, it is highly likely you can get a 20% speedup in a system by manually emplacing different workloads (i.e. NIC interrupt handlers, application threads). In TCP, this same kind of thing applies. If you run Linux, there are a lot of things in the Documentation/ directory of the kernel that are worth reading and tuning. Selecting a congestion control, and tuning buffer sizes is very much "working on TCP" and could benefit any company using TCP. It's also something anyone with a few years of general development experience shouldn't feel intimidated to do! The most critical skill isn't any particular technology but learning to measure and confidently make and deploy changes. Likewise, there are very few things on computers that can't be improved. This can range from tuning general settings to a particular workload or change of underlying hardware, to algorithmic advances.