Skip to main content

Senior Performance Engineer, C++ Performance Optimization

(Helsinki or Stuttgart)

The Situation:
We are working on solving a complex computer science problem, one that has not been solved yet, specifically related to computational and temporal determinism in time-constrained distributed computing systems. If you understood the film TENET a few years ago, then you may be perfect for this. (kidding. But it was an amazing film, no?)
In this role, you will be responsible for analyzing and optimizing the performance of our high-data throughput middleware solutions running on QNX Neutrino SDP 7.1 and Linux platforms. You will play a critical role in ensuring our software meets the reliability, speed, and efficiency goals. Sounds interesting, right?
Let’s be honest: people who end up being interested in this kind of work, usually have their brains wired in a certain way where they <love> efficiency, like an esthetic of how things taste, to their brain. They tend to have a very strong preference for things that are….elegantly efficient. In this theme, a lot of these people have a hard time finding actually interesting problems to work on. Most work in the software industry today is mundane, trivial integration work. Boring stuff, making a modification to an ERP, or a banking system or some idiot web app that no one will use (no offense).
Basemark is one of 3, maybe 4 interesting SW tech product companies in Finland where you need to solve certain problems for this particular kind of engineer to work out. This is not mundane.The product we are building is under air tight NDA. Think: automotive robotics for the future.
So, what’s the job?
In short, we have an existing piece of SW that is under development, and we want to make sure that we are not doing something silly in that implementation so that it goes unnecessarily slower than it needs to be. We are operating under the constraints that everything must be very robust and verified and checked, which brings in slowness. But we want someone who can identify opportunities for non-trivial optimizations in different parts of the code, so we end up with a product that is more performant.
This is not blind optimization, we are not making computer games to do hacks to make it faster, we can’t get away with any of that as this will go into safety critical systems.
We have done a lot optimization actually in how we write the code. What we want to do, is squeeze out the last few drops that are probably not detectable by staring at the code. Rather you need to do performance profiling of some example system using the product, to be able to identify unexpected bottlenecks.
You will therefore need specialized expertise in understanding profiling tools and how software interacts with the OS kernel in terms of Syscalls, and how expensive those Syscalls might be. You will need to be expertly fluent in C++ to make suggestions in what to change, and very familiar with at least writing real-time or performance SW for Linux. You do not need automotive experience.
You may have worked on open source SW like an Apache web server, something installed onto servers, where you need to get the job done where the stable world relies on it to function (and you needed to make it fast).

What do you think, is this you?
Here is the technical raw description in case you need more convincing:
Responsibilities:
  •  Analyze and optimize the performance of middleware components and applications running on QNX Neutrino SDP 7.1 and Linux.
  •  Identify performance bottlenecks and propose solutions to improve efficiency.
  •  Develop performance test cases and integrate them into our Gitlab+Bazel CI.
  •  Collaborate with development teams in Europe, North America and Asia to identify and resolve performance issues.
  •  Utilize profiling tools like valgrind, callgrind, perf, and Google Benchmark to diagnose performance problems.
  •  Work with Bazel to build and test performance of complex software systems.
  •  Document performance test results and analysis findings so teams can react to them.
Qualifications:
  • 5+ years of software development experience for UNIX-like modern operating systems such as Linux focused on soft or hard real time applications or libraries
  • A very good understanding of C++ 11, 14 or 17
  • A good understanding of operating system concepts and principles
  • Familiarity with Linux POSIX APIs and optionally also QNX Neutrino SDP 7/8
  • Hands-on experience with performance profiling and analysis tools like valgrind, callgrind, perf, and Google Benchmark.
  • Excellent problem-solving and analytical skills.
  • Good English writing & verbal skills
  • Experience with Agile development processes
Bonus Points:
  • Experience with embedded systems development.
  • Experience with recent Automotive HPC systems
  • Experience with the Bazel build system
  • Knowledge of POSIX shared memory management, networking protocols and inter-ECU communication mechanisms
Benefits:
  •  Opportunity to work on cutting-edge technology.
  •  Collaborative and supportive work environment.
Please send your CV and cover letter to jobs@basemark.com with the subject ‘Senior Software Engineer’. Good luck!

On this website we use first or third-party tools that store small files (cookie) on your device. Cookies are normally used to allow the site to run properly (technical cookies), to generate navigation usage reports (statistics cookies) and to suitable advertise our services/products (profiling cookies). We can directly use technical cookies, but you have the right to choose whether or not to enable statistical and profiling cookies. Enabling these cookies, you help us to offer you a better experience.