¿Por qué free + active + inactive + speculative + wired no es igual a la RAM total?

5

Cuando ejecuto vm_stat en mi 10.6.8 MacBook Pro con 2 GB de RAM, obtengo lo siguiente:

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                          90518.
Pages active:                       205479.
Pages inactive:                      32417.
Pages speculative:                  134461.
Pages wired down:                    61009.
"Translation faults":             26323651.
Pages copy-on-write:                177180.
Pages zero filled:                15230394.
Pages reactivated:                       3.
Pageins:                            388108.
Pageouts:                                0.
Object cache: 14 hits of 797355 lookups (0% hit rate)

Si suma la memoria libre, activa, inactiva, especulativa y cableada y multiplica por 4096 (para convertir las páginas en bytes), obtiene 2,145,828,864 en lugar de los 2,147,483,648 esperados. Hay 1.654.784 bytes faltantes (o 404 páginas). Aunque este no es un número constante, fluctúa:

$ vm_stat 1 | perl -MList::Util=sum -nle 'next unless /^\s*\d/; print 524288-sum((split)[0 .. 4])'
193
147
146
60
57
220
215
385
379
285
283
194

¿Estas páginas faltantes son solo una inexactitud de informes porque la cantidad de un tipo de página ha cambiado para el momento en que vm_stat imprime el siguiente tipo de página? ¿O hay algún otro tipo de memoria que me falta?

    
pregunta Chas. Owens 09.02.2013 - 13:56

2 respuestas

2

Respuesta corta: la función host_statistics64() devuelve los datos erróneos .

Todavía estoy investigando por qué este es el caso, pero el error (si es un error) está en la biblioteca que vm_stat usa, no en vm_stat en sí.

    
respondido por el Chas. Owens 09.02.2013 - 16:43
2

Después de pasar un tiempo investigando esto y una pregunta de SO saliendo de esto, creo que he clavado esto.

Antes de comenzar, quiero señalar el debate filosófico que Apple debe haber tenido cuando intentaron responder la pregunta ¿Qué es la memoria utilizada? Si observa el monitor de actividad en OSX Antes de Yosemite (puedes ver esto en mi pregunta que enlace y más abajo) verás que Memoria utilizada se compone de cuatro partes; Memoria de aplicaciones, caché de archivos, memoria cableada y memoria comprimida. Ahora, si observa el monitor de actividades a continuación, de OSX Yosemite, verá que falta la memoria caché de archivos. No estoy seguro de por qué hubo un cambio entre los sistemas operativos, pero hay uno de todos. Ya que está usando un sistema operativo anterior a Yosemite en la pregunta, lo remitiré a la definición anterior.

Regresemos a los negocios, calculando la memoria total, más específicamente Memoria utilizada , ya que Memoria libre se nos da utilizando vm_stat .

Para calcular esto, necesitamos mapear las cuatro partes de Memoria utilizada a las diferentes estadísticas que se nos dan de vm_stat . Algunos de estos son bastante fáciles.

Monitorización de actividad a asignaciones vm_stat

  • Caché de archivos: - > Páginas respaldadas por archivos
  • Memoria cableada: - > Páginas cableadas
  • comprimido: - > Páginas ocupadas por compresor
  • Memoria de la aplicación: - > Páginas activas + Páginas especulativas

Descubrir Memoria de la aplicación es complicado, y para ser sincero, no entiendo bien por qué la memoria especulativa es aparte, pero las matemáticas son indiscutibles.

Matemáticas indiscutibles (va con OSX Pre-Yosemtie Activity Monitor)

                  vm_stat       Activity Monitor
------------------------------------------------
Free Mem.         9.97 GB       9.85 GB
Pages Active      2.38 GB       xxx
Pages Speculative 0.57 GB       xxx
App Mem.          xxx           2.95                       
Cached Files      1.24 GB       1.22 GB
Wired Mem.        1.43 GB       1.41 GB
Compressed        0.57 GB       0.58 GB
------------------------------------------------
Total Mem.       16.16 GB       16.01 GB
                 (keep in mind rounding error)

Monitor de actividad OSX Pre-Yosemite

MonitordeactividadOSXYosemite

    
respondido por el Austin A 22.07.2015 - 07:11

Lea otras preguntas en las etiquetas