2 pontos por GN⁺ 2023-08-22 | 1 comentários | Compartilhar no WhatsApp
  • O Macintosh era considerado um computador rápido graças ao microprocessador 68000, mas no uso real o disquete acabava sendo o gargalo de velocidade
  • O ponto que Steve Jobs considerava especialmente problemático era o tempo de inicialização, desde ligar o aparelho até o teste de memória, a inicialização do sistema operacional e o carregamento do Finder
  • Jobs pressionou Larry Kenyon dizendo que, se conseguisse reduzir a inicialização em 10 segundos, 5 milhões de usuários economizariam 50 milhões de segundos por dia, e em um ano isso equivaleria a dezenas de vidas humanas
  • A equipe já estava motivada a melhorar o desempenho do software, então não está claro o quanto esse cálculo realmente influenciou
  • Como resultado, alguns meses depois a equipe do Macintosh conseguiu reduzir o tempo de inicialização em mais de 10 segundos, e o estilo de persuasão de Jobs ficou como uma anedota bem-humorada

O gargalo do Macintosh era o disquete

  • A equipe do Macintosh via o microprocessador 68000 como algo 10 vezes mais rápido que o Apple II e, por isso, achava que estava criando um computador rápido
  • Mas a RAM era limitada, então era preciso ler dados do disquete com frequência, e nesse aspecto ele não era mais rápido que o Apple II
  • Quando os aplicativos reais começaram a funcionar, o disquete apareceu como o principal gargalo

Steve Jobs e sua fixação com o tempo de inicialização

  • Uma das coisas que mais incomodavam Jobs era o tempo de inicialização ao ligar o Mac pela primeira vez
    • teste de memória
    • inicialização do sistema operacional
    • carregamento do Finder
  • Esse processo podia levar alguns minutos, ou até mais
  • Jobs exigiu de Larry Kenyon, responsável pelo driver de disco e pelo sistema de arquivos, que tornasse a inicialização do Macintosh mais rápida

O cálculo de que “reduzir 10 segundos salva vidas”

  • Larry Kenyon tentou explicar onde havia espaço para melhorias, mas Jobs não se interessou por essa explicação
  • Jobs supôs que, alguns anos depois, 5 milhões de pessoas iniciariam o Macintosh pelo menos uma vez por dia
  • Se o tempo de inicialização fosse reduzido em 10 segundos, isso economizaria 50 milhões de segundos por dia e, em um ano, equivaleria a dezenas de vidas humanas
  • Por isso, ele dizia que tornar a inicialização 10 segundos mais rápida tinha um valor comparável a “salvar dezenas de vidas”

Resultado real

  • A equipe já queria, de qualquer forma, tornar o software o mais rápido possível, então não é certo dizer quanto a persuasão de Jobs influenciou
  • Ainda assim, a forma como ele argumentava foi vista dentro da equipe como algo bastante bem-humorado
  • Nos meses seguintes, o tempo de inicialização do Macintosh foi de fato reduzido em mais de 10 segundos

1 comentários

 
GN⁺ 2023-08-22
Opiniões do Hacker News
  • Segundo uma história que ouvi de um engenheiro antigo da Apple, na época do MacOS 8.x a maior reclamação nas pesquisas com usuários era o tempo de inicialização
    Na época levava em média cerca de 45 segundos, e como o sistema já tinha suporte a suspensão, perguntaram por que as pessoas se importavam com o tempo de boot
    Descobriu-se que as pessoas não reiniciavam apenas uma vez por dia ou por semana, mas com frequência por causa da instabilidade; na nova versão, melhoraram também o boot, mas se concentraram mais em estabilizar o sistema operacional
    No fim, as reclamações sobre o tempo de inicialização desapareceram, não porque ele tivesse ficado incrivelmente rápido, mas porque as pessoas passaram a reiniciar muito menos; a lição é que é preciso entender não só o que os clientes pedem, mas também por que pedem

    • Isso nem precisava de pesquisa. Na época, o OS não tinha proteção de memória, e, na inicialização, extensões da Apple e de inúmeros terceiros costumavam aplicar patches no sistema por toda parte
      As regras para esses patches também eram pouco claras; por exemplo, podia haver um caminho de código dentro de um patch de chamada de sistema que alocasse memória, algo que não deveria acontecer porque o gerenciador de memória não era reentrante
      Além disso, rodava código compilado com os compiladores C da época, e as ferramentas para impedir escritas de memória fora dos limites eram muito limitadas
    • Clientes da Apple vinham pedindo mais estabilidade havia anos, e a Apple tentou repetidamente soluções significativas, mas falhou
      O MacOS 8 também introduziu uma proteção de memória muito limitada, mas na prática ela não ajudava muito; nesse contexto, esta é uma história sobre a capacidade e a disposição de uma organização de racionalizar o problema
      Esse problema quase matou a Apple como negócio
    • Parece plausível. O tempo que perdi porque meu Quadra travava com alta probabilidade durante digitalizações foi muito maior do que o tempo perdido reiniciando de propósito
    • O Mac OS X demorava para desligar
      Um amigo foi mostrar o Mac OS X pela primeira vez à esposa e, quando tentou desligá-lo, ela fez uma careta e disse: “O que eu gostava no Mac era justamente que ele desligava na hora”; ele respondeu: “Então você vai ter que encontrar outra coisa de que gostar no Mac OS”
    • Existe uma lei imutável do universo segundo a qual computadores de consumo sempre precisam levar 30 a 45 segundos ou mais para inicializar
      Se agora está mais rápido, é só esperar alguns anos. Os desenvolvedores vão deixar passar regressões de desempenho suficientes para voltar a esse patamar
  • Acho que já tinha ouvido essa história e depois esquecido. Quando eu liderava a equipe de instalação, download e patches na Blizzard, costumava dizer ao time: “Se 10 milhões de pessoas baixarem e instalarem este patch e fizermos cada uma gastar 1 minuto a mais, estaremos consumindo mais uma fração de vidas humanas”
    Era exagerado e meio brega, mas ajudava a impulsionar melhorias
    A métrica que eu defendia com ainda mais ênfase era a velocidade da luz. Na época em que a instalação era feita a partir de DVD, a velocidade de rotação do disco era a velocidade da luz daquele ambiente, então tínhamos que instalar o mais perto possível dessa velocidade
    É preciso continuar melhorando a velocidade de trabalho até bater nos limites físicos; tempo é precioso e não dá para conseguir mais

    • Eu gostaria que mais engenheiros pensassem assim. Trabalhando com infraestrutura, essa também é a história que conto a mim mesmo para justificar meu lugar no mundo
      Ao lançar uma grande melhoria de desempenho de infraestrutura, o ponto principal não é a velocidade nem a economia de custos em si, mas o fato de que há menos CO2 na atmosfera e que o tempo humano distribuído por milhões de pessoas passa a ser usado em outra coisa que não esperar uma resposta do computador
      Não somos médicos salvando a vida de indivíduos, mas podemos devolver às pessoas parte da vida delas. Alguns softwares são usados por centenas de milhões ou bilhões de pessoas, então uma pequena mudança pode economizar tempo equivalente a várias “vidas”
    • Na época em que eu mexia em coisas como emuladores de servidor relacionados ao WoW, sempre ficava evidente o quanto a Blizzard se importava com esse tipo de coisa
      Se minha memória não falha, a distribuição de patches baseada em torrent para WoW e afins era realmente muito bem feita, especialmente impressionante em um setor com tanta pressão
    • A última parte é importante
      Vi muitos engenheiros que poderiam ser considerados trabalhadores dedicados, mas que gastavam muito pouco tempo entendendo o hardware em que rodavam as coisas e o que era possível fazer nele
      Em discussões de desempenho, ouvi muita gente dizer que algo era “lento” ou “ok”, mas muitas vezes ignorando completamente a máquina subjacente e os limites possíveis
    • Como alguém que viveu o desastre inicial dos patches e atualizações do WoW, só tenho elogios à forma como o WoW é atualizado e distribuído hoje
      Meu recurso favorito é o suporte a carregamento progressivo. WoW é um jogo enorme, mas dá para começar a jogar com apenas alguns assets; ele reduz a qualidade mostrando placeholders e assets de baixa qualidade, ou até pula certas áreas
      Mesmo em uma instalação completamente nova, dá para jogar em poucos minutos. Os jogadores em geral consideram isso natural, mas sou grato porque certamente foi imenso o esforço para trocar as rodas de um trem em movimento e entregar enormes volumes de dados com alta performance e sem grandes problemas
    • “Tempo é precioso e não dá para conseguir mais” é verdade, mas, neste exemplo, o tempo economizado no download acaba sendo usado para o nobre propósito de jogar videogame
      Fico em dúvida se isso é um uso de tempo tão melhor assim do que esperar pelo download
  • Steve Jobs sempre inventava alguma coisa para motivar e pressionar as pessoas, num estilo parecido com o chamado campo de distorção da realidade
    Segundo Mike Slade, por volta de 1990 Jobs tentou recrutá-lo da Microsoft para a NeXT; na época, a Microsoft estava prestes a ter um enorme sucesso com o Windows 95, enquanto a NeXT enfrentava dificuldades para vender computadores
    Jobs disse a Slade que, se ele ficasse em Seattle, seu talento seria desperdiçado, e que o Silicon Valley era o centro da empolgação e da atividade, um lugar onde ele poderia florescer
    Em seguida, descreveu Palo Alto como um “lugar especial”, como Florence na época do Renascimento italiano, e improvisou um discurso inflamado dizendo que havia tanto talento ali que, ao andar pela rua, você poderia encontrar um acadêmico num momento e um astronauta no momento seguinte
    Slade ficou tão impactado com a descrição que decidiu se mudar para Palo Alto; um ano depois, jantando com a esposa no Il Fornaio, uma rede de restaurantes italianos na University Avenue, em Palo Alto, olhou o verso do cardápio e viu escrito ali a mesma história, com a frase “Palo Alto é como Florence na época do Renascimento…”
    No fim, Jobs basicamente havia convencido alguém usando o texto do cardápio de uma rede de restaurantes de que gostava, e ainda por cima um slogan publicitário bem ruim; Slade lembrou que ele era um “fanfarrão realmente sem vergonha”
    https://www.cultofmac.com/573753/how-jobs-poached-a-microsof...

    • Considerando que Palo Alto, na prática, é bem sem graça, a história fica ainda mais engraçada
    • A Palo Alto de Steve Jobs devia ser mesmo um lugar especial
      Quando trabalhei lá alguns anos atrás, a única coisa memorável das ruas de Palo Alto para mim era o cheiro avassalador de urina no túnel sob a Caltrain Station
    • Parece uma história meio lendária
      É difícil acreditar que um engenheiro profissional inteligente, trabalhando em uma das maiores e mais prestigiadas empresas do mundo na época, tenha largado o emprego e mudado a vida inteira para outro estado só porque um potencial empregador disse “confie em mim, vai ser incrível”
      Para tomar uma decisão dessas, imagino que ele ao menos tenha pegado um avião, visto apartamentos, visitado o escritório etc. É uma ótima história, mas com certeza havia muito mais contexto
    • É uma história divertida, mas é difícil acreditar que o Il Fornaio, que serve comida italiana comum, fosse o restaurante favorito de Jobs
      Era o tipo de restaurante a que se ia quando todas as outras opções estavam reservadas ou já era tarde demais para dirigir para mais longe
    • É uma história divertida, mas o Silicon Valley do começo dos anos 90 foi realmente um período especial
      Era o centro do mundo da computação, e de fato acontecia de você esbarrar aleatoriamente em pessoas incríveis em lugares como Fry’s, restaurantes e bares
      Acho que os jovens de hoje não entendem muito bem que muita coisa do entorno da tecnologia atual tem raízes no South Bay e na Peninsula dos anos 90
  • Programadores e engenheiros deveriam aplicar esse modo de pensar de forma geral. A soma total do tempo gasto esperando software lento é enorme, e mais equipes de desenvolvimento deveriam dar uma prioridade maior à performance
    Não somamos conscientemente todo o tempo que passamos esperando por software e serviços lentos, mas, nesses momentos, inconscientemente o sistema parece hostil a nós, causando desconforto e irritação
    Quando penso nisso de forma minimamente consciente, acabo desprezando os engenheiros e líderes de projeto que acreditaram que aquilo que criaram era bom o suficiente para lançar
    Considerando a capacidade de processamento dos computadores modernos, esperar centenas de milissegundos por uma solicitação trivial, ou muito mais por uma um pouco complexa, é evidência de negligência grave por parte dos programadores

    • Escrevi em outro lugar sobre ADHD, mas aqui vai uma história minha, que não vou identificar
      Numa quinta-feira à noite, minha namorada pediu que eu arrumasse um MacBook antigo; eram só algumas etapas, como desvincular contas atreladas ao hardware, descobrir como remover uma chave de firmware que eu provavelmente tinha configurado antes, fazer uma instalação nova e aplicar atualizações
      Mas algumas etapas ou reinicializações levavam mais do que poucos segundos, e o trabalho ficava me tentando, então levei 6 meses
      Depois de interromper várias vezes, deixei o notebook na mesa ao lado do teclado e terminei em 30 minutos no total, ao longo de 6 horas, o que foi uma vitória
      Se alguém tivesse amarrado minhas mãos ao notebook, eu teria terminado mais rápido, mas a dor de ser forçado a encarar uma tela vazia, barras de progresso e indicadores girando teria sido inimaginável
    • O computador é que deve esperar pela pessoa, não a pessoa pelo computador
      Trabalhos em lote de longa duração são uma exceção
  • Computadores comuns já conseguiam dar boot frio em menos de 30 segundos a partir de um disco rígido giratório de 5400 rpm; por que não conseguem iniciar em menos de 1 segundo com um SSD NVMe moderno?

    • Por causa da complexidade e do tamanho
      O Windows 95 ocupava cerca de 50 MB instalado, com a maioria dos recursos incluídos, e o Windows 2000 cabia em um único CD de instalação
      Hoje, o instalador do Windows 10 nem cabe em um DVD de camada única, e também é preciso desistir de instalá-lo por um pendrive USB em FAT32. Alguns UEFI antigos ainda não conseguem lidar com exFAT
      O computador que, na minha percepção, foi o mais rápido que já usei era uma máquina com dual Pentium 3 866, Rambus e disco SCSI U320 de 15k dando boot no XP; era quase telepático
    • Com uma BIOS modificada recentemente e uma placa adaptadora PCIE, consegui colocar um SSD NVMe em um Dell i5-4590 antigo, e ele inicializou uma instalação nova do Windows 10 em poucos segundos
      Parece o velho problema de o boot ficar mais longo à medida que o Windows vai acumulando mais tralha
    • Os ícones antigos eram em preto e branco, 32x32, com máscara; agora são 512x512 com cor de 48 bits
      As fontes do sistema também tinham cerca de 200 caracteres antigamente, mas hoje contêm dezenas de milhares
      Extrapolando isso para todo o resto, fica bem claro que há muito mais coisa para carregar
    • Meu PC com Windows 11 inicializa em cerca de 20 segundos. Mais da metade disso é POST, e depois a tela de login do Windows aparece em 5 a 10 segundos
      É rápido o suficiente para não me incomodar
    • Meu NUC inicializa o Ubuntu em exatamente 3 segundos, incluindo o POST
  • Se você precisa esperar pelo computador, é porque ele não é rápido o bastante
    A lógica de Steve aqui é amplamente usada na indústria e, do jeito que sugere que, se você falhar, é um assassino, chega quase a ser chantagem emocional, mas ainda assim é clássica

    • Muito mais do que isso, soa como uma motivação para fazer as pessoas pensarem que seu trabalho afeta a vida das pessoas
      É muito fácil jogar a culpa pelo software lento no usuário, ou em PMs e organizações que empurram funcionalidades e velocidade de desenvolvimento acima da velocidade do produto
      O slogan de Steve aqui quer dizer que o desempenho de software tem impacto real no cotidiano, e apontar isso não é chantagem emocional
    • Também se conecta a outra história sobre Jobs
      Depois do lançamento do iPad, Jobs teria entrado em uma reunião da equipe do Mac segurando um iPad, despertado o iPad, e ele ligou imediatamente
      Em seguida, despertou um Mac, que levou algum tempo para sair do modo de repouso, e Jobs teria perguntado algo como “por que isto não consegue ser assim?”
      Sem o iPad para mostrar que era possível, teriam continuado discussões sobre coisas como velocidade de memória e velocidade de disco, e o repouso/despertar mais rápido do Mac acabou pressionando o Windows a melhorar também
  • Se essa lógica estiver correta, fico pensando no caso das inúmeras animações espalhadas pelas UIs de hoje
    Fora servirem para parecer bonitas nas primeiras dezenas de vezes, em muitos casos elas só desperdiçam tempo
    No alternador de apps do celular que uso, com animação leva 0,5~1 segundo, mas, ao desligar a animação, a troca é praticamente instantânea

    • Animações têm benefícios reais de experiência do usuário
      Se a tela muda instantaneamente para um layout completamente diferente, leva tempo para processar visualmente; se os elementos se movem interpolados até as novas posições, esse tempo de processamento é reduzido à duração da animação
      Normalmente é algo em torno de 0,25 segundo, não 0,5 ou 1 segundo
      Para obcecados por velocidade ou usuários avançados, pode atrapalhar, então basta desativar; mas o usuário-alvo é o usuário médio, não pessoas que aprenderam cada canto da UI por memória muscular
    • Nem toda animação é inútil. Na verdade, animação inútil não tem lugar em uma UI
      Algumas animações podem se sobrepor a operações demoradas, dando ao usuário a sensação de que houve resposta enquanto ele ainda precisa esperar. É assim que o iOS parece funcionar ao alternar para um app que foi trocado para disco; como há tempo de carregamento, a animação compensa parte do atraso
      Sem animação, o usuário pode achar que não executou a ação corretamente e tentar repetir a entrada, o que leva à frustração
      Algumas animações são necessárias para manter o senso de orientação do usuário no fluxo da UI. Por exemplo, a animação de minimizar move a janela até o ícone que deve ser pressionado para restaurá-la, e ajuda a distinguir fechar de minimizar
      Algumas animações são necessárias para dar feedback adequado mantendo a responsividade. Ao rolar uma lista em uma tela sensível ao toque, sem a animação de mola no fim, o usuário não tem como saber se chegou ao final da lista ou se a tela sensível ao toque travou
    • Muitos softwares também inserem latência de entrada ou limitação de velocidade sem grande motivo
      As UIs de sistema de consoles de videogame e alguns menus de jogos parecem ser especialmente ruins nisso
    • Celulares de baixo custo têm uma taxa de quadros péssima, então, para parecerem suaves, as animações precisam ser longas
      Com uma animação curta de 200 ms a 25 fps, há apenas 5 quadros, então ela fica truncada e com aparência tosca
      Se fizerem com 1000 ms, parece suave e bonito, mas é desesperador de usar
      Pode ser uma solução impopular, mas dá para usar um iPhone. O alternador de apps funciona tão rápido quanto o movimento do dedo e não tem problema para manter 60 fps consistentes
    • Achei que havia algo errado porque duas instalações do Plasma estavam lentas no geral
      Não era lento a ponto de ficar inutilizável, mas dava para sentir; no fim, descobri que a velocidade das animações era baixa demais por padrão
      Ao dobrar a velocidade, tudo pareceu 1.000 vezes melhor
  • O Windows 11 leva cerca de 12 minutos para inicializar em um HDD. É só imaginar tentar inicializar por um FDD
    Depois de instalar o Windows 11, esperar todas as atualizações serem instaladas em um HDD leva cerca de 8 dias

    • HDDs não são tão ruins assim
      https://www.youtube.com/watch?v=MpNagBwWlNk
    • Um tempo atrás, ao tentar criar um sistema dual boot, estraguei as partições de um iMac 2017 com Fusion Drive, e desde então o Mac ficou lento
      Do início até ficar minimamente usável, provavelmente levava uns 5 minutos; de qualquer forma, era bastante tempo
      No fim de semana passado, cansado da lentidão, fui pesquisar e havia o comando diskutil resetFusion 0, que restaura as partições para o padrão
      Executei esse comando e reinstalei o OS, e o iMac voltou a ficar razoavelmente rápido. Não é excelente, mas está muito melhor do que antes
      A lição aprendida é que dual boot em Fusion Drive é uma má ideia

    • Nunca vi tempos de inicialização assim, embora eu quase nunca reinicie
      Normalmente reinicio minha máquina com Windows 10 uma vez a cada poucos meses, e nosso departamento de TI prepara PCs Windows em cerca de uma hora
      Parece que há algo muito errado aí, mas não sou especialista em TI
    • Deve haver uma quantidade enorme de telemetria para coletar
    • Meu Windows 11 não é assim. Leva 3~4 minutos, embora pareça uma hora
  • Lembro de ter visto, tempos atrás, um artigo e uma discussão sobre o InterBase (atual FireBase). O ponto era que o modelo de armazenamento e de recuperação com autocorreção era importante em determinados cenários, e na época havia esta citação:
    “O AFATDS consiste em 935.000 linhas de código Ada executadas em workstations HP RISC e nas Light Weight Computer Units do Army”, disse John Williams, da contratada principal Magnavox Electronic Systems Company.
    “Precisávamos de um único banco de dados que pudesse escalar e funcionar em plataformas Unix e PC. O produto precisava ser instalado rapidamente e oferecer alta disponibilidade sem monopolizar os recursos do sistema.”
    “Um suporte à decisão dessa natureza exigia uma arquitetura modular e flexível que desse suporte tanto a processamento distribuído quanto a bancos de dados distribuídos. Por isso escolhemos o InterBase. Ele superava os concorrentes em desempenho e nos convenceu de que era confiável até em situações de vida ou morte.”
    O contexto exato da discussão era que, em certos tanques, ao disparar o canhão principal, ocorria um evento de EMP interno que podia reiniciar o sistema, e era necessário um tempo de reinicialização e recuperação muito rápido para que fosse possível disparar novamente.

  • Fico pensando como teria sido se Steve soubesse quantas vidas de milhões de pessoas desapareceriam por ficarem rolando sem parar em uma pequena placa de vidro.