Aquí, escribí un libro por accidente. Toma un café primero.
¿Por qué vaciar el espacio en disco acelera las computadoras?
No lo hace, al menos no por sí solo. Este es un mito realmente común. La razón por la que es un mito común es porque llenar su disco duro a menudo ocurre al mismo tiempo que otras cosas que tradicionalmente podrían ralentizar † su computadora. El rendimiento de SSD tiende a degradarse a medida que la unidad se llena , pero este es un problema relativamente nuevo, exclusivo de los SSD, y no es realmente notable para los usuarios ocasionales. En general, el bajo espacio libre en el disco es solo una pista falsa .
Por ejemplo, cosas como:
Fragmentación de archivos. La fragmentación de archivos es un problema †† , pero la falta de espacio libre, aunque definitivamente es uno de los muchos factores que contribuyen, no es la única causa. Algunos puntos clave aquí:
Las posibilidades de que un archivo se fragmente no están relacionadas con la cantidad de espacio libre que queda en la unidad. Están relacionados con el tamaño del bloque contiguo más grande de espacio libre en la unidad (por ejemplo, "agujeros" de espacio libre), sobre el cual la cantidad de espacio libre pone un límite superior . También están relacionados con la forma en que el sistema de archivos maneja la asignación de archivos (más abajo). Considere: una unidad que está 95% llena con todo el espacio libre en un solo bloque contiguo tiene 0% de probabilidad de fragmentar un nuevo archivo ††† (y la posibilidad de fragmentar un archivo adjunto es independiente del espacio libre). Una unidad que está llena en un 5% pero con datos distribuidos uniformemente en la unidad tiene una probabilidad muy alta de fragmentación.
Tenga en cuenta que la fragmentación de archivos solo afecta el rendimiento cuando se accede a los archivos fragmentados . Considere: tiene un disco bonito y desfragmentado que todavía tiene muchos "agujeros" libres. Un escenario común. Todo funciona sin problemas. Eventualmente, sin embargo, llega a un punto donde no quedan más bloques grandes de espacio libre. Si descargas una gran película, el archivo termina estando muy fragmentado. Esto no ralentizará su computadora. Todos sus archivos de aplicaciones y otros que antes estaban bien no se fragmentarán repentinamente. Esto puede hacer que la películademora más en cargarse (aunque las velocidades de bits de película típicas son tan bajas en comparación con las velocidades de lectura del disco duro que probablemente pasarán desapercibidas), y puede afectar el rendimiento vinculado a E / S mientras se carga la película , pero aparte de eso, nada cambia.
Si bien la fragmentación de archivos es ciertamente un problema, a menudo los efectos son mitigados por el almacenamiento en caché y el almacenamiento en caché a nivel de sistema operativo y hardware. Las escrituras retrasadas, la lectura anticipada, las estrategias como el prefetcher en Windows, etc., ayudan a reducir los efectos de la fragmentación. Por lo general no realmente experimenta un impacto significativo hasta que la fragmentación se convierte en grave (Incluso me atrevo a decir que el tiempo que su archivo de intercambio no está fragmentado, es probable que nunca se nota).
La indexación de búsqueda es otro ejemplo. Digamos que tiene activada la indexación automática y un sistema operativo que no maneja esto con gracia. A medida que guarda más y más contenido indexable en su computadora (documentos y demás), la indexación puede tardar más y más y puede comenzar a tener un efecto en la velocidad percibida de su computadora mientras está en funcionamiento, tanto en E / S como en uso de CPU . Esto no está relacionado con el espacio libre, está relacionado con la cantidad de contenido indexable que tiene. Sin embargo, quedarse sin espacio libre va de la mano con el almacenamiento de más contenido, por lo tanto, se dibuja una conexión falsa.
Software antivirus. Similar al ejemplo de indexación de búsqueda. Supongamos que tiene un software antivirus configurado para escanear en segundo plano su unidad. A medida que tiene más y más contenido escaneable, la búsqueda requiere más recursos de E / S y CPU, posiblemente interfiriendo con su trabajo. Nuevamente, esto está relacionado con la cantidad de contenido escaneable que tiene. Más contenido a menudo equivale a menos espacio libre, pero la falta de espacio libre no es la causa.
Software instalado Digamos que tiene una gran cantidad de software instalado que se carga cuando su computadora se inicia, lo que ralentiza los tiempos de inicio. Esta desaceleración ocurre porque se está cargando mucho software. Sin embargo, el software instalado ocupa espacio en el disco duro. Por lo tanto, el espacio libre en el disco duro disminuye al mismo tiempo que esto sucede, y nuevamente se puede establecer una conexión falsa.
- Muchos otros ejemplos en ese sentido que, cuando se toman juntos, parecen asociar estrechamente la falta de espacio libre con un rendimiento inferior.
Lo anterior ilustra otra razón por la que este es un mito tan común: si bien la falta de espacio libre no es una causa directa de la desaceleración, desinstalar varias aplicaciones, eliminar contenido indexado o escaneado, etc. a veces (pero no siempre; fuera del alcance de esto respuesta) aumenta el rendimiento nuevamente por razones ajenas a la cantidad de espacio libre restante. Pero esto, naturalmente, también libera espacio en el disco duro. Por lo tanto, nuevamente, se puede establecer una conexión aparente (pero falsa) entre "más espacio libre" y "computadora más rápida".
Considere: si tiene una máquina funcionando lentamente debido a una gran cantidad de software instalado, etc., y clona, exactamente, su disco duro en un disco duro más grande y luego expande sus particiones para ganar más espacio libre, la máquina no acelerará mágicamente arriba. Se carga el mismo software, los mismos archivos aún están fragmentados de la misma manera, el mismo indexador de búsqueda aún se ejecuta, nada cambia a pesar de tener más espacio libre.
¿Tiene que ver con la búsqueda de un espacio de memoria donde guardar cosas?
No, no lo hace. Hay dos cosas muy importantes que vale la pena señalar aquí:
Su disco duro no busca para encontrar lugares donde colocar cosas. Tu disco duro es estúpido. No es nada. Es un gran bloque de almacenamiento direccionado que oculta cosas donde su sistema operativo se lo indica y lee lo que se le pide. Las unidades modernas tienen mecanismos sofisticados de almacenamiento en caché y almacenamiento en búfer diseñados para predecir lo que el sistema operativo va a pedir en función de la experiencia que hemos adquirido con el tiempo (algunas unidades incluso son conscientes del sistema de archivos que está en ellos), pero esencialmente, piense en su disco como un gran bloque de almacenamiento tonto con características de rendimiento de bonificación ocasionales.
Su sistema operativo tampoco busca lugares para colocar cosas. No hay "búsqueda". Se ha hecho un gran esfuerzo para resolver este problema, ya que es fundamental para el rendimiento del sistema de archivos. La forma en que los datos están realmente organizados en su disco está determinada por su sistema de archivos. Por ejemplo, FAT32 (PC antiguas con DOS y Windows), NTFS (luego Windows), HFS + (Mac), ext4 (algunos Linux) y muchos otros. Incluso el concepto de un "archivo" y un "directorio" son meramente productos de sistemas de archivos típicos: los discos duros no conocen las misteriosas bestias llamadas "archivos". Los detalles están fuera del alcance de esta respuesta. Pero esencialmente, todos los sistemas de archivos comunes tienen formas de rastrear dónde está el espacio disponible en una unidad, de modo que la búsqueda de espacio libre es, en circunstancias normales (es decir, sistemas de archivos en buen estado), innecesaria. Ejemplos:
NTFS tiene una tabla maestra de archivos , que incluye los archivos especiales $Bitmap
, etc., y muchos metadatos que describen la unidad. Básicamente, realiza un seguimiento de dónde están los siguientes bloques libres, de modo que los nuevos archivos se puedan escribir directamente en los bloques libres sin tener que escanear la unidad cada vez.
Otro ejemplo, ext4 tiene lo que se llama el "asignador de mapa de bits" , una mejora sobre ext2 y ext3 que básicamente lo ayuda a determinar directamente dónde están los bloques libres en lugar de escanear la lista de bloques libres. Ext4 también admite la "asignación retrasada", es decir, el almacenamiento en el búfer de datos en la RAM por parte del sistema operativo antes de escribirlos en el disco para tomar mejores decisiones sobre dónde colocarlos para reducir la fragmentación.
Muchos otros ejemplos.
o con mover cosas para crear un espacio continuo lo suficientemente largo como para guardar algo?
No. Esto no sucede, al menos no con ningún sistema de archivos que conozca. Los archivos terminan fragmentados.
El proceso de "mover cosas para crear un espacio contiguo lo suficientemente largo como para guardar algo" se llama desfragmentación . Esto no sucede cuando se escriben archivos. Esto sucede cuando ejecuta su desfragmentador de disco. En Windows más nuevos, al menos, esto sucede automáticamente en un horario, pero nunca se activa escribiendo un archivo.
Poder evitar mover cosas como esta es clave para el rendimiento del sistema de archivos, y es por qué ocurre la fragmentación y por qué existe la desfragmentación como un paso separado.
¿Cuánto espacio vacío en el disco duro debo dejar libre?
Esta es una pregunta difícil de responder, y esta respuesta ya se ha convertido en un pequeño libro.
Reglas de juego:
Personalmente, generalmente tomo un disco más grande cuando me queda aproximadamente un 20-25% de espacio libre. Esto no está relacionado con el rendimiento, es solo que cuando llegue a ese punto, espero que pronto me quede sin espacio para datos, y es hora de obtener una unidad más grande.
Más importante que mirar el espacio libre es asegurarse de que la desfragmentación programada esté habilitada cuando sea apropiado (no en SSD), para que nunca llegue al punto en que se vuelva lo suficientemente grave como para afectarlo. Igualmente importante es evitar ajustes equivocados y dejar que su sistema operativo haga lo suyo, por ejemplo , no deshabilite el prefetcher de Windows ( excepto los SSD ), etc.
Hay una última cosa que vale la pena mencionar. Una de las otras respuestas aquí mencionó que el modo semidúplex de SATA impide la lectura y escritura al mismo tiempo. Si bien es cierto, esto se simplifica enormemente y en su mayoría no está relacionado con los problemas de rendimiento que se discuten aquí. Lo que esto significa, simplemente, es que los datos no pueden transferirse en ambas direcciones en el cable al mismo tiempo. Sin embargo, SATA tiene una especificación bastante compleja que involucra tamaños de bloque máximos minúsculos (aproximadamente 8kB por bloque en el cable, creo), colas de operación de lectura y escritura, etc., y no impide que las escrituras en buffers ocurran mientras las lecturas están en progreso, intercaladas operaciones, etc.
Cualquier bloqueo que ocurra se debe a la competencia por los recursos físicos, generalmente mitigados por una gran cantidad de caché. El modo dúplex de SATA es casi completamente irrelevante aquí.
† "Disminuir la velocidad" es un término amplio. Aquí lo utilizo para referirme a cosas que están vinculadas a E / S (por ejemplo, si su computadora está sentada con números crujientes, los contenidos del disco duro no tienen impacto), o están vinculadas a la CPU y compiten con cosas relacionadas tangencialmente que tienen alto uso de CPU (por ejemplo, software antivirus que escanea toneladas de archivos).
†† Los SSD se ven afectados por la fragmentación, ya que las velocidades de acceso secuencial son generalmente más rápidas que el acceso aleatorio, a pesar de que los SSD no enfrentan las mismas limitaciones que un dispositivo mecánico (incluso entonces, la falta de fragmentación no garantiza el acceso secuencial, debido a la nivelación del desgaste, etc. , como James Snell señala en los comentarios). Sin embargo, en prácticamente todos los escenarios de uso general, esto no es un problema. Las diferencias de rendimiento debido a la fragmentación en los SSD son generalmente insignificantes para cosas como cargar aplicaciones, iniciar la computadora, etc.
††† Suponiendo un sistema de archivos sano que no fragmente archivos a propósito.