As a network stack software developer, you will take part in the development of a cutting-edge, high-performance, distributed, scalable storage product.
Weka's storage system is a high performance clustered system, with one of the critical components, is our own proprietary network protocol implementation. This is an L5 over UDP RPC protocol which implements retries, congestion control, etc. all from user-space over DPDK, or over IB. This protocol needs to work in a noisy network environment such as clouds, as well we in on-prem installations.
As the owner of this component, you will be responsible for developing new features, improving performance, and adaptation to more environments.
To achieve this, you must have experience in software development and in Linux based systems (User, and preferably Kernel space). You need to understand how to write scalable high-performance low-level code, in an efficient manner.
We seek top-notch people who can design their own features and not just implement them. We need people who are enthusiastic about software and proud of the work they are doing.
The successful candidate will join a team that develops in C, Python, and D. D is a relatively new language (http://dlang.org/) that combines system-level programming with modern features such as real object-oriented programming and garbage collection. Knowing D is an advantage but not mandatory. Writing in D puts you at the forefront of software development technology.
Intensive experience of at least 3 years of C or C++ system-level programming related to high-performance systems. We are seeking people who understand software development under the hood and are familiar with how CPU caching, multi-threading, context switching, interrupt handling and other architectural aspects affect software performance. Familiarity with DPDK is a plus.
- Experience C/C++ low-level high-performance code writing
- Familiarity with Intel server architecture (NUMA, caching, interrupts, etc)
- Familiarity with network protocols (TCP, Congestion Control)
Experience in the Following Areas is an Advantage
- DPDK and SPDK
- Storage systems and SSDs
- Kernel driver experience
- Past experience with hardware interfaces
- D programming language experience