Optimizing large applications
Název práce v češtině: | Optimalizace rozsáhlých aplikací |
---|---|
Název v anglickém jazyce: | Optimizing large applications |
Klíčová slova: | překladač, optimalizace kódu, operační systémy |
Klíčová slova anglicky: | compiler, code optimization, operating system |
Akademický rok vypsání: | 2012/2013 |
Typ práce: | diplomová práce |
Jazyk práce: | angličtina |
Ústav: | Informatický ústav Univerzity Karlovy (32-IUUK) |
Vedoucí / školitel: | doc. Mgr. Jan Hubička, Ph.D. |
Řešitel: | skrytý - zadáno a potvrzeno stud. odd. |
Datum přihlášení: | 08.11.2012 |
Datum zadání: | 08.11.2012 |
Datum potvrzení stud. oddělením: | 14.12.2012 |
Datum a čas obhajoby: | 09.09.2013 00:00 |
Datum odevzdání elektronické podoby: | 01.08.2013 |
Datum odevzdání tištěné podoby: | 02.08.2013 |
Datum proběhlé obhajoby: | 09.09.2013 |
Oponenti: | Mgr. Martin Mareš, Ph.D. |
Zásady pro vypracování |
Oba hlavní open source překladače, GCC a LLVM, dnes dosahují stavu, kdy jsou
schopny link-time optimalizovat velké aplikace (například Firefox, Chrome, OpenOffice, KDE nebo Gnome). Optimalizace v překladačích jsou ale tradičně stavěné a testované na menších programech, jako například SPEC2006. Tyto benchmarky netestují parametry podstatné pro skutečné aplikace, jako je například velikost kódu, doba potřebná pro studený start aplikace a podobně. Vývojové nástroje proto nevyhovují potřebám velkých sofwarových balíků. Vývojáři těchto balíků tak často sahají k různým ad-hoc řešením, mezi které patří například utilita ElfHack redukující velikost relativních relokací v programu, startování vlastních aplikaci pomocí předzavedené utility a dlopen, prelinking a různé nástroje pro přerovnání výsledného programu podle pořadí provádění funkcí. Student se seznámí s pokročilými technikami optimalizace kódu v překladačích. Prozkoumá výkonnostní problémy velkých aplikací a určí metodu testování jejich výkonu. V práci student zanalyzuje a popíše nejpodstatnější body řešitelné na úrovni překladače, linkeru, jádra operačního systému a vývojových nástrojů. Na základě této studie implementuje některé z navržených optimalizací. |
Seznam odborné literatury |
Steven Muchnick: Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997 Bob Morgan: Building an Optimizing Compiler, Digital Press, 1998 GNU Compiler Collection (GCC) Internals (dokumentace k projektu) Urlich Drepper: How to Write Shared Libraries Jakub Jelínek: Prelink, diplomová práce, 2003 Mike Hommey: Improving libxul startup I/O by hacking the ELF format, 2010 Jan Hubička, Taras Glek: Optimizing real-world applications with GCC Link Time Optimization, 2010 Xinliang David Li, Raksit Ashok, Robert Hundt: Lightweight Feedback-Directed Cross-Module Optimization, CGO 2010 Taras Glek: Improving binary layout for progressive decompression 2011 S. Tallam, C. Coutant, I.L. Taylor, X.D. Li, & C. Demetriou: Safe ICF: Pointer Safe and Unwinding aware Identical Code Folding in the Gold Linker, 2010 |