tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Fwd: Prospective project for Summer of Code.



Hi Taylor,
    I have a couple of questions about the format of my proposal as well as declarations with respect to my schedule in the summer, just so we're on the same page.

Firstly, the questions about my rough draft.
>1. The *free* page queues, serialized by uvm_fpageqlock, are handled
>in src/sys/uvm/uvm_page.c, in the uvm_pagealloc_* functions, to find
>free pages of RAM to serve as backing pages on demand.
>This part is pretty well localized -- the free page queues aren't used
>much outside uvm_page.c, though it does require some coordination with
>page daemon (the kernel thread that asks other subsystems to
>relinquish pages currently in use in order to make them free for
>others to use).
>I've attached a sketch I wrote a couple years ago for a replacement
>page allocation procedure with per-CPU free page queues.  It's
>probably not even compile-tested -- it needs a lot of work.

>2. The (in-use) page queues, serialized by uvm_pageqlock, are handled
>partly in uvm_page.c, but mostly in uvm_pdpolicy_*.c.  These are
>trickier: these are queues of pages that are good candidates for
>freeing, when the page daemon decides it needs them.
>Changing uvm_pageqlock requires a candidate plan for how to teach the
>page daemon to work independently on multiple CPUs, or something like
>that.  It is not necessary to articulate such a plan the project
>application, and it's OK if this is more of an exploration than
>implementing a definite solution, but an application should have time
>for doing something about it.

1. I have provided a table specifying the timeline of the milestones in the 
parallelizing page queues project. In it, I have given the time  7th June to 21st June 
and 5th July to 24th July to implement the solutions for the first and second milestones 
respectively excluding the time for understanding, ideating and finalizing the design of the 
solution. Do you think its a realistic goal?

2. I have structured the proposal such that I won't move to the implementation of the 
(x+1)th milestone till I perfectly complete the xth. Fair enough?

>3. The vmobjlock is the most difficult part requiring more measurement
>first, as noted in the project description, and for someone new to
>NetBSD development altogether, may be a trifle ambitious.  It is used
>(a) throughout uvm to serialize access to the pages of an object such
>as a file that can be mapped into any virtual address space (a `VM
>object'), (b) in reading and writing pages to backing storage for
>files, e.g. src/sys/miscfs/genfs/genfs_io.c, and (c) in other parts of
>the file system API `vfs'.
3. Considering that I am beginner at this, I have kept the third milestone of the 
project optional, because I want to focus on the perfection of the first two. So it may
seem like I'm giving a lot more time than is necessary to each of the first two milestones
of this project. But I want to work on this slowly and make it as perfect as it can be. 
Will that be okay?

4. Regarding the working of all three modules together, do they depend on each other?
Will any changes in the (x+1)th milestone create flaws in the xth? The website mentions
that they are independent, but I just want to confirm it once.

>A couple of good tests to measure the impact of the performance are
>(a) build.sh itself, and (b) pgbench.  If you use lockstat(1) during
>build.sh, e.g. start build.sh in one terminal and then run `lockstat
>-o lockstat.out sleep 15' in another terminal, you will almost
>certainly see the uvm_fpageqlock, uvm_pageqlock, and libc vmobjlock
>near the top in contention.
5. Will these tests be helpful only for the third milestone? Or will they be the same for the
     first two as well? If not, what would the tests for the first two milestones be?

Secondly, about my schedule in the Summer.
I figure that a student on an F-1 Visa can work as part of GSoC for CPT 
but I am currently hunting for internships for this summer at other companies 
and would most likely join them if I get an offer. Otherwise,
I would work at my university under the guidance of a professor. 
But seeing that there are very few chances of me getting to contribute to actual
kernel code, I really want to contribute to NetBSD for this project.
    a. In the first case, I wont be able to take CPT, but is there any other way I can work on
        this project?
    b. However, in the second case of me working under the guidance of a professor, I'll be able
        to enroll in GSoC as CPT and will have flexible work hours and would be able to contribute a lot more. 
        Will that be okay too?

Hope I'm not too late with these questions! Good morning! Have a nice day!

Regards,
Raunaq



Home | Main Index | Thread Index | Old Index