This is an old revision of the document!


Study, analyze and improve the interrupt handling infrastructure in FreeBSD.

In detail, i will first complete the (already started) study of the existing framework, in order to locate bottlenecks and other problems.

Then i will work on removing these problems, implement any necessary mechanism to improve interrupt handling, and study the interaction between interrupts and any strictly correlated subsystems (i.e. the interaction between interrupt threads, kernel preemption and the scheduler).

  1. finish the profiling of current and past (4.x) FreeBSD interrupt framework (both UP and SMP): the data gathered in this phase will be used later for comparisons and regression tests;
  1. study the interactions between interrupt threads and scheduler, in particular study the scheduling in presence of kernel preemption;
  1. implements interrupt filtering, following the framework devised in Darwin (or any other model that proves to be worthwhile);
  1. select one suitable driver to be used to compare different approaches, and modify it to support different interrupt handling architectures (fast interrupt, ithread, taskqueue and polling), analyzing its performance in different scenarios;
  1. provide documented code examples for the various approaches;
  1. summarize all the results in a paper to be published later in a BSDCon conference.

I spent the last months studying the FreeBSD interrupt handling code and profiling it. During my experiments i found 'expensive' sections of code in term of cpu usage (i.e. the cpu accounting) and unclear behaviors in term of latency (i.e. kernel preemption): some of them were fixed, while others are still present.

First i plan to finish my analysis of actual FreeBSD interrupt framework, then study in depth the latency problem found when kernel preemption is turned on.

When enough data are gathered, the next step will consist of implementing new so lutions to handle interrupt: i.e. in the past there were discussions and work to implement Darwin's interrupt filtering, so i could continue that work or i'll implement any other mechanism described in literature or employed by another system that proves to be useful.

With the new framework(s) in place, a driver will be selected and all the previous experiments will be rerun to demonstrate the improvements over the previous models.

In the end, the results of the work will be collected in a paper to be published later at a BSDCon conference.

…

  • paolopisati/interrupts.1148990612.txt.gz
  • Last modified: 2006/05/30 12:03
  • by PaoloPisati