Adam's daily '''To Do''' list
2006-10-26
- HP visit.
- Spend some time on GPT report - No time left for this with HP visit and other commitments.
2006-10-19
- Spend some time on GPT report.
2006-10-06
Go over plans with PaulDavies - Done.
Start on report - Just get it setup, Done.
2006-09-25
- Make a concerted push to finish up Gelato ICE talk slides for GPT bit.
Draft done, will go over it again tonight and then leave it baring requested changes PeterChubb.
2006-09-22
- Finish up Gelato ICE talk draft. Focus on Figures.
2006-09-21
- Go over Gelato ICE talk.
2006-09-15
- Continue implementing iterators.
- Replaced most traverse based iterators with stack iterators.
- Tearing down the address space is still an issue, destroy_user_page_table() should be empty and free_pgd_range() should do the tear down, currently the opposite is implemented and results in all invalid nodes of the page table being visited, resulting in fork() being an order of magnitude more expensive. Since free_pgd_range() only operates over the addresses covered by vma's it should be quicker, its implementation is a bit trickier.
- Even without the tear down issue we are seeing significant overheads compared to the MLPT, fork() is about twice as expensive (~300ms vs ~150ms), while exec is ~1000ms vs ~800ms (for MLPT), and shell is ~4800ms vs ~4000ms.
- I suspect the overhead is in the larger page table node size.
2006-09-14
Review iterator building blocks to find performance issues - Done.
Pretty sure I've found the problem, its a pretty clear design bug. Iterators always visit all nodes of the tree - Fixed.
- Fork/Exec/Shell now all faster then the "retraverse the tree" iterators, still much slower then the MLPT though.
2006-09-11
- Look at Gelato ICE talk.
- Do some benchmarking initial benchmarking of GPT.
- PTI patches don't seem to be source of performance issues.
- Iterators based on GPT building block perform worse then simply retraversing the tree, the code is obviously too complex.
- Look into copy iterator implementation using GPT iterator building blocks.
- Might need to wait on getting iterators performing.
2006-09-08
Debugging iterator building blocks - Done
Problem was a very silly bug where '<' was supposed to be a '<<', iterator building blocks now appear to work fine.
- Implemented unmap_page_range_iterator() using GPT iterator building block.
- Working on page table tear down iterators now, initial performance appears to be very poor.
2006-09-07
Go over iterator issues with PaulDavies - Done
- I was doing PT tear down iteration in the wrong function, looks like the iterators work for visiting though.
- Know which iterators to tackle first now.
Discuss adding LVHPT support to GPT with PaulDavies - Done
- Help out with LCA abstract.
2006-09-04
Write iterator building block code for Linux GPT - Done.
- Delete iterator implemented but crashing when levels are actually freed, need to work out why, might be buggy level free. Need to compare iterators lookup with normal lookup from tree root.
2006-09-01
- Leave debugging for now as enough works to move onto Iterators.
2006-08-31
- Debug lookup for update (restructure point) node and insert restructuring.
- New find update point code now working.
- Moved over to new guard cutting code.
- Still having issues with the main insert restructure function!
2006-08-29
Got word back from Dave McCracken on his shared page table work in Linux, he clarified when sharing occurs and also said the he tried CoW page table sharing but the code complexity (due to locking) was too high and the benifits negligable (write copying happened on most page table levels). Dave doesn't have the code or results for the CoW work anymore.
2006-08-28
Merged partial update to new PTI patches from PaulDavies into working tree for GPT - Done.
Debug new gpt insert function - Done.
2006-08-21
- Debugging new code in GPT.
- New lookup working now.
- New builder code still a problem in a number of spots.
- Going over design idea for introducing limited guards to Linux's standard page table.
2006-08-18
- Review "network memory allocator" patches from linux-kernel and linux-mm lists for ideas towards GPT level allocator.
2006-08-14
Review shared page table patchs from linux-mm list by Dave McCracken (IBM) - Done
They allow pte and pmd (64-bit systems only) levels to be shared between processes.
- Go over some ideas on how GPT techniques could be used in the MLPT and visa versa for net gain.
- Need to instrument both the finished GPT and current Linux MLPT to find out where costs/gains are.
2006-08-11
- Read up on Oracle database workloads virtual memory patterns.
Go over stuff for Gelato ICE abstract notes.
2006-08-08
Clean up boot phase of GPT level allocation - Done
2006-08-07
Move level allocation over to pgtable quicklist - Done
- Currently only suitable for 64K pages as they lead to 5 levels of 2^10 entries so levels are all page size. Still need implementation to hand out sup-page and main/remainder level sizes.
- Fixed some bugs in the old code which cause excessive tree depth.
- Splits were not being rounder up to the tree order causing smaller levels to be littered through the tree.
- Key length was being stored as the base page size, not the configured page size.
2006-08-04
- Lock-free safety checks added to GPT assembly lookup, still only 5 cycles, post-amble still needs some cleanup though.
2006-07-31
- Add lock-free safety check to GPT assembly lookup.
2006-07-28
Go over new PTI patch set with PaulDavies - Done.
Continue playing with GPT assmebly lookup - Done.
- Down to 5 cycles over 5 bundles in the main loop, thing that is all there is to squeze.
2006-07-27
Merge GPT tree with Linux-2.6.18.2 to make it easier for Paul merge with new PTI patch set - Done.
2006-07-26
Start moving over to PaulDavies' new PTI patch set, moving arch dependent pages into the GPT tree.
New PTI patch set is sufficiently different to make merging with baz impractical, need to talk with PaulDavies regarding how to proceed.
2006-07-25
Refactor of TLB miss handler code - Done, should now be 6 cycles over 5 bundles in the main loop.
- Yet to make SMP safe with lock-free design.
Write up lock-free TLB miss handler design on Wiki - Done.
Cleaned up wiki page on GuardedPageTable/Synchronisation issues, clarified problems and added roadmap.
2006-06-21
- More work on assembly walker.
- Learning more about IA64 assembly.
Ran over lock-free TLB miss handler design with PeterChubb.
2006-07-20
Started to massage MatthewChapman's version of the assembly walker into the current code.
- Discussed GPT syncronisation problem with Volkmar, have solution that seems to work.
Make some notes on the wiki regarding current assembly lookup, MatthewChapman's version and ideas for new code - Done.
2006-07-19
Add notes on GPT syncronisation ideas to wiki - Done.
Have a quick look at MatthewChapman's version of the lookup - Done.
2006-07-18
Have a quick read of IanWienand's literature review and provide some feedback - Done.
- Continue GPT code cleanup/update fun.
- Completed moving code over to read/modify/update node access, get/set operators are not yet atomic though.
2006-07-17
- Started another attempt at cleaning up the assembler lookup.
Update code to use full 64-bit address space for all page sizes - Done
With PaulDavies help I now understand the existing assembly lookup code.
- Move GPT building and lookup over to new code.
Hitting bugs, need a revame of PaulDavies user-level testing framework for GPT.
2006-07-14
- Merged in all version 0.4 library code, bar iterators, starting to move linux over to actually using it now.
2006-07-12
- Working from home today.
- Start on design of memory pgtable-quicklist based GPT level allocator.
- Continue moving code over to read/modify/update node access and massaging in version 0.4 code.
2006-07-07
- Move moving node access towards read/modify/update style.
2006-07-06
- Took Monday/Tuesday off for down time (Little brothers birthday on Sun so we went shopping for him Mon), then sick Wednesday.
- Started move of code to access node towards a read/modify/update format.
- Started adding library version 0.4 for lookuping up and updateing the tree.
- Feeling a bit run down still going to head home early, will come in tomorrow at least for the meeting.
2006-06-30
Clean up source code layout of GPT, moved arch dependent code into appripriate places and consolidate files - Done
2006-06-29
Starting out with taking a step back to review status and determine what to do next - Done.
Look into GPT level allocation overhaul - Done, need to design an allocator based on existing quicklist.
2006-06-27
- Look at new assembly walker for GPT - Started, then found some problems.
Found two problems, a) the use of pte pointers in the VM code means level-compression must be careful that level restructuring does node leave stale pte pointers about. b) Load-/Store-pair instructions are floating-point only so atomic reads of a GPT node are not easily possible, more syncronisation problems.
2006-06-26
- Going to start looking implementing the new GPT node layout for IA64 today - Made a start, found a number of issues to deal with.
2006-06-23
- Starting to get into more substantial clean up, need to restructure file makeup to move node layout into arch specific code.
2006-06-22
Moved development over to new patches from PaulDavies.
- Continued more superficial cleanup of GPT and updating to latest version.
2006-06-21
- Need to complete some paper reviews for Gernot, then will work from home.
2006-06-20
Back in business today, plan of attack for GPT cleanup - Done.
Move to development over to linux-2.6.17-rc6 - Done
- Linux GPT code clean up.
2006-06-19
- Still a little run down, won't be in. Might try to get some work done at home.
2006-06-16
- Sick today and yesterday, won't be in.
2006-06-14
- Pull gpt instance code out into arch specific code files.
2006-06-13
Get PaulDavies' GPT patch booting - Done.
Start playing with node layout and lookup for TLB faults - Defered as some other clean-up needs to occur first.
Go over GPT clean-up list and plan next actions - Done.
2006-06-07
Review PaulDavies' GPT patch 1 - Done.
Continue code review of old GPT patches and task generation for GPT clenaup - Underway.
Collate notes on initial GPT entry layout - Done.
More fleshing out and clean-up of GPT wiki pages - Done
Weekly plans for June - Done.
2006-06-05
Generate list of tasks for GPT cleanup, see GuardedPageTable/Braindump - Underway.
Quick fleshing out and clean-up of GPT wiki pages - Done.
Review arch dependent (IA64) patch and get it up and running - Done.
2006-05-29
- Go over PaulD's PTI patch set developed late last week and over the weekend and start determining first steps towards cutting GPT code.
2006-05-26
- Have a neurosurgeon appointment today (probably the last for for many months) so I won't be in, also a broken machine to fix.
- Help PaulD with his PTI patch sets as required during the day.
2006-05-24
- Have a doctors appointment today so I might not in, or I'll be in late, as I also have a couple of personal matters to attend to.
2006-05-22
- Review page fault patch for PaulD.
- Get LMBench running on Casatta and verify base kernel numbers for 2.6.17-rc4.
Review IanW's superpage patches quickly - Done.
2006-05-19
Submit paperwork and first time sheet to hopefully start getting paid - Done.
Flesh out plan a bit more - Done.
- Organise with Paul to get a PTI patch suitable to start cutting code on next week.
Examine Linux kernel memory allocation for GPT levels. - Done
2006-05-18
Fill out first time sheet - Done.
Make a start at plan/timeline for Gelato work - Done.
2006-05-17
Start on approach for IPT implementation for PTI - Defered, low priority.
Get 2.6.17 compiling and booting on an IA64 machine - Done.
- Try out LVHTP and PTI patches.
Look at 2.6.17 patch that only adds PTI interface to page faults and get a feel for what causes the performance overhead - Done.
2006-05-15
Find out details for time sheets and finish up paperwork to get paid - Defered until Friday when they need to be in, include work up until and including Wednesday.
Look at Ian's LVHPT patches - Done.
Look at Paul's 2.6.17 PTI (arch independent only part) patch - Done.
