DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
Texto Completo: | https://hdl.handle.net/20.500.12733/1640490 |
Resumo: | Orientador: Rodolfo Jardim de Azevedo |
id |
UNICAMP-30_7e07a8a28edc62717e6c8651ed6e53c9 |
---|---|
oai_identifier_str |
oai::1161260 |
network_acronym_str |
UNICAMP-30 |
network_name_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository_id_str |
|
spelling |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadoresDrPin : um instrumentador dinâmico de binários para múltiplas arquiteturas de processadoresSistemas de computaçãoCódigos bináriosAnálise dinâmicaComputer systemsBinary codesDynamic analysisOrientador: Rodolfo Jardim de AzevedoDissertação (mestrado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: A complexidade dos programas está aumentando e as ferramentas usadas para seu desenvolvimento tem acompanhado tal evolução. Aplicações modernas dependem largamente de bibliotecas carregadas dinamicamente e algumas aplicações até geram código durante sua execução. Logo, ferramentas de análise estática, usadas para depurar e entender aplicações não são mais suficientes para se ter um panorama completo de uma aplicação. Como resultado, ferramentas de análise dinâmica (aquelas que são executadas durante o tempo de execução) estão sendo adotadas e integradas ao desenvolvimento e estudo de aplicacoes modernas. Entre essas, as ferramentas que operam diretamente no binário do programa são particularmente úteis no meio de inúmeras bibliotecas carregadas dinamicamente, onde o código-fonte pode não estar disponível. A construção de ferramentas que manipulam e instrumentam código binário durante sua execução é particularmente difícil e propensa a erros. Um pequeno erro pode resultar em um desvio completo do comportamento do programa sendo analisado. Por esse motivo, frameworks de Instrumentação dinâmica de binários (DBI) tornaram-se cada vez mais populares. Esses frameworks fornecem meios para criação de ferramentas de análise dinâmica de binarios com pouco esforço. Entre eles, o Pin 2 tem sido de longe o mais popular e fácil de usar. No entanto, desde o lançamento da série 4 do Linux Kernel, ele ficou sem suporte. Neste trabalho, nosso foco é voltado para o estudo dos desafios encontrados ao criar um novo DBI (DrPin) que tem como foco ser totalmente compatível com a API do Pin 2, ao mesmo tempo que também suporta várias arquiteturas (x86-64, x86, Arm, Aarch64) e sistemas Linux modernos. Atualmente, o DrPin suporta um total de 83 funções da API do Pin 2, o que o torna capaz de executar várias pintools originalmente escritas para o Pin 2 sem nenhuma modificação. Comparando o desempenho do DrPin com o Pin 2, para uma ferramenta simples que conta o número de instruções executadas, observamos que, para o benchmark SPECint 2006, somos, em média, apenas 10% mais lentos que o Pin e 11,6 vezes mais lentos que a execução nativa. Também exploramos um pouco o ecossistema em torno dos frameworks de instrumentação dinâmica de binários. Especificamente, estudamos e estendemos uma técnica que utiliza ferramentas de análise dinâmicas de binários, construida com a ajuda de frameworks DBI, para prever o desempenho de uma determinada arquitetura ao executar um programa ou benchmark específico, sem a necessidade de executar o programa ou benchmark inteiro. Em particular, estendemos a Metodologia SimPoint para obter ganhos adicionais na redução do tempo necessário para obter tais previsões. Mostramos que, considerando as semelhanças no comportamento do programa entre diferentes entradas, podemos reduzir ainda mais o tempo necessário para obter resultados de simulação de benchmarks inteiros. Especificamente para SPECint 2006, mostramos que o número de SimPoints (diretamente proporcional ao tempo de simulação) pode ser reduzido em média 32%, perdendo apenas 0,06% da precisão quando comparado a técnica original. Diminuindo a precisão em 0,5%, observamos que o tempo de simulação é reduzido em média 66%Abstract: Programs' complexity is rising and the tools used in their development changed to keep up with this evolution. Modern applications rely heavily on dynamically loaded shared libraries and some of them even generate code at runtime, therefore static analysis tools used to debug and understand applications are no longer sufficient to understand the full picture of an application. As a consequence, dynamic analysis tools (those that are executed during runtime) are being adopted and integrated into the development and study of modern applications. Among those, tools that operate directly on the program binary are particularly useful in the sea of dynamically loaded libraries, where the source code might not be readily available. Building tools that manipulate and instrument binary code at runtime is particularly difficult and error-prone. A minor bug can result in a complete disruption in the behavior of the binary code being analyzed. Because of that, Dynamic Binary Instrumentation (DBI) frameworks have become increasingly popular. Those frameworks provide means of building dynamic binary analysis tools with low effort. Among them, Pin 2 has been by far the most popular and easy to use. However, since the release of the Linux Kernel 4 series, it became unsupported. In this work we focus on studying the challenges faced when building a new DBI (DrPin) that seeks to be compatible with Pin 2 API, without the restrictions of Pin 3, that also runs multiple architectures (x86-64, x86, Arm, Aarch64), and on modern Linux systems. In total, currently, DrPin supports a total of 83 Pin 2 API functions, which makes it capable of running many pintools originally written for the Pin 2 framework without any modification. Comparing the performance of DrPin to the original Pin 2 for a simple tool that counts the number of instructions executed, we observed that for the SPECint 2006 benchmark we were, on average, only 10% slower than the Pin 2 framework and 11.6 times slower than the native execution. We also explored the ecosystem around DBI frameworks. Specifically we studied and extended one technique that makes use of dynamic binary tools, built with the help of DBI frameworks, to predict the performance of a given architecture when executing a particular program or benchmark without the need to run the entire program or benchmark. In particular, we extended the SimPoint Methodology to obtain further gains in the time required to obtain the predictions. We showed that by taking into account similarities in the program behavior among different inputs, we can further reduce the time it takes to get simulation results of entire benchmarks. Specifically for SPECint 2006, we showed that the number of SimPoints (which is directly proportional to the simulation time) can be reduced by an average of 32% while losing only 0.06% of the accuracy when compared to the original technique. Further decreasing the accuracy by 0.5%, we observed the simulation time is reduced by an average of 66%MestradoCiência da ComputaçãoMestre em Ciência da ComputaçãoCNPQ143197/2018-5CAPES001[s.n.]Azevedo, Rodolfo Jardim de, 1974-Pereira, Fernando Magno QuintãoAraújo, Guido Costa Souza deUniversidade Estadual de Campinas (UNICAMP). Instituto de ComputaçãoPrograma de Pós-Graduação em Ciência da ComputaçãoUNIVERSIDADE ESTADUAL DE CAMPINASAntonioli, Luís Fernando, 1993-20202020-10-16T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdf1 recurso online (99 p.) : il., digital, arquivo PDF.https://hdl.handle.net/20.500.12733/1640490ANTONIOLI, Luís Fernando. DrPin: a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores. 2020. 1 recurso online (99 p.) Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1640490. Acesso em: 3 set. 2024.https://repositorio.unicamp.br/acervo/detalhe/1161260Requisitos do sistema: Software para leitura de arquivo em PDFporreponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)instname:Universidade Estadual de Campinas (UNICAMP)instacron:UNICAMPinfo:eu-repo/semantics/openAccess2021-02-25T16:45:04Zoai::1161260Biblioteca Digital de Teses e DissertaçõesPUBhttp://repositorio.unicamp.br/oai/tese/oai.aspsbubd@unicamp.bropendoar:2021-02-25T16:45:04Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP)false |
dc.title.none.fl_str_mv |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores DrPin : um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores |
title |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores |
spellingShingle |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores Antonioli, Luís Fernando, 1993- Sistemas de computação Códigos binários Análise dinâmica Computer systems Binary codes Dynamic analysis |
title_short |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores |
title_full |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores |
title_fullStr |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores |
title_full_unstemmed |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores |
title_sort |
DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores |
author |
Antonioli, Luís Fernando, 1993- |
author_facet |
Antonioli, Luís Fernando, 1993- |
author_role |
author |
dc.contributor.none.fl_str_mv |
Azevedo, Rodolfo Jardim de, 1974- Pereira, Fernando Magno Quintão Araújo, Guido Costa Souza de Universidade Estadual de Campinas (UNICAMP). Instituto de Computação Programa de Pós-Graduação em Ciência da Computação UNIVERSIDADE ESTADUAL DE CAMPINAS |
dc.contributor.author.fl_str_mv |
Antonioli, Luís Fernando, 1993- |
dc.subject.por.fl_str_mv |
Sistemas de computação Códigos binários Análise dinâmica Computer systems Binary codes Dynamic analysis |
topic |
Sistemas de computação Códigos binários Análise dinâmica Computer systems Binary codes Dynamic analysis |
description |
Orientador: Rodolfo Jardim de Azevedo |
publishDate |
2020 |
dc.date.none.fl_str_mv |
2020 2020-10-16T00:00:00Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://hdl.handle.net/20.500.12733/1640490 ANTONIOLI, Luís Fernando. DrPin: a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores. 2020. 1 recurso online (99 p.) Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1640490. Acesso em: 3 set. 2024. |
url |
https://hdl.handle.net/20.500.12733/1640490 |
identifier_str_mv |
ANTONIOLI, Luís Fernando. DrPin: a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores. 2020. 1 recurso online (99 p.) Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1640490. Acesso em: 3 set. 2024. |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.none.fl_str_mv |
https://repositorio.unicamp.br/acervo/detalhe/1161260 Requisitos do sistema: Software para leitura de arquivo em PDF |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf 1 recurso online (99 p.) : il., digital, arquivo PDF. |
dc.publisher.none.fl_str_mv |
[s.n.] |
publisher.none.fl_str_mv |
[s.n.] |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) instname:Universidade Estadual de Campinas (UNICAMP) instacron:UNICAMP |
instname_str |
Universidade Estadual de Campinas (UNICAMP) |
instacron_str |
UNICAMP |
institution |
UNICAMP |
reponame_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
collection |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP) |
repository.mail.fl_str_mv |
sbubd@unicamp.br |
_version_ |
1809189169347428352 |