By: Sushil Pandey
Title: Investigating Multi-page Folio Support in the OpenAFS Linux Kernel Module
This project investigates enhancing the OpenAFS Linux kernel module by integrating multi-page folio support, addressing a critical performance limitation in the current system. OpenAFS currently uses single-page operations to interact with the Linux kernel's memory management system, despite newer kernel versions offering folio APIs that can manage multiple contiguous pages as a single unit. The goal is to transition OpenAFS to utilize multi-page folios, which will allow the system to handle larger memory regions more efficiently and reduce unnecessary overhead.
Key objectives include:
Mentor: Cheyenne Wills
Contributor: Sushil Pandey
OpenAFS has been working with compatibility issues in newer Linux kernel versions. Specifically, with the introduction of folios (Linux 5.16+) and changes in memory management paradigms, OpenAFS's reliance on small page units has become a performance bottleneck. This project focuses on modernizing OpenAFS's memory handling by integrating folios, enhancing the efficiency of large file operations, and ensuring compatibility with the latest Linux kernels.
During this phase, I analyzed the OpenAFS codebase to understand the memory management logic, focusing on areas where compatibility with newer kernel features was lacking. I also researched folios and their potential benefits for OpenAFS. This period was primarily dedicated to:
Focus: Folio Integration, Performance Optimization, and Large Page Research
During this combined phase, I focused on implementing the core compatibility layer to support folio-based operations and integrating multi-page folios for better memory management.
Key achievements:
Although the primary goals of the project were met, there are several areas where further improvements can be made:
The focus of this GSoC project was on folio-based caching, and I plan to continue working on optimizing the performance and further developing inode optimizations and large page support.
I would like to extend my gratitude to the OpenAFS development community for providing me with the opportunity to contribute to this important open-source project. Special thanks to my mentor, Cheyenne Wills, for his invaluable guidance and support. Her expertise in both OpenAFS internals and Linux kernel development was instrumental in overcoming the project's challenges.
This work sets the foundation for future OpenAFS development, ensuring it will stay compatible with modern Linux kernels and provide efficient, scalable solutions for distributed file systems. I look forward to continuing this research and development to further modernize OpenAFS's memory management system.