sábado, 27 de junho de 2020

Apple abandona a Intel

A notícia estourou esta semana, a Apple vai deixar de usar os processadores Intel nos seus processadores, em favor de chips projetados internamente, baseados em arquitetura ARM. Não é totalmente uma surpresa, uma vez que ela já projeta os chips dos seus celulares e tablets, que estes chips são plenamente capazes de assumir mais carga de trabalho, que a Apple vem sabidamente enfrentando problemas com os chips Intel em termos de aquecimento, com o consequente throtling, e por fim, que os rumores sobre isso já circulam faz tempo. Então não é propriamente motivo de surpresa. Assim como não seria se a Microsoft decidisse fazer o mesmo na linha Surface, pois existem não apenas rumores sobre isso faz tempo, mas tentativas concretas, como no Windows RT. Mas agora que a Apple realmenet anunciou oficialmente, e que é um fato concreto, isto dá oportunidade para uma série de considerações interessantes.

domingo, 14 de junho de 2020

O modo (correto) de resolver os conflitos de relógio no dual boot Ubuntu/Windows

São problermas recorrentes que eu enfrento quando configuro um PC para dual boot, e como acontecem com intervalos muito grandes, um dois anos, acabo esquecendo... Um é decorrente do UEFI secure boot, que já documentei aqui no blog, e o outro, mais trivial mas também chato, é o do relógio.

O usuário logo vai perceber, depois instalar o dual boot e de alguns boots nos dois sistemas, que o relógio está errado. Logo vai imaginar a causa: os dois sistemas interpretam o relogio "da BIOS" (o termo tecnicamente mais correto é o RTC da placa mãe, real time clock, mas coloquei assim para facilitar a referência). O Windows interpreta o valor que está no RTC como o horário local, já considerando o fuso horário. Para o Brasil é o time zone -3. Já o Ubuntu (testei recentemente no 20.04 LTS) interpreta por default como o horário UTC, a time zone 0, e depois faz a conta para mostar na tela. Por default também os sistemas atualizam automaticamente o relógio, e por isso ele vai mudando de um para o outro.

Nesse ponto minha primeira reação foi desabilitar a atualização automática. Mas basta pensar um pouco para notar que não vai adiantar, não existe um valor fixo que atenda aos dois sistemas. Mesmo que você se conformasse em ficar vendo horário errado, existem outros problemas nisso (sem spoilers, vou explicar a seguir).

Aí me veio a idéia de "fraudar" a time zone no Linux, dizendo que eu estava na time zone 0 (por exemplo, Reikjavik, na Islândia), e o horário local no RTC ficaria o do Rio de Janeiro. Aparentemente funcionou, ambos passaram a mostrar exatamente o horário do RTC, e por alguns dias me senti o "espertão". Mas esta solução tem um problema grave, que só identifiquei depois.

Depois de alguns dias comecei a receber um erro da atualização do Ubuntu, e depois de mexer na configuração das atualizações, que o sistemas estava "up to date" por vários dias seguidos. Estranho. Mexi de novo nas atualizações e o erro voltou. O problema aqui foi relacionar relógio com atualizações. Tentei "apt-get update" no terminal, e veio uma mensagem mais específica. Pesquisando esse erro na Web, em 10 minutos vi que a causa era o relógio (e sem esse recurso de pesquisa, sabe-se lá quanto tempo levaria, me assusta como ficamos dependentes da Web).

A raiz do problema é que o sistema e o servidor de atualizações precisam confirmar os horários. E o horário do RTC estava errado, ou seja, no mundo real em Reykjavik não é o mesmo horário que no Rio. E como vimos o Ubuntu considera o RTC como sendo o valor do UTC, e não o que é mostrado na tela.  Ou seja, mexendo abritráriamente nos relógios e time zones não há como compatibilizar os dois sistemas para mostrar os valores corretos de relógio e ao mesmo tempo manter as atualizações (e esse foi só o primeiro efeito colateral).

Mas existe uma solução mais limpa. É possivel alterar como o Ubuntu lê o RTC, para que passe a considerar como o horário local. Na mesma pesquisa Web citada antes veio a solução:


timedatectl set-local-rtc 1

A solução foi encontrada neste tópico. Depois de testar vários boot e a atualizações, o problema parece resolvido. E vim aqui no blog para registrar, quem sabe da próxima vez que eu configure um dual boot eu lembre pelo menos de ler aqui...

Nota: eu citei no título e no artigo o Ubuntu e não o Linux em geral, poorque não sei neste momento como as outras distribuições estão se comportando quanto ao relógio. Mas caso tenha um problema parecido em outra distro, este pode ser o caminho.

quinta-feira, 21 de maio de 2020

Processadores AMD x Intel: porque não existem vencedores definitivos

A décima geração de processadores Core acaba de ser lançada, e já manifestei minha decepção em redes sociais. Não que toda a linha seja ruim. Se eu estivesse montando um PC neste momento, o que felizmente não estou, eu consideraria alguns modelos da faixa intermediária, um Core i5, por exemplo.  Mas de um modo geral, como entusiasta de tecnologia, é uma decepção. 14 nm, ainda? Basicamente a mesma tecnologia do meu Core i7 6700K? Sim, com alguns melhoramentos, mais  núcleos... mas é pouco. E o topo de linha, o i9 10900K, é uma aberração em excessos de consumo e dissipação térmica. Não encontro justificativa para optar por ele, o que não significa que não exista, mas não encontro, pelo menos para usuários típicos. O 10900K pode ser, dentro de certas circunstâncias, o melhor, mas a que preço? Em consumo de energia? Em custo total, não só dele, mas em todos os demais componentes de PC para mantê-lo frio e funcionando bem? Neste exato momento fica difícil defender a Intel, e parece que ela está perdida para sempre. Mas um pouco de perspectiva histórica mostra que não é a primeira vez, e nem provavelmente será a ultima. Veja alguns exemplos.

Lá em 2004/5 eu me propus a montar um PC bom. Geralmente eu sempre ia no custo-beneficio, mas desta vez resolvi "investir" em algo com performance alta, que desse satisfação. Mas não fiz um trabalho tão bom de pesquisa. Optei por um Pentium 4 de arquitetura "Prescott", o primeiro com o design LGA, o LGA 775, . Ele também tinha Hyper-Threading, um core, dois threads, meu primeiro processador multi-threaded. E o Pentium prometia alto clock. Em teoria, e pelo marketing, parecia tudo ótimo. Na pratica: aquecimento e throtling. E com as ferramentas disponíveis na época, simplesmente não consegui resolver o problema de aquecimento. Não lembro se já havia water cooling em 2004, mas não devia ser algo muito acessível, eu nem considerei uma opção. Coloquei o melhor cooler a ar que encontrei (ironicamente esse P4 vinha com cooler box!), um dos  melhores gabinetes do mercado na época para resfriamento, segundo reviews e minha própria experiência. Não pensava muito em cable management nesses tempos, mas ainda assim, creio que isso não foi um fator determinante. Eu lutei com o conhecimento e recursos que eu tinha, e não consegui evitar o throtling. Se não me engano, havia programa da própria Intel que permitia visualizar que estava ocorrendo. Enfim, depois de um tempo desisti. Fiquei com este PC relativamente muito pouco tempo, uns 6 meses, menos de um ano, e o vendi. A máquina funcionava, só que não da forma que eu imaginei quando comprei, não supriu minha expectativa.

Minha opinião naquele momento, após toda esta frustração e de me informar melhor, é que a Intel havia chegado a um beco sem saída evolucionário. Era o fim. A arquitetura deles estava saturada. E passei a comprar AMD. Um tempo depois a Intel tira a arquitetura Core da manga. Começou humilde, até chegar ao Skylake, que era rei em 2015/16, a sexta geração. A seguinte, a sétima, já mostrou sinais de desgaste. Foi nessa que a prática do delid ficou popular, porque o 7700K aquecia demais, e era preciso trocar a pasta térmica interna entre o heat spreader e o die. Ou se conformar com a performance limitada pelo aquecimento. Mas ainda era competitiva e dominava alguns segmentos de mercado. A  Intel continuou se apoiando em alguma vantagem de performance e sua reputação, mas já sabíamos há anos que mais uma vez sua arquitetura estava saturada. Deu pra perceber o ciclo? Levou mais ou menos uma década.

Mas vamos voltar um pouco. Como disse antes, depois do P4 Prescott passei a comprar AMD. Foram vários. Lá por 2012 mais ou menos eu adquiri um AMD FX 8350. Era naquele momento o topo de linha da AMD, pelo menos entre o que estava disponível no mercado. E na realidade, o topo de linha oficial, que foi o FX 9050, era meio bizarro, uma espécie de 8350 overclocado de fábrica, super quente. Que nisso até lembra esse i9 de décima geração, só que além disso também tinha performance limitada, ao contrário do i9. Mas em comum eles eram o fim da linha evolutiva. Os FX tinham vários problemas de projeto, e por isso ele envelheceu mal. Em 2012 quando comprei era aceitável, mas em 2015 era lixo. A compra desse FX não foi tão errada quando ao daquele Pentium 4 citado acima, tanto que ainda tenho ele funcionado até hoje. E não foi caro. Mas também não foi a melhor opção, tendo em vista qualidade e longevidade. Eu perdi o timing de pular da AMD para a Intel. E parecia o fim da AMD. Até que uns anos depois surge o Ryzen, no começo com alguns problemas (compatibilidade de memórias, IPC baixo, etc), mas promissor. Até chegar na terceira geração, os 3000, que são um sucesso quase unânime. O ciclo da AMD.

Tomando por estes dois exemplos extremos parece que só compro processador ruim, mas entre estas compras existe uma maioria de processadores ótimos, ou aceitáveis. Estes dois são apenas exemplos de finais de ciclos de liderança tecnológica de cada empresa. Monto PC desde 1987, comecei com um clone de PC-XT, com um clone de processador Intel 8088 fabricado pela... Nec  (é isso mesmo, o NEC V-20. Com botão turbo no gabinete pra chegar a... 10 MHz. Atenção, MEGA Hertz. O stock era 4,7 Mhz, se não me engano).  E assim que a AMD entrou no jogo, esse padrão descrito antes vai se repetindo por décadas, com a Intel e AMD se revezando na liderança do mercado x86, ou algum aspecto dele, uma nova tecnologia, ou mais performance. A Intel introduziu instruções MMX, a AMD introduziu 64 bits no mercado mainstream. Nada disso foi suficiente para uma vantagem definitiva. Olhe para o passado e vai identificar vários ciclos. Não tenho bola de cristal, não prevejo o futuro, mas nada indica que esses ciclos vão parar. Se em algum momento os ciclos parassem, com uma empresa fazendo sempre produtos inferiores, uma dominaria de vez e a outra sairia do mercado de processadores para PC.

A briga agora parece perdida para a Intel. Ela está se esforçando pra entregar 10 nm, enquanto que a AMD está em 7 nm e não pára de evoluir. A AMD fornece processador e chipset para as duas linhas principais de consoles, xBOX e PS4/5. A Apple ensaia abandonar os chips Intel no Mac de vez em favor de chip próprio baseado em ARM. O mercado mobile foi perdido para a ARM. O que a Intel pode fazer pra reverter essas perdas? Talvez nada, talvez desistam de PC. Ou talvez venha mais um ciclo, com a Intel entrando com alguma inovação que não esperamos. No cenário da Intel desistir do PC, que eu particularmente acho bem improvável, a AMD domina o mercado x86, e se acomoda. E nós consumidores teremos cada vez menos evolução, e preços cada vez maiores. Diante disso, é insano consumidores torcerem pela hegemonia de uma marca, por um vencedor definitivo. Precisamos das duas (ou mais) empresas para que a evolução, mesmo com seus altos e baixos, seus ciclos, para termos custo acessível e produtos melhores. E se um deles vencesse e dominasse o mercado, também ficaria exposto a processo por monopolio. Ou seja, no fundo uma precisa da outra, e nós PC builders precisamos das duas,