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 |
- zadáno a potvrzeno stud. odd.