2 votos

Reduciendo el uso de memoria RAM en disco (diskimages-helper)

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 ejectar 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.

2voto

Brysie Puntos 21

Me inscribí para responder a esta pregunta; es la primera vez que realmente conozco la respuesta.

Cada volumen tiene su propia papelera. Cuando eliminas algo del disco RAM, es ahí a donde va. Si vacías la papelera o la abres y eliminas el archivo desde allí, eso debería devolverte la RAM.

Lamento que esa no sea tu solución preferida en Terminal. Para eso, navegué a una carpeta eliminada del disco RAM y la encontré dentro de un misterioso directorio 501, que estaba dentro de .Trashes (no .Trash). Necesitarás usar sudo mientras estés allí.

1 votos

Lamentablemente, esto no parece ser relevante para el problema que estoy enfrentando. Debería haber mencionado que estoy eliminando archivos/carpetas ya sea con ++ o con rm, es decir, saltándome la papelera de reciclaje, por lo que ni siquiera aparecen en la papelera (.Trashes). Solo para estar seguro, intenté eliminar el archivo de forma normal para que terminara dentro de .Trashes/501 como mencionaste, pero eliminarlo de allí luego tampoco liberó memoria RAM.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X