10 likes | 107 Views
Senior Project – Computer Science - 2010 james the GIANT killer: evaluating kernel locking schemes in james toy Advisor – Professor David Hemmendinger. kernel log. virtual mem. sysctl. scheduler. sysctl. kernel log. sched. mem. :: Conclusions ::
E N D
Senior Project – Computer Science - 2010james the GIANT killer: evaluating kernel locking schemes injames toyAdvisor – Professor David Hemmendinger kernel log virtual mem sysctl scheduler sysctl kernel log sched mem :: Conclusions :: Sysctl produced data that strongly support the initial hypothesis. • 1/2% system increase of throughput • Max time saved ~30 seconds (2 hrs build) Klog test did not produce useful data because the locking mechanisms are around a device node not a msg_buffer. Extending FGLs to more subsystems increases throughput What really matters Goal was to determine if: • FGL is detrimental to the system (complication) (NO) • FGL is significantly faster than GIANT_LOCKING in a small subsystem like sysctl. (YES) The FGL implementation scales well. • :: Problem :: • Why do we need locking? • Race conditions • “bad” “dog” • Threads race each other on context switches • Possible incorrect result : “bda dog” (interleaving) • Alternative correct result: “dog” “bad” • The most important things is correct results • Incorrect in-kernel code affects the entire system • Locking prevents Race Conditions GIANT_LOCKs only allow one thread in the kernel at a time FGLs only go around shared data structures : “critical sections” in subsystems :: Background :: GIANT_LOCK vs. Fine Grained Locks (FGLs) • :: Design :: • Method of evaluation (comparison of FGL and GIANT) • Two separate branches in a version control system • Specific subsystems being targeted and why • Klog: prints kernel events -- low traffic • Sysctl: manages kernel variables -- higher traffic • (control) • Tests designed to hit specific subsystems • multi-threaded make sysctl • kernel driver to make klog calls • (locking profiler) • Analyzes when locks are acquired and relinquished • TOO MUCH DATA • Correctness and how it was achieved • Correctness • Race conditions arise from writing to a shared resource • Readers pick up shared lock; writers pick up exclusive. • The FGL follows the GIANT_LOCKING logic; however, it is a more detailed implementation that is concerned with locating critical sections and protecting them. • Process • Branch and Replace GIANT code with FGL • Rebuild kernels in both configurations & automate testing and result generation with cron scripts • :: Affiliation to the FreeBSD Project :: • The code and methods generated in this project has been shared with several other developers of the FreeBSD project and is now in the FreeBSD–CURRENT branch as of its completion a few months ago. • The LOCK_PROFILER(9) was instrumental in generating valid test results for this project. The profiler was written by several “core” FreeBSD developers. A big thanks goes out to those talented developers! A PRODUCTION Thanks dh; I could not have done this without you. =jt