Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos

Detalhes bibliográficos
Ano de defesa: 2013
Autor(a) principal: Camargo, Cícero Augusto de Souza
Orientador(a): Cavalheiro, Gerson Geraldo Homrich
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Pelotas
Programa de Pós-Graduação: Programa de Pós-Graduação em Computação
Departamento: Centro de Desenvolvimento Tecnológico
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: http://guaiaca.ufpel.edu.br/handle/prefix/5499
Resumo: A popularização das arquiteturas multicore trouxe a capacidade de processamento paralelo para diversos dispositivos de computação pessoal, como laptops, tablets e smartphones. No entanto, para que uma aplicação se beneficie do hardware paralelo, precisamos do suporte de ferramentas de programação concorrente que forneçam uma interface simples e abstrata, a qual esconda do programador as complexidades do hardware e do sistema operacional. O modelo multithread é o que mais se adequa ao modo de execução das arquiteturas multicore. Diversas ferramentas de programação concorrente amplamente utilizadas como OpenMP, Intel R Cilk Plus e Intel R Threading Building Blocks, oferecem interfaces de programação multithread e abstraem o escalonamento de threads em nível de aplicação, empregando estratégias baseadas em algoritmos de lista. Uma vez que algoritmos de lista foram originalmente concebidos para o escalonamento estático de Grafos Dirigidos Acíclicos de tarefas (DAG – Directed Acyclic Graph), este trabalho se dedica a analisar o impacto gerado ao empregar tais algoritmos no núcleo de escalonamento de ambientes multithread dinâmicos. Para tanto, foram implementadas uma ferramenta de simulação e um ambiente real de execução multithread, este batizado de Anahy3. Os resultados obtidos nas simulações indicam que escalonamentos de lista em ambientes multithread podem fornecer, para uma dada aplicação, tempos de execução muito próximos daqueles obtidos no escalonamento estático do DAG que descreve a mesma aplicação, mesmo que o grafo de threads seja gerado em tempo de execução. Nas execuções reais com Anahy3 foi possível constatar que algoritmos de lista podem gerar escalonamentos eficientes, resultando em desempenhos semelhantes àqueles fornecidos pelas principais ferramentas multithread da academia e da indústria. Contudo, alguns resultados demonstram que a eficiência das técnicas utilizadas na implementação do ambiente de execução é tão importante quanto a ordem de execução dos threads.
id UFPL_e87b50e84f4cef65885d5f2dc7d19f4f
oai_identifier_str oai:guaiaca.ufpel.edu.br:prefix/5499
network_acronym_str UFPL
network_name_str Repositório Institucional da UFPel - Guaiaca
repository_id_str
spelling 2020-05-22T02:18:52Z2020-05-22T02:18:52Z2013-11-10CAMARGO, Cícero Augusto de Souza. Algoritmos de Escalonamento de Lista em Ambientes Multithread Dinâmicos: Análise de Estudos de Caso Teóricos e Práticos. 2013. 112 f. Dissertação (Mestrado) – Programa de Pós-Graduação em Computação. Universidade Federal de Pelotas, Pelotas.http://guaiaca.ufpel.edu.br/handle/prefix/5499A popularização das arquiteturas multicore trouxe a capacidade de processamento paralelo para diversos dispositivos de computação pessoal, como laptops, tablets e smartphones. No entanto, para que uma aplicação se beneficie do hardware paralelo, precisamos do suporte de ferramentas de programação concorrente que forneçam uma interface simples e abstrata, a qual esconda do programador as complexidades do hardware e do sistema operacional. O modelo multithread é o que mais se adequa ao modo de execução das arquiteturas multicore. Diversas ferramentas de programação concorrente amplamente utilizadas como OpenMP, Intel R Cilk Plus e Intel R Threading Building Blocks, oferecem interfaces de programação multithread e abstraem o escalonamento de threads em nível de aplicação, empregando estratégias baseadas em algoritmos de lista. Uma vez que algoritmos de lista foram originalmente concebidos para o escalonamento estático de Grafos Dirigidos Acíclicos de tarefas (DAG – Directed Acyclic Graph), este trabalho se dedica a analisar o impacto gerado ao empregar tais algoritmos no núcleo de escalonamento de ambientes multithread dinâmicos. Para tanto, foram implementadas uma ferramenta de simulação e um ambiente real de execução multithread, este batizado de Anahy3. Os resultados obtidos nas simulações indicam que escalonamentos de lista em ambientes multithread podem fornecer, para uma dada aplicação, tempos de execução muito próximos daqueles obtidos no escalonamento estático do DAG que descreve a mesma aplicação, mesmo que o grafo de threads seja gerado em tempo de execução. Nas execuções reais com Anahy3 foi possível constatar que algoritmos de lista podem gerar escalonamentos eficientes, resultando em desempenhos semelhantes àqueles fornecidos pelas principais ferramentas multithread da academia e da indústria. Contudo, alguns resultados demonstram que a eficiência das técnicas utilizadas na implementação do ambiente de execução é tão importante quanto a ordem de execução dos threads.The popularization of multicore architectures made parallel-processing available in sereval personal computing devices such as laptops, tablets and smartphones. However, for an application to benefit from the parallel hardware, we need the support of concurrent programming tools that provide a clean and abstract interface, that hides from the programmer the complexities of the underlying platform. The multithreaded model is the most suitable for the execution mode of multicore architectures. Several widely used concurrent programming tools, such as OpenMP, Intel Cilk Plus, and Intel Threading Building Blocks, provide multithread programming interfaces and abstract thread scheduling at the application level, using strategies based on list algorithms. Once list algorithms were originally designed to schedule DAGs (Directed Acyclic task Graphs) statically, this study aims to analyze the impact of applying list algorithms in the core of dynamic multithreaded environments. In order to this, we implemented a simulation tool and a real multithreaded environment that we called Anahy3. Simulation results indicate that, given an application, list schedules can provide, in multithreaded environments, execution times very close to those obtained when scheduling the application DAG statically, even when the thread graph is generated at runtime. In real executions with Anahy3, we could show that list algorithms can generate efficient schedules, providing execution performances equivalent to the ones obtained using the most prominent multithreaded tools in academy and industry. However, some results showed that the an efficient implementation of the execution environment is as important as the execution order of threads.Sem bolsaporUniversidade Federal de PelotasPrograma de Pós-Graduação em ComputaçãoUFPelBrasilCentro de Desenvolvimento TecnológicoCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOComputaçãoProgramação multihreadAmbientes dinâmicosEscalonamento de listaArquitetura multicoreMultithreaded programmingDynamic environmentsList schedulingMulticore architecturesAlgoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticosEvaluating the Impacts of Applying List Scheduling Algorithms on Dynamic Multithreaded Environments in Theory and Practiceinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://lattes.cnpq.br/8291196523651921http://lattes.cnpq.br/1542351302502326Cavalheiro, Gerson Geraldo HomrichCamargo, Cícero Augusto de Souzainfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFPel - Guaiacainstname:Universidade Federal de Pelotas (UFPEL)instacron:UFPELTEXTDissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.txtDissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.txtExtracted texttext/plain229134http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/6/Dissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.txt6bde3f9e950726dc9f4f2598aa5f767cMD56open accessTHUMBNAILDissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.jpgDissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.jpgGenerated Thumbnailimage/jpeg1645http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/7/Dissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.jpg50d1e95b28e96b0d997220702ec774d5MD57open accessORIGINALDissertacao_Cicero_Augusto_de_Souza_Camargo.pdfDissertacao_Cicero_Augusto_de_Souza_Camargo.pdfapplication/pdf1452499http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/1/Dissertacao_Cicero_Augusto_de_Souza_Camargo.pdfea68c2e21f2ef68467eb12351685ed6aMD51open accessCC-LICENSElicense_urllicense_urltext/plain; charset=utf-849http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/2/license_url4afdbb8c545fd630ea7db775da747b2fMD52open accesslicense_textlicense_texttext/html; charset=utf-80http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/3/license_textd41d8cd98f00b204e9800998ecf8427eMD53open accesslicense_rdflicense_rdfapplication/rdf+xml; charset=utf-80http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/4/license_rdfd41d8cd98f00b204e9800998ecf8427eMD54open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-81866http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/5/license.txt43cd690d6a359e86c1fe3d5b7cba0c9bMD55open accessprefix/54992023-07-13 03:00:20.681open accessoai:guaiaca.ufpel.edu.br:prefix/5499TElDRU7Dh0EgREUgRElTVFJJQlVJw4fDg08gTsODTy1FWENMVVNJVkEKCkNvbSBhIGFwcmVzZW50YcOnw6NvIGRlc3RhIGxpY2Vuw6dhLCB2b2PDqiAobyBhdXRvciAoZXMpIG91IG8gdGl0dWxhciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpIGNvbmNlZGUgYW8gUmVwb3NpdMOzcmlvIApJbnN0aXR1Y2lvbmFsIG8gZGlyZWl0byBuw6NvLWV4Y2x1c2l2byBkZSByZXByb2R1emlyLCAgdHJhZHV6aXIgKGNvbmZvcm1lIGRlZmluaWRvIGFiYWl4byksIGUvb3UgZGlzdHJpYnVpciBhIApzdWEgcHVibGljYcOnw6NvIChpbmNsdWluZG8gbyByZXN1bW8pIHBvciB0b2RvIG8gbXVuZG8gbm8gZm9ybWF0byBpbXByZXNzbyBlIGVsZXRyw7RuaWNvIGUgZW0gcXVhbHF1ZXIgbWVpbywgaW5jbHVpbmRvIG9zIApmb3JtYXRvcyDDoXVkaW8gb3UgdsOtZGVvLgoKVm9jw6ogY29uY29yZGEgcXVlIG8gRGVwb3NpdGEgcG9kZSwgc2VtIGFsdGVyYXIgbyBjb250ZcO6ZG8sIHRyYW5zcG9yIGEgc3VhIHB1YmxpY2HDp8OjbyBwYXJhIHF1YWxxdWVyIG1laW8gb3UgZm9ybWF0byAKcGFyYSBmaW5zIGRlIHByZXNlcnZhw6fDo28uCgpWb2PDqiB0YW1iw6ltIGNvbmNvcmRhIHF1ZSBvIERlcG9zaXRhIHBvZGUgbWFudGVyIG1haXMgZGUgdW1hIGPDs3BpYSBkZSBzdWEgcHVibGljYcOnw6NvIHBhcmEgZmlucyBkZSBzZWd1cmFuw6dhLCBiYWNrLXVwIAplIHByZXNlcnZhw6fDo28uCgpWb2PDqiBkZWNsYXJhIHF1ZSBhIHN1YSBwdWJsaWNhw6fDo28gw6kgb3JpZ2luYWwgZSBxdWUgdm9jw6ogdGVtIG8gcG9kZXIgZGUgY29uY2VkZXIgb3MgZGlyZWl0b3MgY29udGlkb3MgbmVzdGEgbGljZW7Dp2EuIApWb2PDqiB0YW1iw6ltIGRlY2xhcmEgcXVlIG8gZGVww7NzaXRvIGRhIHN1YSBwdWJsaWNhw6fDo28gbsOjbywgcXVlIHNlamEgZGUgc2V1IGNvbmhlY2ltZW50bywgaW5mcmluZ2UgZGlyZWl0b3MgYXV0b3JhaXMgCmRlIG5pbmd1w6ltLgoKQ2FzbyBhIHN1YSBwdWJsaWNhw6fDo28gY29udGVuaGEgbWF0ZXJpYWwgcXVlIHZvY8OqIG7Do28gcG9zc3VpIGEgdGl0dWxhcmlkYWRlIGRvcyBkaXJlaXRvcyBhdXRvcmFpcywgdm9jw6ogZGVjbGFyYSBxdWUgCm9idGV2ZSBhIHBlcm1pc3PDo28gaXJyZXN0cml0YSBkbyBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMgcGFyYSBjb25jZWRlciBhbyBEZXBvc2l0YSBvcyBkaXJlaXRvcyBhcHJlc2VudGFkb3MgCm5lc3RhIGxpY2Vuw6dhLCBlIHF1ZSBlc3NlIG1hdGVyaWFsIGRlIHByb3ByaWVkYWRlIGRlIHRlcmNlaXJvcyBlc3TDoSBjbGFyYW1lbnRlIGlkZW50aWZpY2FkbyBlIHJlY29uaGVjaWRvIG5vIHRleHRvIApvdSBubyBjb250ZcO6ZG8gZGEgcHVibGljYcOnw6NvIG9yYSBkZXBvc2l0YWRhLgoKQ0FTTyBBIFBVQkxJQ0HDh8ODTyBPUkEgREVQT1NJVEFEQSBURU5IQSBTSURPIFJFU1VMVEFETyBERSBVTSBQQVRST0PDjU5JTyBPVSBBUE9JTyBERSBVTUEgQUfDik5DSUEgREUgRk9NRU5UTyBPVSBPVVRSTyAKT1JHQU5JU01PLCBWT0PDiiBERUNMQVJBIFFVRSBSRVNQRUlUT1UgVE9ET1MgRSBRVUFJU1FVRVIgRElSRUlUT1MgREUgUkVWSVPDg08gQ09NTyBUQU1Cw4lNIEFTIERFTUFJUyBPQlJJR0HDh8OVRVMgCkVYSUdJREFTIFBPUiBDT05UUkFUTyBPVSBBQ09SRE8uCgpPIERlcG9zaXRhIHNlIGNvbXByb21ldGUgYSBpZGVudGlmaWNhciBjbGFyYW1lbnRlIG8gc2V1IG5vbWUgKHMpIG91IG8ocykgbm9tZShzKSBkbyhzKSBkZXRlbnRvcihlcykgZG9zIGRpcmVpdG9zIAphdXRvcmFpcyBkYSBwdWJsaWNhw6fDo28sIGUgbsOjbyBmYXLDoSBxdWFscXVlciBhbHRlcmHDp8OjbywgYWzDqW0gZGFxdWVsYXMgY29uY2VkaWRhcyBwb3IgZXN0YSBsaWNlbsOnYS4KRepositório InstitucionalPUBhttp://repositorio.ufpel.edu.br/oai/requestrippel@ufpel.edu.br || repositorio@ufpel.edu.br || aline.batista@ufpel.edu.bropendoar:2023-07-13T06:00:20Repositório Institucional da UFPel - Guaiaca - Universidade Federal de Pelotas (UFPEL)false
dc.title.pt_BR.fl_str_mv Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
dc.title.alternative.pt_BR.fl_str_mv Evaluating the Impacts of Applying List Scheduling Algorithms on Dynamic Multithreaded Environments in Theory and Practice
title Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
spellingShingle Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
Camargo, Cícero Augusto de Souza
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Computação
Programação multihread
Ambientes dinâmicos
Escalonamento de lista
Arquitetura multicore
Multithreaded programming
Dynamic environments
List scheduling
Multicore architectures
title_short Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
title_full Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
title_fullStr Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
title_full_unstemmed Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
title_sort Algoritmos de escalonamento de lista em ambientes multithread dinâmicos: análise de estudos de caso teóricos e práticos
author Camargo, Cícero Augusto de Souza
author_facet Camargo, Cícero Augusto de Souza
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/8291196523651921
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/1542351302502326
dc.contributor.advisor1.fl_str_mv Cavalheiro, Gerson Geraldo Homrich
dc.contributor.author.fl_str_mv Camargo, Cícero Augusto de Souza
contributor_str_mv Cavalheiro, Gerson Geraldo Homrich
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Computação
Programação multihread
Ambientes dinâmicos
Escalonamento de lista
Arquitetura multicore
Multithreaded programming
Dynamic environments
List scheduling
Multicore architectures
dc.subject.por.fl_str_mv Computação
Programação multihread
Ambientes dinâmicos
Escalonamento de lista
Arquitetura multicore
Multithreaded programming
Dynamic environments
List scheduling
Multicore architectures
description A popularização das arquiteturas multicore trouxe a capacidade de processamento paralelo para diversos dispositivos de computação pessoal, como laptops, tablets e smartphones. No entanto, para que uma aplicação se beneficie do hardware paralelo, precisamos do suporte de ferramentas de programação concorrente que forneçam uma interface simples e abstrata, a qual esconda do programador as complexidades do hardware e do sistema operacional. O modelo multithread é o que mais se adequa ao modo de execução das arquiteturas multicore. Diversas ferramentas de programação concorrente amplamente utilizadas como OpenMP, Intel R Cilk Plus e Intel R Threading Building Blocks, oferecem interfaces de programação multithread e abstraem o escalonamento de threads em nível de aplicação, empregando estratégias baseadas em algoritmos de lista. Uma vez que algoritmos de lista foram originalmente concebidos para o escalonamento estático de Grafos Dirigidos Acíclicos de tarefas (DAG – Directed Acyclic Graph), este trabalho se dedica a analisar o impacto gerado ao empregar tais algoritmos no núcleo de escalonamento de ambientes multithread dinâmicos. Para tanto, foram implementadas uma ferramenta de simulação e um ambiente real de execução multithread, este batizado de Anahy3. Os resultados obtidos nas simulações indicam que escalonamentos de lista em ambientes multithread podem fornecer, para uma dada aplicação, tempos de execução muito próximos daqueles obtidos no escalonamento estático do DAG que descreve a mesma aplicação, mesmo que o grafo de threads seja gerado em tempo de execução. Nas execuções reais com Anahy3 foi possível constatar que algoritmos de lista podem gerar escalonamentos eficientes, resultando em desempenhos semelhantes àqueles fornecidos pelas principais ferramentas multithread da academia e da indústria. Contudo, alguns resultados demonstram que a eficiência das técnicas utilizadas na implementação do ambiente de execução é tão importante quanto a ordem de execução dos threads.
publishDate 2013
dc.date.issued.fl_str_mv 2013-11-10
dc.date.accessioned.fl_str_mv 2020-05-22T02:18:52Z
dc.date.available.fl_str_mv 2020-05-22T02:18:52Z
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.citation.fl_str_mv CAMARGO, Cícero Augusto de Souza. Algoritmos de Escalonamento de Lista em Ambientes Multithread Dinâmicos: Análise de Estudos de Caso Teóricos e Práticos. 2013. 112 f. Dissertação (Mestrado) – Programa de Pós-Graduação em Computação. Universidade Federal de Pelotas, Pelotas.
dc.identifier.uri.fl_str_mv http://guaiaca.ufpel.edu.br/handle/prefix/5499
identifier_str_mv CAMARGO, Cícero Augusto de Souza. Algoritmos de Escalonamento de Lista em Ambientes Multithread Dinâmicos: Análise de Estudos de Caso Teóricos e Práticos. 2013. 112 f. Dissertação (Mestrado) – Programa de Pós-Graduação em Computação. Universidade Federal de Pelotas, Pelotas.
url http://guaiaca.ufpel.edu.br/handle/prefix/5499
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Pelotas
dc.publisher.program.fl_str_mv Programa de Pós-Graduação em Computação
dc.publisher.initials.fl_str_mv UFPel
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Centro de Desenvolvimento Tecnológico
publisher.none.fl_str_mv Universidade Federal de Pelotas
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFPel - Guaiaca
instname:Universidade Federal de Pelotas (UFPEL)
instacron:UFPEL
instname_str Universidade Federal de Pelotas (UFPEL)
instacron_str UFPEL
institution UFPEL
reponame_str Repositório Institucional da UFPel - Guaiaca
collection Repositório Institucional da UFPel - Guaiaca
bitstream.url.fl_str_mv http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/6/Dissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.txt
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/7/Dissertacao_Cicero_Augusto_de_Souza_Camargo.pdf.jpg
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/1/Dissertacao_Cicero_Augusto_de_Souza_Camargo.pdf
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/2/license_url
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/3/license_text
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/4/license_rdf
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/5499/5/license.txt
bitstream.checksum.fl_str_mv 6bde3f9e950726dc9f4f2598aa5f767c
50d1e95b28e96b0d997220702ec774d5
ea68c2e21f2ef68467eb12351685ed6a
4afdbb8c545fd630ea7db775da747b2f
d41d8cd98f00b204e9800998ecf8427e
d41d8cd98f00b204e9800998ecf8427e
43cd690d6a359e86c1fe3d5b7cba0c9b
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFPel - Guaiaca - Universidade Federal de Pelotas (UFPEL)
repository.mail.fl_str_mv rippel@ufpel.edu.br || repositorio@ufpel.edu.br || aline.batista@ufpel.edu.br
_version_ 1856426094896349184