Off late, I’ve been facing a world of hesitation because I don’t know how to effectively start my first blog post! I find myself staring at the computer screen for several hours and procrastinating mainly because I am clueless on how to connect the dots and start writing it already.
On the 27th of April, I found out that I was accepted for the Outreachy program to intern in the Linux Kernel for the upcoming three months from May to August! 🙂
Starting from the beginning, lets start by talking about Outreachy! It is a program wherein anyone aspiring to venture into FOSS can look into the participating organizations code and propose projects after discussions with the mentors on the IRC ( Internet Relay Chat ).
Since being introduced to Computer System Organizations in college, I’ve been interested in learning more about it. You can find the patches I submitted during the application period here:
Now coming, to my project. I will work on the Linux kernels’ Full Dynticks system also known as CONFIG_NO_HZ_FULL. This CONFIG_NO_HZ_FULL support is of interest in particular to real-time Linux users and also can be of great benefit to HPC (High Performance Computing) workloads where there is only one task running (performance improvements by maybe 1%), a reduction in real-time workload latency, and can also help desktop and mobile users where there is just one CPU task active on a given core.
The idea is to delay periodic interrupts or ‘ticks’ whenever possible. Every time the tick fires, a check is made to see if there are expired timers which are then executed. Some of these timers are pinned which means that they are executable only on specific CPUs while some are not which means they can execute on any CPU.
This is called timer affinity.
If a non-pinned timer is executed on a full dynticks CPU ( one where the ticks are delayed ), the tick will fire on it in order to run the timer which is undesirable as we wish to minimize disturbances on these CPUs.
The task I have as of now is to affine non-pinned timers to the CPUs that are not in full dynticks mode.
I am looking forward to working on this project with the guidance of my mentors! I will update the blog regularly to keep in sync with the work I’m doing.