DrPin : a dynamic binary instrumentator for multiple processor architectures = DrPin: um instrumentador dinâmico de binários para múltiplas arquiteturas de processadores

Detalhes bibliográficos
Autor(a) principal: Antonioli, Luís Fernando, 1993-
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