Linux Adictos Isaac  

¿Hay algo que podamos hacer para no perder tanto rendimiento por los parches de Meltdown y Spectre?

logos spectre y meltdown sobre un die shot del wafer

Intel quiso excusarse de que Meltdown y Spectre era un problema suyo, luego rectificó e hizo una declaración pública en la que citó a AMD y ARM como socios tecnológicos con los que estaba trabajando para resolver el problema y así de paso señalarlos también a ellos, pero tanto ARM como AMD no están tan afectados por estas vulnerabilidades como lo está Intel, ya que Meltdown es casi exclusividad de los microprocesadores de Intel (y algún ARM) y Spectre sí que afecta a más microprocesadores, pero no en la misma medida e Intel vuelve a llevarse la peor parte.

También se apresuraron a decir que la pérdida de rendimiento sería casi nula, que los usuarios no lo notarían tras instalar los parches. Y es cierto que no hay una pérdida tan dramática como se preveía en la mayoría de casos, pero sí que es verdad que dependiendo de la generación de tu chip la pérdida puede ser mínima o bastante severa. Ya de hecho lo han reconocido y ahora ya han realizado algunas pruebas con benchmarks para calcular las pérdidas que podrás tener en los Intel tras instalar los parches correspondientes en tu sistema, y aunque las pruebas se realizaron con Microsoft Windows, para Linux y otros sistemas como macOS serán similares…

Perdidas de rendimiento estimadas…

Cambio de CPU con una excavadora de juguete

Como digo, ese 30% de pérdida de rendimiento no es del todo así, al menos en los últimos modelos de CPUs lanzados. Mientras más antiguo sea tu chip más pérdida de rendimiento supondrá la actualización con los parches de Meltdown y Spectre. Las pruebas realizadas por Intel se deberían de coger con pinzas, puesto que supongo que los benchmarks elegidos benefician al fabricante y no se han puesto en el peor de los casos, además las mediciones las hicieron teniendo en cuenta las aplicaciones más cotidianas que usa un usuario medio, pero como sabes dependiendo del software puede variar.

Intel además ha hecho otra trampa para las mediciones, y es usar unidades SSD en todos los equipos que ha usado, algo que sería una de las mejoras que podríamos hacer nosotros mismos para luchar contra el impacto. Sí, si cambiamos un HDD por un SSD, la velocidad de acceso para estos últimos sería mucho más rápida y el vaciado del TLB supondría una pérdida inferior a lo que se podría dar en un disco duro convencional. Por tanto, si tienes un HDD los datos arrojados por estas pruebas de Intel son bastante optimistas y no debes esperar obtener los datos de estos benchmarks. Además las pruebas no se han realizado con todos los modelos sino que han elegido uno de cada generación, supongo que nuevamente han seleccionado los que arrojen datos más positivos para la imagen de la marca.

Los resultados han sido:

  • Intel Core 8º Generación (Kaby Lake y Coffe Lake): se calcula que la media del impacto en el rendimiento sería del 6% para la mayoría de actividades y en aplicaciones web como la ejecución de código JavaScript se podría ver una pérdida de hasta el 10%.
  • Intel Core 7º Generación (Kaby Lake-H): aquí para aplicaciones ofimáticas y demás el rendimiento caería un 7%, un punto más que en el caso anterior y en el caso de aplicaciones web también aumentaría un poco con respecto a la 8º.
  • Intel Core 6º Generación (Skylake-S): en torno al 8% por lo general… Pero en una prueba concreta llamada Responsiveness de SYSMark 2014 SE se han detectado périddas de hasta el 79% incluso usando el SSD.
  • Intel anteriores a esto: pues no se han realizado pruebas por el momento, al menos no públicas, pero con cada generación deberías ir añadiendo más puntos de pérdida a lo visto en las tres últimas, ya que estas tres últimas se supone que es en las que la pérdida es mucho menor. ¿Qué ocurre con procesadores de hace 10 años por ejemplo? Veremos la respuesta de los usuarios…

Con las cargas de trabajo probadas por Intel las pérdidas son estas para esas generaciones, pero… ¿y con cargas de trabajo más elevadas? Creo que próximamente habrá más polémicas de usuarios descontentos. Eso sí, los gamers pueden estar un poco más tranquilos debido a que los videjuegos no necesitan de demasiadas llamadas al sistema para su funcionamiento la bajada de rendimiento para ellos no es tan notable y puede rondar el 2% y prácticamente no se perjudican los FPS.

¿Cómo mejorar el rendimiento desde el punto de vista físico?

 

robot sustituyendo cpu

En cuanto al hardware podemos invertir un poco de dinero para compensar la pérdida de rendimiento:

  • CPU: podemos actualizar la CPU a un modelo más moderno si nuestro socket y chipset lo admite, así lo ganado por incluir una microarquitectura más moderna o un procesador con unas características superiores podría camuflar esa pérdida de rendimiento, aunque evidentemente igual que tu chip anterior, el nuevo también tendrá una pérdida de rendimiento con respecto al sistema sin parchear. Lo lógico sería no actualizar el microprocesador a no ser que tengamos uno muy antiguo y la pérdida sea notoria y ya lo tengamos amortizado como para pensar en un cambio.
  • RAM: ampliar la memoria RAM tampoco vendría mal, ya que podríamos elevar un poco el rendimiento y hacer más llevable la pérdida de rendimiento. En este caso, quizás sea para aquellos que tengan un microprocesador más moderno y no quieran cambiarlo pero por un desembolso de no demasiado dinero podríamos comparar un módulo nuevo evitando así el uso de la memoria secundaria (SWAP) para almacenar datos de procesos y que el microprocesdor se demore aún más ciclos por el drenado del TLB.
  • Disco duro: también puede ser una buena opción incluir un SSD en nuestro equipo, esto mejorará notoriamente el rendimiento por reducir bastante el tiempo de acceso a esta memoria con respecto a los HDD. Por eso el impacto de rendimiento con SSD será bastante menor, es por ello que Intel los usó para hacer las pruebas. Siempre puedes dejar tu HDD como un disco para datos y el SSD para el software.
  • Overclock: siempre que sepas bien lo que haces, quizás ahora sea un buen momento por apostar por realizar overclocking sobre tu sistema para sacar algunos cientos de megahertzios desbloqueados en tu CPU… Pero no olvides que eso puede generar problemas de estabilidad en algunos chips y sobre todo deberías mejorar la refrigeración, por tanto implicará también un coste económico.

Ciertamente ninguno de los cambios de hardware son demasiado baratos, y si queremos recuperar parte del rendimiento nos tocará gastar dinero. Evidentemente no todos los usuarios necesitan hacer esto, solo aquellos para los cuales el rendimiento sea crítico. Además si tu CPU es de las últimas generaciones ya ves que las pérdidas no son tan enormes, y solo deberías plantearte un cambio de componentes cuando tu equipo sea más antiguo o cuando las aplicaciones que uses sí que noten más el detrimento por los parches como las bases de datos, etc.

¿Cómo mejorar el rendimiento por software?

Letras sobre fondo oscuro

Descartando los desembolsos de dinero que supone tocar a nuestro hardware nos deberíamos preguntar si con el mismo hardware que tenemos podemos hacer algo en nuestra distribución GNU/Linux para que la pérdida de rendimiento no se note tanto. La respuesta es que probablemente algo podamos hacer y es cualquier práctica que por cambios en las configuraciones pueda ayudar al rendimiento. Y seguro que algunas de estas configuraciones ya las conoces:

  • AMD: si tienes una CPU de AMD deberías evitar los parches, aunque esto supone un riesgo, ya que estos chips no están del todo libres de Spectre pero es cierto que el riesgo es bastante inferior por las diferencias arquitectónicas entre Intel y AMD…De todos modos tarde o temprano llegará un kernel en el que ya tenga estos parches de serie y tampoco sería bueno usar un kernel sin actualizar para otros posibles problemas. Lo mejor es un mecanismo de configuración para desactivar esto en ciertas CPUs…
  • Swappiness: yo particularmente no tocaría el parámetro del kernel referente a Cache Pressure, pero sí que podríamos modificar el Swappiness sobre todo si tenemos un HDD, ya que en el caso de tener un SSD la diferencia sería menor. El valor de Swappines hace que el kernel modifique la prioridad del uso de RAM/SWAP. Un valor 0 o bajo significa que no se usará tanto la SWAP por lo que beneficiará un poco a la pérdida de rendimiento tras instalar los parches de Spectre y Meltdown. Sin embargo, sería recomendable tener una RAM amplia para que este paso no perjudique por otro lado el rendimiento. Si tienes una buena capacidad RAM y un HDD evita valores altos o próximos a 100 porque harán más uso de la partición SWAP de intercambio y dejarán a la RAM más vacía, por tanto se tardará más en el acceso a datos e instrucciones alojadas allí. Para ver el valor actual de tu Swappiness podemos usar el concatenador cat y para modificar el valor sysctl, por ejemplo para poner 10% de uso de la SWAP y 90% para la RAM:

cat /proc/sys/vm/swappiness

sysctl -w vm.swappiness=10

  • Usar entornos de escritorio ligeros o prescindir totalmente de un entorno gráfico, siempre que sea posible y el usuario se sienta cómodo con el modo texto, resulta una solución radical pero que contribuye enromemente al rendimiento. Si en tu caso no quieres renunciar a las bondades de las GUIs puedes optar por una distro ligera. Recuerda que toda carga de trabajo que le quites singifica recursos libres que pueden ser destinados a otros fines.
  • Y con lo que he comentado en el párrafo anterior decir que sería también una buena idea parar todos esos demonios de servicios que no utilicemos. Esto no solo mejora el rendimiento, también la seguriadad. El comando kill también puede ser tu alidado para matar procesos no necesarios.
  • Si no sabes configurar SELinux adecuadamente mejor no lo uses, opta por otros mecanismo de seguridad. Aunque mejora la seguridad enormemente pero es muy pesado, y si está mal configurado tal vez no merezca la pena esa pérdida enorme de rendimiento que podría suponer.
  • Compila siempre el software desde las fuentes, además puedes usar flags para el compilador específicas para que se optimicen las instrucciones para tu CPU concreta lo que va a mejorar el rendimiento.
  • Configura un kernel lo más ligero posible eliminando todos aquellos controladores que no utilicemos para no generar una imagen demasiado grande, y si son secundarios no los marques para que se incluyan dentro del kenel, sino como módulos. Las opciones de configuración referentes a la CPU que encontarás en la config también puede optimizar mucho el trabajo.
  • Elige un buen sistema de archivos:
    • btrfs: un buen rendimiento en general, incluso mejor que ext4 por lo que sería la mejor opción.
    • ext4: buen rendimiento en general.
    • JFS: hace muy poco uso de la CPU, por tanto es una opción a considerar.
    • XFS: si manejas ficheros muy grandes, como bbdd sería la mejor opción por su rendimiento. En cambio para un usuario normal puede ser perjudicial ya que su rendimiento empeora con ficheros pequeños.
    • ReiserFS: lo contrario al anterior, buen rendimiento para ficheros pequeños.
  • No te aconsejo reservar espacios de memoria RAM y montar algún tipo de FS allí como alternativa a un SSD o cargar el /tmp allí, ya que es cierto que mejorará el tiempo de acceso para esos datos alojados ahí pero también usará más la CPU. Así que evita este tipo de de prácticas o usar compcache, etc.
  • También hay software que mejora el rendimiento de nuestro sistema, por tanto sería bueno usar este software de mantenimiento de vez en cuando para colaborar en una mejora del rendimiento. Por ejemplo verynice… Y ahora que he escrito este nombre me acabo de acordar de comandos como nice, renice e ionice que pueden ser especialmente relevantes en estos casos. Ya hemos hablado de ellos en LxA.
  • También hay trucos por la red para diferentes programas, si usas alguno con frecuencia puedes buscar estos trucos para agilizarlos. Por ejemplo para Firefox, LibreOffice, SSH, etc.

No olvides dejar tus comentarios, dudas o sugerencias

El artículo ¿Hay algo que podamos hacer para no perder tanto rendimiento por los parches de Meltdown y Spectre? ha sido originalmente publicado en Linux Adictos.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.