Porque motivo por vezes a PS5 tem por vezes piores tempos de loading que a Xbox?

Tudo se explica pela forma como os SSDs funcionam! Uma explicação que é válida para qualquer SSD!

No mundo dos videojogos a maior parte das pessoas que usam computadores são completamente desconhecedoras da realidade do funcionamento do hardware. Daí que se pensa que um SSD mais rápido tem obrigação de ganhar sempre quando comparado com um mais lento. E efetivamente, no caso das consolas, o SSD da PS5 é bastante mais rápido que os da Xbox, ao possuir leituras de 5 GB/s contra 2.4 GB/s na XBox, mas a realidade é que nem sempre ele leva a melhor.

Porque é que isso acontece?

Na realidade os números de capacidade máxima de leitura não contam a realidade toda de um SSD, pelo que ser mais rápido não garante a vitória em todos os casos!

Se se recordam do que Mark Cerny explicou, para Spider Man ganhar velocidade de leitura num HDD, vários ficheiros com objetos mais comuns estavam repetidos até 5000 vezes no disco, de forma a se reduzir os tempos de procura. Basicamente uma otimização de ficheiros para a realidade da consola.



Ora nos SSDs, o tempo de procura reduz-se a basicamente zero, pelo que essa situação não é necessária. Mas no entanto, mesmo assim, nem todas as leituras são iguais.

Eis aqui um exemplo de resultados de leitura de um SSD tradicional com uma capacidade de leitura de aproximadamente 500 MB/s.

Como se vê, o programa testa 4 tipos de leituras e escritas diferentes (que abordaremos de seguida), e todas elas obtém valores diferentes. E estes são valores que mudam de SSD para SSD, sendo que um SSD mais rápido, pode não ser forçosamente mais rápido em todos estes tipos de leituras.

Eis um outro teste de um outro SSD, agora com uma capacidade de transferência 14 vezes superior, de 7+ GB/s.



Por incrível que possa parecer, este SSD NVME com capacidades de transferências brutais, revela-se mais lento que o SSD antigo (na realidade menos de metade em leitura, e basicamente igual na escrita), no ultimo tipo de leituras. Seria um caso onde casos estes dois SSDs fossem colocados lado a lado a ler o mesmo ficheiro, o SSD de 500 MB/s demoraria menos de metade do tempo do SSD de 7 GB+/s a ler a mesma coisa.

Chocados? Se sim, é porque realmente é comum para o utilizador normal não ter a mínima noção de como um SSD funciona. Daí que quando vemos pessoas a questionar como é que é possível que no jogo A ou B o SSD da Xbox passe o da PS5 (e poderiamos incluir aqui SSDs de PC tambem), isso mostra como há desconhecimento sobre como os SSDs funcionam. Porque podem haver casos em que o SSD da Xbox se pode revelar mais rápido que o da PS5, apesar de no global, e especialmente se os ficheiros estiverem otimizados, ele ser mais lento (menos de metade da velocidade).

Antes do mais convém perceber-se que os testes de cima são teóricos, e eles mostram leituras sequencias de ficheiros de um único tipo. Na realidade, nos videojogos o que vamos ter é um misto de tudo o que ali é testado, pelo que o resultado final que se reflete no tempo de leitura, vai depender da existência de mais ou menos ficheiros de um determinado tipo, e das capacidades de cada SSD com cada um dos tipos de leitura.

Basicamente a forma de se resolver isto, e garantir que o SSD mais rápido é sempre mais rápido, é usando otimização dos ficheiros. Se os ficheiros forem pensados para um SSD em particular, é possível obter-se resultados máximos que este anuncia. Mas normalmente, se o jogo for multi plataforma, apesar de que por norma deveremos ver a PS5 a ser a consola mais rápida nas leituras, isso pode não acontecer sempre.

Numa outra nota, convém que os sistemas testados estejam com as mesmas condições de ocupação, pois os SSDs atingem uma determinada ocupação, a sua performance pode descer.



Basicamente esse é o motivo pelo qual a Sony tem uma lista de SSDs oficiais para a sua PS5. Não basta que um SSD debite os 5 GB/s do leitor interno, interessa também que nas diferentes condições de uso/leitura, ele consiga igualar os superar o SSD presente na consola, de forma a se garantir paridade. E isso implica não só performances iguais ou superiores em todas as condições de leitura, como uma perda equivalente de performance com o aumento da ocupação.

Será ainda de notar que caso os SSDs sejam usados com a descompressão a ocorrer no CPU, a disparidade da PS5 para a Xbox pode aumentar, dado a Xbox ter um CPU ligeiramente mais rápido. E isso acontecerá ainda mais com o PC, se o CPU de teste for claramente superior aos das consolas.

Falta-nos apenas descrever então o que são os testes de cima. E eles são:

  • SEQ1M Q8T1
  • SEQ1M Q1T1
  • RND4K Q32T16
  • RND4K Q1T1

Antes de entrar em detalhes sobre os diferentes testes listados acima, vamos primeiro entender as situações que rodeiam uma “alocação de tamanho” (Size allocation).

Quando ocorre uma transação de dados entre o sistema operativo e o armazenamento, ela não ocorre instantaneamente. Estas transações de dados geralmente são chamadas de operações de entrada/saída (input/output). E quantas operações de entrada/saída podem acontecer por segundo é uma característica do SSD, e são indicadas como o número de IOPS suportados.



Temos ainda de explicar um outro conceito, a de “tamanho do bloco” (Block Size).

Sistemas operativos diferentes têm diferentes conjuntos de regras para fazer a alocação de tamanhos. Para além disso, o tamanho de um bloco determina a quantidade de dados que podem caber nele.

Consideremos por exemplo um arquivo de texto do bloco de notas com 1 KB de tamanho que queremos gravar. Para ele, criar-se um bloco de 4 KB é muito mais “econômico” no uso de espaço do que criar um bloco de 1 MB.

Basicamente não conseguimos gastar apenas 1K de SSD, pelo que temos de optar por um dos tamanhos de alocação disponíveis. E neste caso, um de 4KB, para um ficheiro de 1K, é o que cria o menor desperdício de armazenamento.

Mas esta escolha, apesar da vantagem no uso do espaço, não tem só vantagens. Isto porque blocos maiores fornecem taxas de transferência de dados mais altas do que blocos mais pequenos.



Basicamente, a alocação do espaço passa por uma escolha do block size, tendo em conta que cada acesso gasta uma IOP. Daí que optimizar para um SSD não seja apenas colocar ficheiros lá para dentro, é brincar com estes parâmetros e acordo com os seus pontos fortes.

Agora que percebemos isso, reparem que no nome dos testes vão encontrar coisas como Q1T1. O que são estas siglas?

Na designação dos testes o Q é definido como a profundidade da fila e representa o número de solicitações em um determinado ponto no tempo. T é definido como “Ameaças” e representa o número de processos (threads) que acedem ao disco num momento específico. Quanto mais profunda for a profundidade da fila e quanto mais threads existirem a cair sobre a unidade, pior será o seu desempenho.

Confusos??? Ninguém disse que isto era simples! E é por isso que o utilizador banal quando se limita a comparar tempos de loading, estranhando casos em que um SSD mais rápido fica atrás de um mais lento, só demonstra o total desconhecimento sobre o tema que está a abordar. Pura e simplesmente ficheiros colocados no disco à sorte não garantem que um SSD seja explorado convenientemente.

Para além do mais, num mesmo jogo, rotinas diferentes causadas por APIs diferentes e sistemas operativos diferentes, podem causar que estes parâmetros Q e T não sejam iguais em duas consolas diferentes, e tal pode permitir igualmente uma situação onde, só por essas diferenças, existam situações que possam permitir que um SSD mais lento possa, em determinadas situações, superar um mais rápido. Daí que o que se torna necesdsário mais uma vez para se obter as performances anunciadas? Optimização! Algo que nos jogos multi, raramente existe!



Garantir que o SSD mais rápido bate sempre o mais lento implica assim um tipo de otimização que as multi normalmente não fazem. Uma otimização no tipo, dimensão e estrutura dos ficheiros presentes no disco. Daí que, se por norma o SSD mais rápido será mais rápido na maior parte dos casos, isso não é garantido que aconteça sempre.

Mas agora que já percebemos o que são o Q e T, vamos então ver os testes:

1. SEQ1M Q8T1

SEQ1M Q8T1 é interpretado como um teste sequencial de dados (SEQ) com um tamanho de bloco de 1 MB (1M), com um total de 8 tarefas (Q8) num único thread (T1).

Este tipo de teste por norma representa a velocidade de leitura e gravação de arquivos grandes como por exemplo um filme, um Zip grande ou qualquer arquivo compactado, etc. Como o tamanho da alocação de um dado é grande, eles são copiados rapidamente.
Neste caso,, devido ao Q8 temos 8 tarefas que se simulam existir sobre o SSD neste teste.
Dado que o computador não pode executar 8 tarefas em simultâneo no armazenamento, ele coloca o processo numa fila de espera para tornar mais fácil à máquina executa-los sequencialmente.



É aqui que os níveis de prioridade do SSD da PS5, se usados, podem ajudar, ao permitir ajudar a criar prioridades nesta fila de espera, e ler assim os dados mais importantes primeiro. Note-se porém que isto requer implementação por parte dos programadores.

Este é assim um teste exigente. Mas um dos testes para o qual, devido a que 1 MB se tornou um tamanho muito comum, os SSDs estão mais otimizados, e um dos testes onde estes obtém as melhores velocidades de leitura.

Além disso, os processos na fila levarão uma fração de segundo para iniciar uma transação de dados. Uma operação que acaba por ser sempre mais rápida  que no teste SEQ1M Q1T1 que se segue.

Por norma este é o teste que nos dá o valor para se indicar a velocidade de um SSD!

2. SEQ1M Q1T1



Mais uma vez um  teste sequencial de dados (SEQ) com um tamanho de bloco de 1 MB (1M), executando um total de 1 tarefa (Q1) em sequência num único thread (T1).

A diferença aqui é o número de processos na fila. Nesse sentido, por norma, as leituras de velocidade de leitura e gravação para este teste serão sempre menores que em SEQ1M Q1T1 (apesar que tal pode não acontecer sempre).

Este é assim um teste que mostra a velocidade de leitura e gravação com apenas um processo na fila.

3. RND4K Q32T16

Este é um teste de leitura aleatória (RND) de 4 Kibibytes (4K) de 32 processos (Q32) numa fila de 16 threads (T16).



É um teste super pesado que coloca um enorme peso na unidade de armazenamento.

Aqui serão lidos e gravados dados de diferentes blocos de tamanho de 4 kibibytes* com quase 32 processos paralelos ou em serie – obtido graças ao multithreading.

* Um “kibibyte” é igual a 1024, ou 2^10, bytes. Apesar que 1 kilobyte também são 1024 bytes, esta é a unidade definida pelo International System of Units para armazenamento em SSDs.

4. RND4K Q1T1

Mais um teste de leitura aleatória (RND) de 4 Kibibyte (4K), mas com apenas um processo (Q1) em apenas uma Thread (T1). Como o SEQ1M Q1T1, este é um teste executado em uma thread com processamento em fila. Basicamente é um teste que fornece informações sobre quanto tempo o SSD leva para tentar ler, copiar ou mover arquivos individuais menores.



Agora que percebem isto, que percebem como a criação dos ficheiros pode influenciar a performance do SSD, e que percebem como estes tipos de ficheiros, se colocados aleatoriamente e sem ser pensado, no disco podem criar situações onde não se pode prever um vencedor, percebem que um disco mais lento vencer um confronto não o torna melhor ou mais rápido. Apenas há uma combinação de fatores, derivados das capacidades do SSD, do sistema operativo, do API, e do tipo de descompressão que, naquele conjunto de situações, o torna mais rápido.

Espero que tenham ficado mais elucidados sobre como funciona um SSD, percebendo que isto não é algo tão simples como de forma “ignorante” os utilizadores tratam a coisa nos foruns, onde forçosamente esperam que um SSD mais rápido bata em todos os casos um ou mais lento. Porque isso pode acontecer, ou não! Vai depender de tudo o que referimos em cima.



13 Comentários
Antigos
Recentes
Inline Feedbacks
Ver todos os comentários
Carlos Eduardo Santos
Carlos Eduardo Santos
5 de Fevereiro de 2023 11:47

Rapazzzz!!!
Que domingo inspirado Sr. Mário.
Que matéria detalhada e bem escrita.
Adorei!!!

marcio
marcio
5 de Fevereiro de 2023 11:58

Ótimo artigo Mário, uma dúvida no caso da ps5 que tem um Ssd nativo com vários níveis de prioridade diferente da grande maioria do mercado, como os devs deveram lidar com os ficheiros do jogo exclusivos ps5 pois deveram considerar que o jogo pode ser instalado em um ssd “externo” expandido pelo usuário, nessa situação o jogo poderá exigir a instalação no SSD nativo ou tem alguma outra formar de superar esse limitação.

marcio
marcio
Responder a  Mário Armão Ferreira
5 de Fevereiro de 2023 15:14

Obrigado pelos esclarecimentos Mario.

Juca
Juca
Responder a  marcio
5 de Fevereiro de 2023 12:54

Márcio, não sei se vou dar a resposta correta, mas qualquer coisa o Mário ou o Carlos Eduardo que são mais técnicos poderam me corrigir ou explicar melhor meu comentário.

Apesar do PS5 até aceitar SSDs com velocidade inferior ao padrão interno, pra se tentar compensar a questão das diferentes prioridades do SSD nativo é recomendado que usuários devam priorizar as unidades “adicionais” (externa) com transferências padrões bem superiores de transferência convencional afim de superar o 5,5Gb/s por boa margem de segurança, pois é algo que sugere que se possa compensar algumas características deficientes para o SSD do console.

O PS5, até onde sei, ainda não teve jogos com o streaming tão exagerando quanto o seu máximo possível em diferentes níveis de uso, se num futuro próximo (ou não) isso acontecer, a Sony deixa a recomendação de que no caso de qualquer anormalidade, o conteúdo deve ser transferido pra unidade interna.

Até hoje acredito que os maiores usos das características específicas do SSD interno da Sony podem ter sido a demonstração de Matrix e o Ratchet & Clank: RA.

[Opinião] Sinceramente não sei se o desempenho pior em Matrix no SX teve “mais a ver” com o SSD, ou com a GPU com mais paralelismo e menos velocidade, coisas que para aquele caso em específico resultaram numa pior performance. E não lembro se o Mário já abordou esse assunto a tentar explicar o porque, vou dar uma pesquisada aqui e depois retorno alguma info.

Edit: Segundo o artigo abaixo as diferenças de desempenho no Matrix Awakes não parecem ter relações diretas com as diferentes capacidades de streaming dos SSDs.

https://www.pcmanias.com/matrix-awakens-esta-longe-de-estar-otimizado-e-mais-do-que-tudo-uma-prova-de-conceito/

Last edited 1 ano atrás by Juca
marcio
marcio
Responder a  Juca
5 de Fevereiro de 2023 15:15

Opa obrigado pelos esclarecimentos Juca.

Juca
Juca
5 de Fevereiro de 2023 12:36

É algo, de certa forma, assemelhado a questão dos 10 vs 12 TFlops nos consoles, já que matematicamente 12 é sempre maior que 10, mas para além de diferenças físicas e de propriedades intrínsecas (clocks, núcleos…) de cada GPUs há ainda usos e práticas externas que fazem com que aquilo que é tido como “menos capaz”, pelos leigos, apresente melhores resultados práticos.

Juca
Juca
5 de Fevereiro de 2023 13:10

Vale lembrar ainda que nos PCs, diferentes CPUs resultam em diferentes tempos de loadings, pois as próprias CPUs têm papel importante em todo o sistema, e os loadings não se resumem as características intrínsecas de uma única peça de hadware.

De qualquer forma esse ponto para os consoles não é tão relevante, pois embora guardada as escolhas de design funcional por cada empresa, as CPUs dos dois sistemas são bem equivalentes.

Last edited 1 ano atrás by Juca
Juca
Juca
Responder a  Mário Armão Ferreira
5 de Fevereiro de 2023 14:17

A SX e a SS também, Mário, ou neles a CPU tem mais trabalho com isso que no PS5?

Last edited 1 ano atrás by Juca
error: Conteúdo protegido