PplWare Mobile

Como é que o Android gere as frequências do processador?

                                    
                                

Este artigo tem mais de um ano


Autor: Pplware


  1. Miguel says:

    Obrigado Francisco, por este artigo, mas principalmente por todo o tempo que já dedicaste ao modding de kernels para os nossos bichos…
    Um bem haja, M.

  2. Kombo says:

    Bom artigo Francisco
    Já agora existe alguma Rom do ICS para LG P500 que aconselhas?

    Abraço

  3. zbenta says:

    Muito boa explicação, obrigado Francisco.

  4. Paulo T. says:

    Bom artigo, Francisco
    Pplware continuem com o excelente trabalho.

    abraço

  5. Pedro Bras says:

    Excelente artigo!

  6. Valente says:

    Coisas de cariz técnico é que gosto ou não fosse eu um reformado de informática. No meu tempo dizia-se que o interface entre o software e o hardware era o firmware, este é que tem os dados do hard. Um detalhe sem importancia…

    Já tinha lido muito sobre isto dos governors em inglês mas ainda havia muitas dúvidas. Assim em Português e numa linguagem simples isto entra muito melhor.

    Obrigado Francisco, O Android já me deu + 10 anos de vida.

    • miguel says:

      e eu como conhecedor de umas coisas de electrónica, digo que me matam do coração sempre que dizem “voltagem”, meus amigos diz-se tensão.
      já agora aproveito para dizer que é preferível usar omissão a defeito, defeito dá sempre a ideia de algo não estar bem :p

      PS: mas pior que voltagem foi ouvir um iluminado qualquer chamar cavalagem à potência dum carro…

      • André says:

        E quando usam tensão na física para se referirem a uma força aplicada numa corda?

        Enfim… Há com cada “convenção”, por cá… :S

      • @lmx says:

        Boas miguel,
        no caso concreto e sendo que a medição dessa natureza fisica é em relação a massa, chama-se sim Potencial e nunca tensão.
        Uma tensão é uma diferença de potencial(logo uma comparação de uma diferença) entre duas diferenças de Potencial.
        Va-Potencial num dado ponto(sempre em relação a massa)
        Vb-Potencial num dado ponto(sempre em relação a massa)
        Vc=Va-Vb(chamada de tensão, ou diferença de potencial)

        mas é comum as pessoas chamarem tensão a um potencial, e voltagem a uma tensão, por exemplo a malta no Brasil chama voltagem a tensão…

        cmps

        • Hugo Cura says:

          O miguel está certo, a designação mais correcta em Portugal é tensão ou ddp e não potencial (que encaixa noutros conceitos) nem voltagem.

          Por norma, em electrónica, é sempre referida a expressão “tensão entre X e Y”. Quando é referida só tensão então é em relação ao ground (e é isto que se aplica ao referir a um CPU ou whatever).
          O potencial, embora relacionado, implica conhecer valores de cargas e energias, algo conhecido e aplicado no âmbito do electromagnetismo.

          • @lmx says:

            Não senhora, tensão nunca poderá estar correcto!!

            Sendo que a grandeza física á entrada do processador é medida em ralação a massa, trata-se de um Potencial Eléctrico, já expliquei acima as diferenças entre as duas coisas…acho que não leste lol

            Claro, normalmente é mais facil chamar de tensão eléctrica e não de potencial eléctrico…mas a definição…diz que uma tensão electrica é uma diferença de potencial electrico…
            logo não faz sentido que seja chamada tensão.

            cmps

          • Hugo Cura says:

            Não sei quais os teus conhecimentos na matéria mas também não deves conhecer os meus (ou os do miguel, que eu também não conheço).

            Vejo que estás empenhado na defesa da tua posição e não me vou esforçar para “te fazer acreditar” como na realidade é. Repara que tu próprio estás a misturar os conceitos. Se dizes que tensão é uma diferença de potencial (e claro que não é necessariamente em relação à massa), é claro que o valor da tensão (seja do que for) é obtido com a ddp em relação à massa.
            Mas digo mais qualquer coisa: primeiro vê se tens como aplicar (ou como procederias para a aplicar) esta definição para obter o potencial. E depois diz-me como utilizarias um voltímetro (que mede sempre a ddp aos seus terminais) para medir a tensão em dado ponto do circuito.

          • @lmx says:

            Boas Hugo,
            o voltímetro mede sempre uma diferença de potencial, ele não é esperto o suficiente para perceber que um dos referenciais é a referencia (massa…potencial tido como zero para nós).
            Mas isso no caso do voltímetro também não importa, ele mede sempre um valor e cabe nos a nós, sabendo que estamos a medir em relação a massa, saber que se trata de um potencial eléctrico.
            Uma tensão difere de um potencial eléctrico, no sentido que um potencial eléctrico é sempre a diferença entre o ponto onde estamos a medir e a massa(pseudo zero volts).
            Ou seja, se eu disser que tenho em determinado sitio um potencial de 5v, já sabes que estou a medir em relação á massa.
            Se te disser que em determinado sitio tenho uma tensão de 5v, não sabes entre que locais do circuito, a não ser que eu especifique, entre o sitio A e B, ai já sabes qual a tensão ou diferença de potencial Eléctrico.

            Por convenção diz-se que quando medimos algo em relação á massa(tida para nós como pseudo 0 volts), devemos chamar-lhe Potencial
            Electrico

            Da mesma forma quando medimos entre dois pontos,onde nenhum dos dois é a massa, devemos chamar-lhe Diferença de Potencial, ou tensão.
            São regras da física.
            Um Potencial Eléctrico é visto como, um acumular de cargas eléctricas em determinado sitio, em relação a um “neutro”(tido por nós como neutro pois potencias neutros não existem, é uma referência).
            é como na Fisica, o resultado da energia Mecânica= EPotencial+Ecinetica, lembras-te que estes valores são sempre medidos em relação a um local tido como referencia(no caso da energia eléctrica é a massa).
            É a mesma coisa mas aplicada a coisas diferentes.

            cmps

      • Valente says:

        Quando faço overclock a 1,4 ghz ao processador do meu phone ele fica cá sujeito a uma tensão!

        E a propósito ainda não medi a minha tensão arterial hoje com o Cardiograf do market, ponho o dedo na camera e vejo no ecrã a minha tensão com bip bip, um gráfico, valores, é correcto, experimentem esta tensão (aqui não é voltagem concerteza).

        Mas voltando á tensão fria, digo á vaca fria, quando ponho OC no meu phone (ou fone) a 1,4 ghz com o kernel Air ele fica cá sujeito a uma voltagem de 1400 mV, Oops tensão que até deve aquecer. Perfomance, max e min a 1,4, cfq.
        Bolas, já baralho tudo!!!

        Um abraço a todos

        • Hugo Cura says:

          Analogias desnecessárias 😛
          btw, a câmara consegue reconhecer o fluxo de sangue através de pequenas alterações na cor, conseguindo medir a pulsação (não tensão arterial). E faltou referir a TPM das senhoras!

          Cada um diz como quer, não vejo qualquer inconveniente nisso, no então há designações mais correctas que outras. Também vejo muito boa gente a dizer ‘amperagem’ para se referir a corrente eléctrica. Uma é correcta, outra é menos correcta (e poderá ser errada, dependendo do rigor inerente ao propósito).

  7. Courela says:

    No portátil quando estou em bateria e quero que dure o máximo tempo possível (sem estar a fazer tarefas pesadas) uso o governor PowerSave e consigo tempos bem melhores que os outros governors. A minha bateria também é fraca, no máximo consigo 1h30.
    Para mim faz sentido que este governor continue presente, pelo menos ao nível dos portáteis, já nos telemóveis não sei, talvez para quem só queira fazer chamadas, ou para tentar esticar a bateria em casos de “aflição”.

  8. Liponcio says:

    E quanto aos smartass e smartass v2?
    Alguns afirmam que são melhores.
    Qual é a real diferença entre eles e o ondemand e conservative?

    Obrigado pelo excelente artigo.

    • El Lentinho says:

      Também gostava de saber…

      Obrigado pelo artigo!

    • Os smartass são derivados do interactive, mas acabam por funcionar quase todos da mesma maneira. O smartass 1 é bastante agressivo e tem uma espécie de screen_off profile em que quando o ecrã é desligado o CPU não usa mais de X mhz. Isso faz se na source da driver utilizando a interface do early_suspend para detectar se o ecrã está desligado, ou não. Infelizmente ter profiles só faz é mal ao telemóvel. O smartass2 acaba por ser outro derivado do interactive. O criador tentou que fosse um governor inteligente que se adapta-se sozinho mas falhou redondamente e de tal forma que o smartass2 para SMP (Symetric multiprocessors – multi-cores) é absolutamente miserável. Eu não falhei deles porque na minha opinião não vale muito a pena. Só existem em alguns kernels e são muito pouco eficientes.

  9. Rick says:

    Muito bem explicito.
    Tinha algumas dúvidas sobre o assunto, entretanto foram dissipadas…
    🙂

  10. Serva says:

    Bom dia ,

    Excelente artigo , muito fácil de entender , percebe-se que dependendo das opções de cada fabricante nos governors a nossa bateria é mais rapidamente sugada ou não .

    Tenho na familia um LG Maximo P990 cuja duração de bateria é a menor de todos os outros dispositivos que tenho incluindo um tablet , curiosamente esta duração não é demasiadamente influenciadas pela sua utilização versus o standby do dispositivo , claro que percebi imediatamente que se trata de uma má opção no governors por parte da LG .

    Já agora no caso das distros Linux , já tinha também chegado a conclusão que algo estava muito mal em relação a distribuição Kubuntu , ainda pensei que fosse do KDE , a bateria do meu portátil era sugada a uma velocidade estonteante ,e com os aplicativos que tinha para medir a utilização do CPU não era nenhuma surpresa que a bateria fosse sugada , troquei de portátil para um I5 ea situação manteve-se , instalei outra distribuição Linux com o KDE neste caso a BIGLINUX e agora tenho autonomia que nunca mais acaba , mais outro caso errado de escolha de governors .

    Francisco se tiveres alguma dica para o meu LG ficava-te grato , os meus agradecimentos teu fantástico artigo , eu sabia que iríamos ficar beneficiados com a tua colaboração no Pplware .

    Aceita os meus sinceros cumprimentos

    Serva

  11. Stefanov says:

    Bom artigo, Francisco…
    Realmente nem tudo o que parece difícil é. Há certas coisas que são tão fáceis, que tornam difícil de intender. Isso sim é difícil de perceber!

    Abraço…

  12. Valente says:

    Este artigo está muito bom assim, falando nos que serão os mais usuais. Mas isto leva-nos a querer saber coisas dos outros.
    Que tal um segundo artigo qualquer dia para falar dos Smartass, interative, lazy, etc?

    Para mim seria excelente. Obrigado

    PS: E, se não fôr pedir muito, um terceiro (lá para o verão) sobre o I/O Scheduler.

    • Tal como respondi a um comentário acima acho pouco apropriado falar de governors que mal são usados num contexto geral e isso só iria gerar mais confusão nos leitores. Interactive é tipo Ondemand mas muito mais agressivo pois alcança a freq_máxima muito mais cedo e fica lá em cima ainda mais tempo. Ideia interessante que no final acabou ser pouco prática pois isso faz se tudo mudando os parâmetros do Ondemand. O Lazy é um derivado do Ondemand criado pelo Ezekeel para o Nexus S implementando um pouco as suas ideias relativas ao deep_idle etc. Não há muito a falar pois é mesmo 99% igual ao Ondemand a nível do código.

      Acerca de um artigo sobre os IO schedulers parece me uma boa ideia 🙂

      • Valente says:

        Obrigado, está tudo dito. Resumo bem esclarecedor.

        Sobre o IO schedulers, ando a embirrar com o noop que me aparece isolado em certos kernel.
        Fico a aguardar…

        • O noop é um algoritmo mais simples que eu já vi, o ficheiro tem cerca de 100 linhas. Para quem quiser ver aqui está: http://pastie.org/3556100

          O noop é tão simples que acaba por não escalar muito bem com grandes operações IO ou níveis mais altos de processamento. Para Android, que usa memória flash, o Deadline e o CFQ se forem alterados para funcionarem melhor com o nosso tipo de memória são os melhores. O CFQ dá para alterar a partir do userspace, mas o Deadline só mesmo no Kernel =(

  13. Miguel Almeida says:

    Mais uma vez obrigado Francisco. Bom artigo tal como pedi! eheheh 🙂

  14. Miguel Almeida says:

    Já agora, o que dizes relativamente ao smartass v1 e v2? Melhor performance com uma boa bateria ou são coisas completamente opostas? Este momento estou a usar o smartassv2 e parece me ter uma boa performance sem me bastar muita bateria. Aguardo um esclarecimento
    Obrigado.

    • O smartass2 é uma espécie de mistura entre o Interactive e o Ondemand mascarado com outro nome. Basicamente comparando com a sua versão 1 é um governor que não tem profile para screen_off, ou seja se durante o ecrã estar desligar precisar de aumentar a frequência para o máximo ele fará tal coisa. Sem ser isso não há assim grandes diferenças práticas, é apenas código melhorado para dispositivos mais recentes, mas que no fundo é um bocado… horrível.

  15. Abilio says:

    Muito bom este artigo.

  16. jfonseca says:

    Bom artigo! Continua o bom trabalho.
    Apenas de referir que alguma ROMs personalizadas têm outros governers como o InteractiveX

  17. Serva says:

    Francisco , qual o Smartass que me aconselhas para o LG que te referi a pouco no meu post .

    http://rootzwiki.com/topic/10911-conservative-interactive-interactivex-and-smartass-v2-cpu-governors/

    Penso que depois do que li vou fazer root a este LG .

    Cumprimentos

    Serva

    • Usa Ondemand, smartass não presta.

      • André says:

        Boas Francisco,

        Lembro-me que no U8800 valorizavas muito o SmartassV2. Mudaste de ideias?

        Achas melhor ter um Ondemand de [120Mhz – 1024Mhz] ou achas que a freq_min deve ser superior a 200Mhz?
        Digo isto porque eu tenho a opinião de que uma freq minima muito baixa deve, não só consumir mais (em alguns aparelhos isso acontece, quantos aos SoC não sei muito!) como executar mais lentamente as operações de wakeLock…

        Thanks 😉

      • André says:

        Quanto ao SmartassV2 já li as tuas respostas anteriores 😉 Mas quanto à frequência mínima gostava de ouvir uma palavra sobre alguém que tem experiência em Kernel para mobile devices…

  18. Pedro Levi says:

    Muito bom artigo..Simples e bastante informativo. Obrigado.

    Pena é, nativamente não da para ser o user a fazer essa escolha e /ou alterar sempre q quiser.

  19. Carlos Silva says:

    “Estes algoritmos são chamados de Governors e estão presentes em todos os Kernels seja Android ou Linux.”
    Hummm….. O kernel que corre em Android é o kernel Linux.

    “(…)as drivers(…)”
    os drivers

    De resto, bom artigo. 🙂

    • O Kernel que corre em Android é um Kernel Linux bastante alterado por isso gosto de os diferenciar.

    • Valente says:

      Desculpa, não havia nexexidade disto. Drivers são pequenas(os) aplicações/aplicativos que gerem certos orgãos. Podemos portanto dizer “os (aplicativos) drivers” ou “as (aplicações) drivers”.

      É como os tablets, há quem diga as tablets, por mim não corrijo.

      • The STK says:

        É mesmo os drivers, assim como é o BIOS, o Tablet… A única tablet que conheço no feminino só se for de chocolate. Isto porque Tablet vem de Table, podia até ser feminino. No entanto o termo correcto é Tablet PC ou Computer, logo será masculino. Mas sim, um pormenor irrelevante no meio de um artigo muito bem escrito, com conteúdo que é o que interessa.

        • André says:

          BIOS é inglês… Como podes dizer que está mal?

          Exemplo:
          “the” Ice Cream… é “a” Ice Cream ou “o” Ice Cream? Ain mãe *nods head*… Deixem-se de brigas…

          Se disseres Sistema de entrada / saída básico, sim, é “o”… se disseres BIOS é estrangeirismo, usas o que queres, como em driver…

          Em inglês, ao ligar um carro, tu dizes “Liga-o” (carro) eles dizem “Start her up” (the machine)…

  20. joel pereira says:

    interessante seria explicar como colocar o Android 4.0 no Toshiba Folio 100

  21. Carlos says:

    Pequena correcção… ou sugestão…
    Onde está: “Parece mais complicado do que parece”
    Talvez devesse estar: “Parece mais complicado do que é”

  22. Hugo Cura says:

    Excelente artigo Francisco, parabéns!
    Um dia destes temos uma comunidade de desenvolvimento no Pplware! Malta interessada e com gosto em matéria mais técnica não falta por aqui!

    É extremamente importante dar a conhecer estes conceitos que demonstram, por vezes e de forma bem clara, a forma como determinado dispositivo está prejudicado por não usar o governor que devia com os parâmetros correctos.

  23. Serva says:

    Exactamente , obrigado Francisco pela tua resposta .

    Cumprimentos

    Serva

  24. The STK says:

    Bom artigo Francisco. Falta aí o melhor, o Smartass v2 (deve ser um algoritmo mais engraado).
    A malta do Huawei U8800 tem sentido a falta dos kernels by franciscofranco. Agora que já existe ICS pela mão do DZO, fazia falta um kernel .35 á moda do franciscofranco 😉

    • Ahah. Smartass2 é uma tanga, um Conservative ou Ondemand com uns valores diferentes (thresholds e afins) metem qualquer um desses governors num canto. E não esquecer que estes governors estão a ser desenvolvidos há anos e anos, por isso são sempre a melhor aposta para estabilidade e fiabilidade.

      Para o X5 já não faço Kernels, tentei umas 30 vezes meter a .35 a funcionar mas o wifi nunca funcionava. Pode ser que arranje quem tente, logo se vê 😉

  25. Valente says:

    Outro tema interessante, os OC. Eu gosto de os fazer e ver os resultados com os benchmarks mas tenho sempre dúvidas, receios, desconhecimentos disto ou daquilo sobre os kernel.
    Que tal pôr este tema na lista de espera? Se é que merece…

  26. Tiago Santos says:

    Boas 🙂

    Como sabemos qual o governor actual a funcionar?

    Podes dizer quais o comandos do abd que temos de usar para efectuar a mudança?

    Obrigado

    • Para veres o que tá activo fazes assim:

      cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

      Para mudares as frequências primeiro tens que saber como é a tabela de frequências do teu cpu e para isso podes fazer:

      cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

      Depois de saberes quais as que podes meter fazes assim por exemplo:

      echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

      Neste exemplo mete-se a freq_min a 1ghz, mas é só um exemplo, depende sempre da tabela de freq que o tlm tem.

      Eu ainda vou escrever um artigo sobre estes comandos manhosos 🙂

    • Esqueci-me para mudares o governor é assim:

      echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

      por exemplo.

  27. Raclima23 says:

    Excelente artigo não podia ser melhor por favor não parem pois sempre que ligo o pc, inconscientemente, “pplware”

    adoro estes tipos de artigos em que explicam cenas técnicas ao cidadão comum…

    thanks 🙂

  28. jose maria marques says:

    Muitos parabéns pelo artigo, já tinha alguns conhecimentos na matéria mas o teu artigo deixou tudo bastante mais claro 🙂

  29. Rik says:

    Muito bom ,obrigado, agora percebo e já sei qual vou escolher

  30. Diego says:

    Uso o smartass v1 e minha bateria dura muito mais do que durava antes.

  31. Joaquim Santos says:

    O Powersave nao tem interesse? Eu uso para no setcpu como evento, quando o ecra desliga ele muda para powersave.. afinal quando o ecra tá desligado eu nao tenho pressa nenhuma logo o cpu (e o wifi no meu caso tb)a funcionar no minimo poupa bateria.
    Parece incrivél como ouço dizer que não serve para nada…

    • E não serve, eu expliquei que usar profiles é mau, e muito pior se metermos o nosso CPU bloqueado à frequência mínima quando o ecrã se desliga.

      • Joaquim Santos says:

        “usar profiles é mau”…
        lol
        há várias formas de usar profiles..
        gostava de saber o que é te tem de mau, profiles da forma que eu estou a falar não exige processamente quase nenhum, nada mais é do que um evento!
        no caso que disse o setcpu activa o profile powersave quando o evento de ecra desligado acontece.. e que processamento é que exige um evento do tipo de desligar um ecra? quase nenhum….
        😉

        • Usando profiles activas um daemon do SetCPU que faz com que ele passe a ter uma espécie de listener activo para poder identificar se os vários tipos de acções aconteceram e esse processo é o que faz mal. Dizes que é um evento, certo, mas e como achas que o programa detecta que há um evento? Simplesmente adivinha? Isso não existe no mundo da computação.

  32. Ana Narciso says:

    Quem sabe, sabe!
    Gostei de ler, já aprendi qualquer coisa hoje!

  33. Valente says:

    Não terá a ver com o tema deste artigo, mas o que é deodex/odex? Isto esta-me cá a fazer uma confusão!!!

    Obrigado

  34. André Caeiro says:

    SGS2 + Cyanogenmod9 (ICS) nightly 30-03-2012 + siyah 3.0b7 = HEAVEN
    Tenho-o usado overclockado a 1600Mhz (já usei a mais na altura do gingerbread) e está mais que aprovado.

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.