La compilación con clang en la terminal es extremadamente lenta después de ver un mensaje de que mi disco está casi lleno. ¿Cómo restaurar el rendimiento?

Eliminé archivos, así que ahora tengo 18,7 GB de almacenamiento libre después de recibir el mensaje del buscador de que mi almacenamiento está casi lleno.

Aún así, la compilación es extremadamente lenta. Me pregunto si hay alguna configuración que me perdí.

¿Cómo puedo remediar esto?

Respuestas (1)

Si está en un disco duro giratorio y elimina una gran cantidad de archivos, es posible que tenga una asignación subóptima de algunos archivos. Si tiene una SSD, deberá perfilar el proceso de compilación para determinar el cuello de botella real.

Solo para confirmar, ¿el df -gcomando enumera 18,7 GB libres para el volumen del sistema operativo? Suponiendo que sí, no se ha perdido ninguna configuración, como limpiar instantáneas locales en la máquina del tiempo o vaciar la papelera.


Para la situación de HDD, puede probarlo apagando la Mac después de eliminar los archivos de origen o copiarlos en otra unidad.

Después del reinicio, puede ejecutar durante un día (configure la Mac para que nunca duerma) y la optimización de archivos activos comenzará a mover los archivos a los que no se accede con frecuencia fuera de la parte más rápida del disco duro.

Luego, mueva su código fuente hacia atrás e intente compilar. En ese punto, si todavía es lento, deberá entrar en detalles: use el timecomando para cronometrar las compilaciones y luego perfile el sistema con vm_stat 5o similar, como el Monitor de actividad, para ver si está limitado por RAM o por CPU o por IO . iostattambién será muy útil para medir los iops y las tasas de transferencia agregadas de lectura/escritura para que sepa cómo se accede a su almacenamiento momento a momento mientras clangfunciona.

Los pasos anteriores en mi máquina muestran que io y el almacenamiento tienen un impacto muy bajo en el compilador y, en cambio, la CPU y el enhebrado de la compilación serían la forma de acelerarlo, pero mi base de código probablemente sea muy diferente a la suya.