Baseado nas constantes possibilidades de mobilidade e diversos tipos de conexões dos dispositivos móveis realizamos experimentos do consumo de bateria, através da execução de uma aplicação usando o middleware de objetos distribuídos para dispositivos Android e execução da mesma aplicação usando web services. Estes experimentos tem como objetivo analisar o desempenho das baterias quando utilizamos uma ferramenta que exige alto processamento, no servidor, e constantes trocas de mensagens em um sistema distribuído e um web service (através de grandes quantidades de requisições e respostas, realizadas por cliente e servidor respectivamente).
Para os experimentos, usamos uma aplicação trivial, conhecida, que exige alto processamento de CPU e memória com complexidade computacional de O(2n). Para que, de fato, os experimentos fossem realizados com sucesso, verificamos que só é possível termos a resolução deste algoritmo, em um tablet (Android 3.0, Processador Dual Core 1GHZ, RAM 1GB), com números n<50. Acima disso, o dispositivo não consegue alocação de memória necessária para empilhamento de todas as chamadas recursivas do algoritmo. Sendo assim, o número 40 foi utilizado como parâmetro da aplicação. Além disso, foi executado o algoritmo em 2000 vezes, seqüencialmente, para termos um alto consumo de bateria em uma considerável escala de tempo. Como recurso auxiliar, também foi utilizado dois computadores com processador Dual Core, 1 GB RAM e outro, processador Core 2 Duo com 2 GB RAM, utilizados como servidor e web service.
O primeiro experimento executado, como experimento base, foi a execução da aplicação, 2000 vezes seqüenciais, independente de cliente e servidor, conforme é representado pela Figura 1. Os resultados deste experimento, que não provê a utilização do middleware e apenas executa a aplicação no dispositivo localmente, servirão como base para análises comparativas dos experimentos que foram realizados utilizando o middleware, que serão apresentados a seguir, e os experimentos utilizando um web service.
Figura 1 – Caso base – Execução de classe sem o Middleware
O segundo experimento executado, como um dos experimentos realizados utilizando o middleware, consiste de um cliente Android que realiza 2000 requisições em um servidor. A cada requisição o servidor executa a aplicação e retorna o resultado para o cliente, conforme é representado pela Figura 2. Os resultados deste experimento, que provê a utilização do middleware e considera apenas o cliente com plataforma Android, servirão para análises comparativas dos experimentos que foram realizados no caso base, no caso onde foi utilizado o web service e no caso onde apenas a aplicação é executada com servidor na plataforma Android (experimento 3).
Figura 2 – Caso cliente Android – Execução do Middleware com cliente Android
Já o terceiro experimento executado, como um dos experimentos realizados utilizando o middleware, consiste de um servidor Android, que executa a aplicação, à cada requisição recebida, no total de 2000 requisições de um cliente, conforme é representado pela Figura 3. Os resultados deste experimento, que provê a utilização do middleware e considera apenas a execução da aplicação que é executada do servidor no ambiente Android, também servirão para análises comparativas dos experimentos que foram realizados no caso base, no caso onde foi utilizado o web service e no caso onde apenas o cliente executa na plataforma Android (experimento 2).
Figura 3 – Caso servidor Android – Execução do Middleware com servidor Android
O quarto experimento executado, como experimento realizado utilizando um web service, consiste de um cliente Android que realiza 2000 requisições em um web service. A cada requisição o web service executa a aplicação e retorna o resultado para o cliente, conforme é representado pela Figura 4. Os resultados deste experimento, que provê a utilização do web service e considera apenas o cliente com plataforma Android, servirão para análises comparativas dos experimentos que foram realizados no caso base e nos casos onde foram utilizados o middleware de objetos distribuídos para dispositivos Android.
Figura 4 – Caso cliente Android e Web service – Execução do Web service com cliente Android
Com a execução dos testes e exposição dos resultados, apresentamos de forma gráfica, as diferenças do consumo de bateria entre os quatro cenários. Podemos assim, analisar a autonomia da bateria nos elementos (cliente e servidor) que constituem o middleware de objetos distribuídos para dispositivos Android, comparando com um mesmo modelo não distribuído e um modelo utilizando um web service. Com isso, também conseguimos analisar a eficiência e viabilidade de se utilizar sistemas de objetos distribuídos em dispositivos móveis e portáteis para processamento e recuperação da informação de forma distribuída e paralela.
Resultados
Após a execução dos experimentos, encontramos resultados importantes de tempo de processamento e consumo de bateria, conforme é representado graficamente pelas Figuras 5, 6, 7, 8 e Tabela 1.
Tabela 1 – Dados de tempo total de execução e bateria para os casos base, cliente e servidor do Middleware para Android e Web service
Na Tabela 1 podemos ver, que no caso base, o decaimento do nível de bateria para uma aplicação que exige alto processamento de CPU e grande alocação de memória, com complexidade computacional de O(2n), executando 2000 vezes seqüenciais foi de 100% a 71%. Com isso, obtivemos um consumo de bateria de 29%, em aproximadamente 35 horas, para a conclusão de todo o processamento. Já no caso onde executamos a aplicação utilizando um cliente Android que realiza 2000 requisições em um servidor, que executa a mesma aplicação, o decaimento do nível de bateria foi de 100% a 85%, onde resultou no consumo de bateria de 15%, em aproximadamente 19 horas. No caso onde executamos a aplicação apenas em um servidor Android, que possui o algoritmo da aplicação, e recebe 2000 requisições de um cliente, o decaimento de bateria foi de 100% a 52%. Com isso, obtivemos um consumo de bateria 48%, em torno de 50 horas aproximadamente. Por fim, o caso onde executamos a mesma aplicação utilizando um cliente Android que realiza 2000 requisições em um web service, que executa a mesma aplicação, o decaimento do nível de bateria foi de 100% a 75%, onde resultou no consumo de bateria de 25%, em aproximadamente 33 horas.
Figura 5 – Decaimento de bateria por hora nos casos base, cliente e servidor do Middleware para Android e Web service
Figura 6 – Decaimento de bateria por hora nos casos cliente do Middleware para Android e Web service
De acordo com a representação gráfica apresentada na Figura 5, podemos ver claramente que os cenários onde a aplicação executada exige o processamento de CPU e memória, apenas no dispositivo móvel, não possuem um desempenho ideal e consomem altos níveis de bateria. No caso onde é utilizado um servidor Android para processar a aplicação, podemos ver que este exige maior tempo de execução e um consumo maior de bateria, do que comparado ao caso base. Isso acontece devido à necessidade de troca de mensagens, para envio do resultado do processamento ao cliente, além do próprio processamento da aplicação encapsulada por um objeto. O cenário que mostra a utilização do cliente Android apenas para fazer requisições em um servidor se mostrou o mais adequado. A função deste cliente é apenas realizar requisições, de uma determinada operação, à um servidor, e aguardar pelo resultado. Podemos ver que tanto o consumo de bateria e o processamento reduzem quase pela metade, quando tal cenário é aplicado. Outro cenário que também mostra a utilização de um cliente Android, mas que faz requisições a um web service não é tão eficiente em tempo de execução e consumo de bateria quanto ao outro caso com cliente Android. Conforme é apresentado nos dois cenários, que utilizam clientes Android, podemos ver claramente na representação gráfica mostrada pela Figura 6, a diferença quando há overhead na formatação de arquivos XML em web services.
Como os gráficos representados pelas Figuras 5 e 6 apresentam apenas os resultados do consumo de bateria em uma determinada escala de tempo fixa, os gráficos representados pelas Figuras 7 e 8 mostram o consumo de bateria e tempo de execução da mesma aplicação baseado nas 2000 requisições e execuções totais, que foram realizadas.
Figura 7 – Tempo de execução para 2000 requisições nos casos base, cliente e servidor do Middleware para Android e Web service
Figura 8 – Consumo de bateria para 2000 requisições nos casos base, cliente e servidor do Middleware para Android e Web service
Nas Figuras 7 e 8 podemos ver o tempo de execução gasto e o consumo de bateria para 2000 requisições nos quatro cenários do experimento. Nos cenários onde a aplicação precisa processar no dispositivo Android, é nítido o grande tempo de execução e o alto consumo de bateria. Já nos casos onde o cliente está em um dispositivo Android, e apenas realiza requisições, o tempo de execução e o consumo de bateria nos dois cenários diminuem consideravelmente quando em processos que são executados no próprio dispositivo Android. Além disso, conseguimos comprovar com estes resultados que a execução da aplicação usando um cliente Android com o middleware de objetos distribuídos para dispositivos Android é mais eficiente que a utilização de um cliente Android com um web service.
Ola,
Achei interessante o experimento, gostaria de tirar uma duvida.
No segundo experimento, a uma requisição do android para o servidor, mas que requisição seria essa? teria um banco de dados no servidor onde a aplicação busca informações?
E na questão do Web Service, a outros tipos de transferências de dados sem ser por xml (SOAP) tem a JSON tabém. Gostaria de saber se o rendimento da bateria seria o mesmo em outro tipo de transferencia. e se ha outros tipo de transferencias alem desse que citei.
Desde já agradecido.
Bacana sua pesquisa parabéns…