Primero, creo un disco RAM, así:
diskutil erasevolume APFS RAM_Disk_4096MB $(hdiutil attach -nomount ram://8388608)
Al principio no ocupa ninguna RAM (memoria del sistema), ya que está vacío. Cuando copio/muevo archivos a él, en la sección de Memory
de Activity Monitor
, el proceso de la columna de Memory
diskimages-helper
se convierte exactamente en el tamaño de un archivo que copié (como se verifica por ncdu
y la sección Used:
de Disk Utility
para ese volumen de disco RAM).
El problema es que cuando borro un archivo de mi disco RAM, la Memory
utilizada por diskimages-helper
no desaparece. La única forma de liberarla es o bien eject
ar el volumen del disco RAM o matar el proceso diskimages-helper
(prácticamente lo mismo).
De acuerdo con mi investigación, a medida que sigo copiando/moviendo/eliminando archivos de/en mi disco RAM, el uso de memoria de diskimages-helper
crece hasta alcanzar la marca de los 4 GB (la cantidad asignada al disco RAM). Una vez más, borrar archivos del disco RAM no libera ninguna memoria utilizada por diskimages-helper
.
La pregunta entonces es, ¿cómo puedo hacer que mi disco RAM/proceso diskimages-helper
utilice solo la memoria necesaria? Y posteriormente liberar la memoria utilizada anteriormente asignada a los archivos ahora eliminados? Las respuestas en la línea de comandos son preferidas.
Nota: idealmente el sistema de archivos del disco RAM tiene que ser APFS u otro sistema de archivos capaz de archivos dispersos.
Para ser claro, no estoy buscando una forma de limitar el uso de memoria de diskimages-helper
, ya que puedo hacerlo simplemente cambiando el tamaño de mi disco RAM. La intención es hacer que diskimages-helper
utilice solo la cantidad de memoria que realmente está ocupada por los archivos almacenados actualmente en el disco RAM (similar a cómo funciona RAM disk/tmpfs en Linux).
Hubo una pregunta similar con una diferencia clave, ya que esta se resuelve simplemente expulsando el disco RAM, lo que libera la memoria asignada. ¿Cómo puedo recuperar la memoria asignada a un disco RAM?
Antecedentes potencialmente poco importantes: Utilizo una aplicación de transmisión llamada infuse, y almacena en caché toda la película/episodio de lo que veo/transmito desde mi servidor. No quiero que mi ya desgastado SSD lleve esa carga, así que estoy usando un disco RAM para el directorio de caché de esta aplicación. Por favor, absténgase de sugerir correcciones específicas de la aplicación, aplicaciones alternativas, y demás, el propósito de esta pregunta es ordenar el comportamiento del disco RAM y de diskimages-helper.
0 votos
No creo que haya una manera. Los paquetes dispersos se supone que son redimensionables, pero no he encontrado una forma de crear un sparsebundle como una imagen de disco RAM. Incluso así, si pones la imagen de sparsebundle en un disco RAM y puedes redimensionarlo, vuelves al problema original de que el volumen montado no se redimensiona. Creo que tienes que expulsar y volver a crear el volumen para liberar RAM.