<div dir="ltr"><div class="gmail_extra" style="font-size:12.8px"><span style="font-size:12.8px">I am trying to implement ideas mentioned in the following OSDI paper:</span><br></div><div class="gmail_extra" style="font-size:12.8px">L. Soares and M. Stumm. FlexSC: flexible system call scheduling with exception-less system calls. In Proc. OSDI, 2010.<br></div><div class="gmail_extra" style="font-size:12.8px"><a href="http://www.cs.cmu.edu/~chensm/Big_Data_reading_group/papers/flexsc-osdi10.pdf" target="_blank">http://www.cs.cmu.edu/~chensm/Big_Data_reading_group/papers/flexsc-osdi10.pdf</a><br></div><div class="gmail_extra" style="font-size:12.8px"><br></div><div class="gmail_extra" style="font-size:12.8px">The paper propose a new mechanism for applications to make syscall.<br></div><div class="gmail_extra" style="font-size:12.8px">The brief idea is to have two types of threads 1) User thread 2) Kernel Thread.</div><div class="gmail_extra" style="font-size:12.8px">These two threads share same address space, file descriptor tables, parent pid etc.</div><div class="gmail_extra" style="font-size:12.8px">Whenever user thread wants to make syscall, it would post the information about syscall number &amp; arguments</div><div class="gmail_extra" style="font-size:12.8px">to syscall in common shared page. User thread would then wait till the results are posted on shared page.</div><div class="gmail_extra" style="font-size:12.8px">The kernel thread reads the syscall arguments from shared page and writes the results to shared page.</div><div class="gmail_extra" style="font-size:12.8px">User thread consumes the results and continues execution.</div><div class="gmail_extra" style="font-size:12.8px">Since the kernel thread and user thread can be scheduled on different cpu cores, and user thread is ideally never executing</div><div class="gmail_extra" style="font-size:12.8px">kernel code and vice versa, one can expect gain in instruction per cycle for application, since the cache pollution is reduced to </div><div class="gmail_extra" style="font-size:12.8px">some extent<b>.</b></div><div class="gmail_extra" style="font-size:12.8px"><br></div><div class="gmail_extra" style="font-size:12.8px">So to implement this mechanism, it is important for the user and kernel thread to share address space, fd tables etc.</div><div class="gmail_extra" style="font-size:12.8px">kernel_thread() works fine with older kernels to achieve this task, but is no longer an option.</div><div class="gmail_extra" style="font-size:12.8px"><br></div><div class="gmail_extra" style="font-size:12.8px">Is there of any mechanism for sharing fd tables as well? </div><div class="gmail_extra" style="font-size:12.8px">Please let me know.</div><div class="gmail_extra" style="font-size:12.8px"><br></div><div class="gmail_extra" style="font-size:12.8px">Thanks a lot,</div><div class="gmail_extra" style="font-size:12.8px">Shashank</div></div>