Vous êtes sur la page 1sur 4

o de estruturas de dados n o Utilizac a ao bloqueantes em programac a multiprocessada

Guilherme P. B. Cousin*, Alan S. de Araujo, Gerson Geraldo H. Cavalheiro Centro de Desenvolvimento Tecnol ogico Universidade Federal de Pelotas Pelotas, RS, Brazil {gpbcousin, asdaraujo, gerson.cavalheiro}@inf.ufpel.edu.br

o ResumoEste trabalho apresenta o projeto e a construc a ` de uma estrutura de dados n ao bloqueante para o suporte a o dos servic implementac a os de um nucleo de escalonamento o multithread. Esta estrutura para um ambiente de execuc a denida por uma lista que gerencia o n ao bloqueante e acesso de multiplos threads a seu conteudo. Os mecanismos implementados para este gerenciamento elimina o risco de um numero massivo de threads corromper sua estrutura o eciente pela eliminac o do enquanto promove a execuc a a o baseados em uso de mecanismos cl assicos de sincronizac a primitivas de exclus ao mutua. Os resultados apresentados neste trabalho mostram que o uso desta lista alcanc a um o de inserc o e ganho de desempenho em suas operac a a o em relac o a outras soluc es, como o uso de remoc a a o estruturas STL. Keywords-Estruturas de dados n ao bloqueantes; Parale o paralelos; Multithreading lismo; Ambientes de execuc a

I. I NTRODUC AO Programas paralelos se beneciam do hardware paralelo quando s ao capazes de explorar todos os processadores o. A dispon veis de forma efetiva durante sua execuc a o do ociosidade de um processador, durante a execuc a programa, representa perda potencial de desempenho. Esta es frequentes ociosidade pode ser reexo de sincronizac o o, resultando em sobrecusto entre as atividade em execuc a o e/ou na criac o de depend de execuc a a encias desnecess arias entre atividades e eventuais perdas do potencial o concorrente do programa. Mecanismos para o de execuc a controle de acesso a dados compartilhados em programas o do multithread podem, portanto serializar a execuc a programa no acesso aos dados compartilhados quando n ao constru dos de maneira correta com impacto no desempenho nal. o de uma estrutura Este trabalho aborda a concepc a o de dados n ao bloqueante para o ambiente de execuc a Anahy3 [1]. Esta estrutura tem vistas a reduzir o overhead es de bloqueio ao acesso de dados na lista em das operac o es do ambientes com m ultiplos threads gerados pelas ac o o de operac es n ucleo deste ambiente quando da realizac a o de escalonamento. O uso de listas n ao bloqueantes permite que o tempo de acesso aos elementos da lista seja reduzido, reduzindo em consequ encia o overhead de o do sobrecusto de execuc o escalonamento. A diminuic a a o do gargalo de acesso a ` lista foi obtido pela eliminac a
Este trabalho faz parte do projeto Green Grid (PRONEX FAPERGS/CNPq e FAPERGS-PqG (11/1065-1)) *PIBIC/CNPq

utilizado um bloqueio global da estrutura para quando e garantir acesso em regime de exclus ao m utua. Embora rea, como [2], [3] e [4], existam diversos trabalhos na a o ecieste trabalho diferencia-se por buscar uma soluc a ente de listas n ao bloqueantes adaptadas aos mecanismo de escalonamento do ambiente Anahy3. Como resultado, o de listas n mostramos que a introduc a ao bloqueantes no n ucleo de escalonamento de Anahy3 pode gerar ganhos de desempenho, uma vez que estas listas permitem reduzir o da execuc o dos threads que dependem de a contenc a a mecanismos de bloqueio para o acesso a lista. O restante do artigo est a organizado como segue. A o II apresenta alternativas apresentadas na literatura Sec a para manipular estruturas de dados em algoritmos parale o III apresenta a implementac o realizada para los. A Sec a a o de listas em um solucionar o problema da manipulac a o multithread. A Sec o IV apresenta ambiente de execuc a a o de desempenho da implementac o realizada uma avaliac a a o V as considerac es nais. e a Sec a o II. E STRUTURAS DE DADOS PARALELAS Programas s ao feitos para manipular dados. Os dados em um programa usualmente encontram-se organizados de o nos diversos trechos de forma a permitir sua manipulac a o seja c odigo at e que o resultado nal de sua manipulac a comum que grandes colec es de dados estejam obtido. E o armazenadas em conteiners de dados, como vetores ou o da manipulac o destas estruturas listas. A otimizac a a tem impacto direto no desempenho de um programa. o paralela, um dos aspectos Considerando a programac a a contenc o dos threads no acesso a a serem otimizados e a es b listas compartilhadas para realizar as operac o asicas de inserir e retirar elementos. As estruturas de dados paralelas permitem que v arios threads tenham acesso aos dados compartilhados, o principal problema de conceber esta manter a consist estrutura, e encia dos dados. A. Algoritmos paralelos bloqueantes para estruturas de dados As estruturas de dados com bloqueio, baseia-se no uso de locks, onde ele pode ser de granularidade grossa ou na. No caso de uma estrat egia com granulosidade o e serializada por impedir que um thread grossa, a execuc a acesse a estrutura de dados quando esta j a esta sendo utilizada por outro thread, mesmo que os acessos se deem em regi oes distintas desta estrutura. Por outro lado, a

o granularidade na tem como elemento de manipulac a cada item armazenado na estrutura. Como consequ encia, o o por inserir uso da granulosidade na serializa a execuc a es de sincronizac o, uma grande quantidade de operac o a o do programa. onerando a execuc a poss Em ambos os casos e vel observar perda de desem o por serializac o da execuc o. Estas penho de execuc a a a estruturas de dados e os algoritmos que as manipulam o caso da podem ser objeto de melhora de desempenho, e e o de smart heap na atual vers implementac a ao do n ucleo de o de Anahy. Nesta implementac o a granularidade execuc a a grossa, no entanto a implementac o foi realizada de e a o de forma otimizada no que diz respeito a manipulac a mem oria din amica. o A Smart Heap faz uso de uma estrat egia de alocac a em blocos para melhorar o desempenho do programa. o, o ambiente aloca para a heap No in cio da execuc a um bloco de mem oria est atico. O tamanho da estrutura, o do ambiente, n alocada no in cio da execuc a ao pode ser muito pequeno para que n ao haja um grande n umero e tamb em n ao pode ser muito grande para que a heur stica o n de realocac a ao consuma mem oria desnecessariamente. o avanc A medida em que a execuc a a, itens inseridos ou removidos da lista podem fazer com que um novo espac o de mem oria seja requerido, para crescimento do tamanho o das remoc es ocorridas. da lista, ou liberado, em func a o B. Estruturas de dados n ao bloqueantes o dos algoritmos n A concepc a ao bloqueantes baseia-se o s no princ pio de que conitos de sincronizac a ao raros e o [5]. Quando um conito devem ser tratados como excec a detectado em uma estrutura, a operac o que detectou o e a abortada e sua execuc o e refeita. Algoritmos conito e a o evitam deadlocks e n ao bloqueantes de sincronizac a invers oes de prioridade. Como consequ encia o programa o n o de desempenho por em execuc a ao sofrer a degradac a o forc o de preempc a ada pela chamada de uma operac a o executada em n sincronizac a vel sistema. Algoritmos n ao bloqueantes s ao pouco utilizados na o complexa que inclui pr atica, pois s ao de implementac a es de execuc o sobre o hardware [6], diversas limitac o a es at o e dita com o uso de operac o omica. Uma operac a at omica quando possuir a caracter stica de n ao permitir o uma vez iniciada ou seja ela obrigatoriamente preempc a tem que acontecer por completo, n ao possibilitando que o de outra thread. Entretanto, estes haja alguma interrupc a es paralelas algoritmos podem ser adequados para aplicac o o de larga escala devido ao seu potencial de execuc a de alto desempenho, tamb em sendo muito eciente para es espec aplicac o cas [7]. A principal diculdade dos algoritmos n ao bloqueantes o problema ABA, que e originado pelo emprego da e o CAS(Compare-and-Swap) [8]. Para ilustrar este operac a problema, o seguinte cen ario hipot etico pode ser montado: um processo ao tentar retirar um item de uma la, implementada como uma estrutura n ao bloqueante, l e as es na cabec rea informac o a desta estrutura e determina a a de mem oria que cont em o segundo elemento. Ent ao usa

CAS para atualizar o ponteiro da cabec a para o segundo elemento. Caso a cabec a tenha sido alterada por um es, segundo processo, ap os o primeiro ter lido as informac o o CAS falhar a instruc a a e corromper a a estrutura. Este es de leituras corrompimento da estrutura durante operac o inconsistentes dene o problema ABA. o convencional deste problema e usar uma Uma soluc a variante de primitiva CAS, onde s ao mantidas duas ag ao usada para manter o ponteiro para mesmo tempo; uma e usada para manter outro nodo adjacente na lista e a outra e incrementada toda vez que o ponteiro e uma tag que e alterado. Desta forma, se um processo alterar o ponteiro e em seguida alterar seu valor pra o original, a tag ser a o CAS capaz de indicar esta mudanc a e, ent ao, a operac a n ao ser a conclu da para n ao corromper a estrutura [8]. ilustrado um exemplo do problema ABA, Na Figura 1 e o a leitura de dados ao onde dois threads realizam operac a es antes do mesmo tempo, e o thread B efetua as operac o thread A, quando thread A escreve seus dados, os valores da estrutura est ao desatualizados.

Figura 1.

Exemplo de ocorr encia do ABA problem

GIA PARA UM N UCLEO III. E STRAT E DE EXECUC AO


MULTITHREAD

O algoritmo proposto como a alternativa a Smart Heap, atualmente em uso em Anahy implementa uma lista duplamente encadeada. A estrutura concebida, possui dois nodos xos, ou seja, nodos que n ao podem ser removidos. Entre estes nodos xos, os elementos da lista, os quais es relevantes ao programa em execuc o cont em informac o a s ao inseridos e removidos. Desta forma, h a a possibilidade o e de remoc o tanto no in de inserc a a cio quanto no nal da lista sem perda da consist encia da estrutura da lista. utilizada uma Para manter a consist encia da estrutura, e ag, que identica se o nodo em quest ao j a est a sendo utilizado por outros threads. o e feita do seguinte modo: o thread tenta A inserc a alterar a ag do nodo principal da extremidade, caso haja sucesso, o thread tenta alterar a ag do nodo seguinte caso inserido entre consiga alterar esta ag, ent ao o elemento e os dois nodos, e depois as ags alteradas voltam ao estado original. Caso alguma das ags j a tenha sido alterada por outro thread, o algoritmo libera as ags alteradas por ela o, evitando assim deadlocks e retorna ao in cio da inserc a o n e assumindo que a inserc a ao foi realizada.

o, o thread tenta alterar a ag do nodo princiNa remoc a o, logo pal da extremidade na qual deseja-se fazer a remoc a ap os efetuar a troca deste nodo, o thread tenta alterar as ags dos outros dois nodos seguintes. Caso haja sucesso, removido. o elemento mais pr oximo ao nodo principal e Caso alguma das ags j a tenham sido alterada por outro thread, o algoritmo libera as ags j a alteradas por ele, e o assumindo que a remoc o n volta ao in cio da remoc a a ao foi realizada e nova tentativa deve ser feita. A Figura 2 mostra um exemplo da estrutura implementada, onde as extremidades representam os nodos ` administrac o da lista, os principais, que dizem respeito a a nodos centrais representam os dados do programa. A ag como pode-se observar est a presente inclusive nos nodos principais.

Figura 2.

Estrutura implementada

mantida porque a ag e alterada A consist encia e por meio da primitiva at omica Compare and Swap, isto feito de forma at o signica que e omica, uma operac a o e uma operac o de atribuic o caso a de comparac a a a o obtenha sucesso. comparac a DE DESEMPENHO IV. AVALIAC AO o apresentamos uma avaliac o do desemNesta sec a a o do algoritmo n penho de uma implementac a ao bloqueante apresentado. Os estudos de casos realizados tamb em ` execuc o sobre uma implementac o foram submetidos a a a convencional de listas utilizando a STL e a Smart Heap atualmente em uso em Anahy. A Smart Heap foi apresen o II-A e tem como principal caracter tada na Sec a stica o da manipulac o da mem a otimizac a a oria din amica. A STL, por sua vez, consiste em uma biblioteca muito thread-safe popular de estruturas de dados, no entanto ela e apenas no caso de diferentes threads acessarem simulta nico neamente diferentes containers. No caso onde um u objeto de acessos concorrentes, mecanismos container e o externos devem ser utilizados. de sincronizac a Os resultados apresentados foram executados em computador, em uso dedicado, dotado com um processador Intel Core i7-2600 CPU @ 3.40GHz x 8, com mem oria de 7.8GiB. Os tempos referem-se a uma m edia de 100 es, n execuc o ao tendo sido observado desvio padr ao acima de 3%. es Os estudos de caso realizados correspondem a inserc o es de itens na estrutura de dados intercalados pela e remoc o o de uma carga sint execuc a etica correspondente ao c alculo o 20. As recursivo da s erie de Fibonacci para a posic a guras 3 e 4 correspondem, respectivamente, aos tempos o e remoc o de 10.000 elementos. As obtidos na inserc a a o e remoc o guras 5 e 6 apresentam os tempos de inserc a a

de 100.000 elementos. As guras 7 e 8 apresentam os o e remoc o de 1.000.000 elementos. tempos de inserc a a poss E vel observar nos resultados, que com o maior n umero de elementos inseridos na lista, quando da o com mais de um thread, a tend que execuc a encia e o as outras abordao desempenho melhore em relac a gens comparadas. A medida que aumenta o n umero de es, nesta mesma situac o, o desempenho tamb remoc o a em evolui, mesmo possuindo um mecanismo de tratamento de conitos. No estudo de caso realizado, onde os threads apenas inserem ou removem itens na lista, observou-se que o melhor desempenho foi obtido com oito threads, o que compreens e vel pelo fato dos threads poderem manipular extremidades distintas da lista com menor probabilidade se conito. Outro aspecto a ser considerado, quando da que est an alise destes resultados, e a sendo vericado o desempenho das estrat egias quando n ao inseridas no n ucleo de escalonamento de Anahy. de se esperar um desempenho satisfat E orio quando o de Anahy. Este do uso efetivo no n ucleo de execuc a composto por processadores virtuais (PVs) que n ucleo e consistem em threads sistema respons aveis por executar o deste ambiente, os threads do usu ario. Na concepc a cada PV ger encia, em uma lista local, os threads usu ario o destes threads criados localmente e prioriza a execuc a locais em detrimento de threads criados em outros PVs. o gloCaso a lista de um PV que vazia, uma operac a bal de escalonamento transfere um trabalho de um PV, escolhido segundo alguma estrat egia de escalonamento implementada em Anahy, para esta lista, evitando perda de capacidade de processamento. O custo computacional o da 20 posic o de Fibonacci tem inserido, para computac a a o simular o comportamento de uma aplicac o em por func a a o no ambiente Anahy. execuc a

Figura 3.

es Resultados para 10.000 inserc o

FINAIS V. C ONSIDERAC OES As estruturas n ao bloqueantes s ao importantes, pois o cr reduzem o acesso a sec a tica, tendo assim uma maior o das operac es de inserc o e remoc o. paralelizac a o a a o IV, conforme aumenta Conforme observamos na Secc a o n umero de threads, o ganho de desempenho para esta o tamb aplicac a em aumenta. Conforme foi observado em testes preliminares, sem uma carga sint etica, quando o muito alto, esta estrutura n n umero de threads e ao possui

Figura 4.

es Resultados para 10.000 remoc o

Figura 8.

es Resultados para 1.000.000 remoc o

Figura 5.

es Resultados para 100.000 inserc o

contra-partida, quando o n umero de conitos potenciais pequeno, observa-se que o desempenho da estrat e egia bastante satisfat proposta e orio. Desta forma entendemos que a estrat egia proposta possa a vir ser integrada com es sucesso em Anahy, uma vez que o n umero de interac o entre os PVs pode ser limitada conforme a estrat egia de escalonamento utilizada [9]. Para trabalhos futuros pretende-se avaliar o com es reais, substituindo a atual portamento em aplicac o o do Anahy pelo mecanismo proposto. E implementac a tamb em avaliar o comportamento desta estrutura implementada em outras arquiteturas. NCIAS R EFER E
o [1] A. S. de Araujo, Anahy-3: Um novo ambiente de execuc a otimizado para arquiteturas multicore, Pelotas, 2013. [2] M. Fomitchev and E. Ruppert, Lock-free linked lists and skip lists, in Proceedings of the twenty-third annual ACM symp on Principles of distributed computing, ser. PODC 04. New York, NY, USA: ACM, 2004, pp. 5059. [Online]. Available: http://doi.acm.org/10.1145/1011767.1011776 [3] N. S. D. Hendler and L. Yerushalmi, A scalable lockfree stack algorithm, in Proc. of the 16th ACM Symp. on Parallelism in Algorithms and Architectures, 2004, pp. 206 215.

Figura 6.

es Resultados para 100.000 remoc o

[4] M. Fomitchev, Lock-free linked list and skip list, Masters thesis, York University, North York, Ontario, 2003. [5] K. Fraser and T. Harris, Concurrent programming without locks, ACM Transactions on Computer Systems, vol. 25, no. n.2, 2007. [6] L. Kunz, Mem oria transacional em hardware para sistemas embarcados multiprocessados conectados por redes-emchip, Masters thesis, URGS, Porto Alegre, 2010. [7] M. M. Michael, Cas-based lock-free algorithm for shared deques, in In the 9th Euro-Par Conference on Parallel Processing. Springer Verlag, 2003, pp. 651660. [8] J. D. Valois, Lock-free linked list using compare-andswap, in In Porceding of the 14th Annual ACM Symp. on Principles of Distributed Computind, 1995, pp. 214 222. [9] D. Spoonhower, G. E. Blelloch, P. B. Gibbons, and R. Harper, Beyond nested parallelism: tight bounds on workstealing overheads for parallel futures, in Proceedings of the twenty-rst annual symp on Parallelism in algorithms and architectures. ACM, 2009, pp. 91100.

Figura 7.

es Resultados para 1.000.000 inserc o

um ganho potencial. Podemos avaliar tamb em que con es e remoc es aumenta, o ganho forme o n umero de inserc o o ` s outras estruturas tamb em diferenc a a em aumenta. Em