Early Work
At the time of my PhD I worked with efficient and portable integration of communication and multithreading for fine-grain parallel execution on distributed memory computers. I had special interest on data transport and access synchronization for non-linear data structures. I developed tens of thousands of lines of code in C, C++, Pthreads and MPI, at POSIX level, in a prototype called Athapascan. Returning to Brazil after my PhD, I initially dedicated my research to cluster networks. It had became clear that large computers would be built as clusters, but the networks of those clusters either had low performance (Fast Ethernet) or were custom built (Myrinet, IBM). High performance was attained with user-level asynchronous communication libraries, with little interference of the operating system, less copies in memory, and lighter protocols. I proposed and implemented user-level asynchronous libraries for ordinary networks (Ethernet), because I believed that clusters would be built with higher-performance versions of such network cards. Another bet was the reduction of network layers for cluster communication, with user-level sockets interfaces. Programming irregular and compute-intensive applications became soon another of my interests. I proposed a framework for application execution using remote procedure calls, with adaptation on the parallelism grain. This framework was later validated and inspired a more general programming and executing model based on asynchronous method invocations. A prototype was implemented in two levels, with dynamic allocation of idle resources in virtual clusters, then the projection, also dynamic, of asynchronous tasks on those clusters. I developed the concept of dynamic clusters co-allocated on the fly based on predicates. I also worked on idleness detection with temporal series analysis. |
CoreGRID
In 2005 I was granted a sabbatical leave from UFSM, to work for CoreGRID. I acted as a research fellow at the Engineering and Architecture School of Fribourg, Switzerland, and at the Computer Science Department of the University of Pisa, Italy. The research subject was grid programming models, where we proposed an heterogeneous and integrated system for deploying application components by extending a skeleton-based component model to incorporate general object-oriented components. I validated our proposals with the development and integration of software for application components deployment, where each model incorporated its own annotation system in order to specify the type of resource required for component execution. |
INRIA, French National Institute for Research in Computer Science and Control
In 2007 and 2008 I worked with the RESO team of INRIA in Lyon, France. There I dealt with network communication scheduling for grid applications. We developed a bulk data transfer scheduling system that assigns predetermined variable transfer rates to multiple concurrent transfers in order to achieve less network congestion and finish all transfers before their deadlines. We later adapted the scheduler to calculate optimal rates for multi-path routing of bulk transfers, also respecting deadlines. |
University of Lisbon
In autumn 2008 I joined the University of Lisbon, where I exploit my knowledge on grid and cloud computing to cooperate with the local researchers on distributed dependable systems. Cloud computing combines resource sharing concepts of grid computing with the business models of the utility computing. I am personally interested on virtual resource management, with matchmaking, discovery, allocation, economics, and scheduling for any combination of network and endpoint resources. Very interesting problems can be found in this area, especially when considering distributed applications as graphs with vertex computations and edge data transfers, and virtual clusters as graphs as well, with storage or processors as vertices and network links as edges. Resource virtualization and service orientation get a great deal of importance in cloud computing. Virtualization enables applications to run in distributed infrastructures as if they were in isolated computers and networks. Service-based development represents a state-of-the-art software composition model, making possible the creation of very complex distributed applications. Cloud computing explores both concepts to create a distributed programming model where everything from processing to network resources is offered as a service. Taking advantage of the inherent virtualization of cloud computing it is possible to envision a large number of fault-tolerant algorithms. Applications running in virtual infrastructures feel as if they were standalone on standard computers and standard networks and virtualization also simplifies resource management and service migration. One can use supervision, replication, checkpointing and intrusion detection at the (virtual) machine level, providing a unique and challenging environment for the development of more dependable distributed systems. Cloud infrastructures typically offer criteria for automated resources selection such as available CPU time, disk space, or network capacity. The placement of replicas of an intrusion-tolerant application in a computational cloud requires additional criteria that have an influence on intrusion tolerance. These criteria include the replica dislocation and distribution, heterogeneous placement, etc. Having the clouds model in mind and looking towards more dependable distributed systems, I am investigating resources allocation strategies that maximize the dependability of such cloud-based services. Besides intrusion tolerance, other fault-tolerance requirements can be devised in a similar way. |
University of Neuchâtel
I will eventually write this paragraph properly. My research here is about two things: resource management for a high-performance pulish/subscribe system, and locality optimised indexed storage for highly distributed cloud applications. Related research projects: |
Recent stuff
If you only want to read about current stuff, skip to the last paragraphs.