From a discussion in one seminar
Here, I am attaching my email that
was sent to my peers who were in one seminar (CSL) at my department.
I've realized that
what I'm doing regarding my research shares the
common goal, "move up any headache in kernel to the easy-going and
soon-to-be-stable user-mode world."
But my
approach is not a systematic way. So, I just would like to
add my humble experience here which may be related to the performance
issue.
I'm
investigating problematic behaviors of auto rate algorithms in
multihop wireless networks using Emulab wireless nodes. Each wireless
node has two
Atheros-chipset-based Wifi cards. These wifi cards are controlled by a
linux driver, Madwifi, that provides three different autorate
algorithms. I'm also using a Click-implementation of Roofnet (mesh
networks)
on top of the Madwifi driver. While testing and modifying these
autorate algorithms, I got many system crashes as I expected. So I
determined to move the existing algorithms into Click
USER-LEVEL modules. It took just several hours for me to make a
corresponding click module in user-level mode (Of course, based on
concrete understanding of all details on Madwifi and Click). After I've
done with two of them
(SampleRate and Minstrel autorate algorithms), most of tests were just
straightforward without
worrying about any possible system crash. As a result, it was easy and
fast to find some bugs (potentially critical) in
the existing implementations (I made sure they were not my mistakes in
transferring -:) - some of them were algorithmic errors while
others were just implementation bugs.
Although
I've been happy with this approach, I've noticed there
is a performance issue. I've observed in some cases there is up to 20%
of performance
degradation in click-user-level mode, compared to one in the Madwifi
driver. So the main reason would be, I guess, due to three context
switches between user mode and kernel mode when the user-level click is
running (there are some reasons that the user-level click cannot avoid
those three context switches). So, according to my experience, besides
the performance issue, it has been excellent to have some partial
functionality of
interest in the driver run in user-level mode.
Just
my two cents
:)