Senior Linux/UNIX Kernel Developer
Job Description:
We are seeking a highly skilled and experienced Senior Linux/UNIX Kernel Developer to join our dynamic team. This role requires in-depth expertise in Linux or UNIX kernel development across a range of platforms, including RHEL, SLES, Ubuntu, Solaris, HP-UX, and AIX. The ideal candidate should have extensive experience with file system development, kernel-level debugging, and performance tuning in distributed systems. The Senior Kernel Developer will be responsible for handling complex technical challenges, working with both kernel and user-space code, and contributing to critical open-source projects. If you have a deep understanding of system architecture, distributed systems, and performance optimization, this role presents an exciting opportunity for you to work at the forefront of technology.
Key Responsibilities:
1. Kernel Development and Debugging
The Senior Kernel Developer will be responsible for developing and maintaining kernel code for various Linux and UNIX platforms, including RHEL, SLES, Ubuntu, Solaris, HP-UX, and AIX. The role demands the ability to perform kernel-level debugging, troubleshoot complex issues, and optimize kernel performance. You will need to understand and navigate through complex distributed systems, solving problems at both the kernel and protocol levels.
Your experience in debugging and resolving kernel-level issues will directly impact the performance and stability of the systems we build. Whether it’s analyzing memory dumps, debugging kernel panics, or tracking down performance bottlenecks, you will play a key role in maintaining the integrity of the system.
2. File Systems Development
A significant portion of the role will involve working with file systems development. The Senior Kernel Developer should have a deep understanding of file system concepts, their structures, and how to optimize them for performance in both single-node and distributed environments. You will contribute to the design, development, and debugging of file system code, ensuring efficient storage handling, high reliability, and fault tolerance in complex systems.
3. Distributed Systems and Debugging
The Senior Kernel Developer will play an integral role in managing and troubleshooting complex distributed systems. You will apply your expertise to debug issues within distributed environments, ensuring that communication between distributed systems is seamless and free from errors. Familiarity with distributed protocols such as NFS, RPC, UDP, and TCP/IP is required to troubleshoot communication issues at the protocol level.
This aspect of the role will involve debugging complex issues related to network protocols, and you should be prepared to dive into the low-level code to find the root causes of network-related problems.
4. Performance Tuning and Optimization
A critical part of the role involves solving complex performance problems in distributed systems. The Senior Kernel Developer will need to understand system bottlenecks, optimize resource usage, and implement solutions to increase overall system performance. This includes both kernel-level performance tuning and debugging, as well as optimizing user-space processes that interact with the kernel.
You will need to be familiar with profiling tools and performance analysis methods, using them to identify and resolve issues in system performance. Experience in solving latency and throughput issues in high-performance systems will be a key asset.
5. Open Source Community Contributions
As a Senior Kernel Developer, you will be expected to actively contribute to the open-source community. You will engage with other developers and maintainers to enhance the open-source ecosystem, contributing code patches, bug fixes, and documentation to open-source kernel projects. Your contributions will help drive the evolution of Linux/UNIX kernel and file systems, making a direct impact on the broader developer community.
6. Collaboration and Communication
In this role, you will work closely with other team members, including system administrators, software engineers, and quality assurance teams. Strong collaboration skills are essential to work across teams and ensure that all systems are developed and maintained efficiently. You will also need to provide clear documentation and communicate your findings and solutions effectively to both technical and non-technical stakeholders.
Required Skills and Qualifications:
Significant Experience with Linux or UNIX Kernel Development: The ideal candidate should have extensive experience in kernel-level development, with a solid background in working on various Linux and UNIX platforms, including RHEL, SLES, Ubuntu, Solaris, HP-UX, and AIX.
File System Development: Experience in the development and optimization of file systems is essential. The candidate should be proficient in designing and debugging file systems for performance and reliability in complex environments.
Kernel-Level Debugging: You must demonstrate the ability to debug kernel-level issues, including kernel panics, memory management, and device drivers.
Experience with Instruction Sets (x86_64, ppc64, SPARC, etc.): Familiarity with different processor architectures and instruction sets, such as x86_64, ppc64, ppc64le, and SPARC, is essential for writing optimized kernel code and debugging performance issues.
Understanding of Distributed Systems: The role requires expertise in complex distributed systems, including a deep understanding of their behavior and troubleshooting methods. You will be responsible for debugging issues that arise in distributed computing environments, ensuring seamless communication and system performance.
Networking Protocols Knowledge: A strong understanding of networking protocols (such as NFS, RPC, UDP, TCP/IP) is required. You must be able to debug issues at the protocol level and ensure efficient data transmission and communication between systems.
UNIX/Linux Administration: Experience in administering UNIX/Linux systems is critical. You should have a strong foundation in system-level administration tasks, including managing servers, configuring kernels, and handling system optimizations.
Programming Skills in C: Extensive experience programming in C is a must for this role. You should have an in-depth understanding of system programming, memory management, and low-level debugging.
Knowledge of C++ and Scripting Languages: Proficiency in C++ and one or more scripting languages such as PERL will be advantageous. This will help you work effectively in both user-space and kernel-space development tasks.
Performance Tuning and Optimization: A track record of solving complex performance problems, particularly in distributed systems, is highly desired. Experience with performance analysis tools and techniques is essential.
Experience with Windows Kernel Development (Preferred): While not mandatory, experience in Windows kernel development would be a valuable asset, as it will provide cross-platform knowledge for better kernel-level debugging.
Education and Experience Requirements:
Educational Qualification: A B-Tech or equivalent degree in Computer Science, Electrical Engineering, or a related field is required.
Years of Experience: Significant experience in kernel development, preferably 5+ years, working on complex UNIX/Linux systems and distributed systems.
Position Details:
Job Title: Senior Linux/UNIX Kernel Developer
No. of Positions: 1
Auto Req ID: 1471106BR
Skill Level: 3 (Expert)