Come calcolare la dimensione della memoria virtuale in Mavericks

4

Vorrei sapere se esiste un comando (o una serie di comandi) che calcola ciascuno dei parametri (memoria virtuale, cache di file e memoria di app) elencati nella schermata qui sopra.

    
posta Muhammad Hassan Nasr 26.03.2014 - 14:37
fonte

2 risposte

0

Puoi usare vm_stat e sysctl comandi del terminale. Sebbene non esistesse alcun modo diretto o documentazione su come estrarre i nuovi attributi da questi comandi, abbiamo dovuto fare alcuni tentativi ed errori fino a scoprire le relazioni tra i parametri nei comandi e l'attributo che dobbiamo calcolare.

I passaggi sono i seguenti:

  1. Esegui vm_stat
  2. Esegui "sysctl hw.memsize" e "sysctl vm.swapusage".
  3. La relazione tra l'utilizzo della memoria che appare in Activity Monitor e i comandi precedenti sono descritti in Come calcolare l'utilizzo della memoria in Mavericks a livello di programmazione .

Esempio di output da vm_stat :

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                               24428.
Pages active:                           1039653.
Pages inactive:                          626002.
Pages speculative:                       184530.
Pages throttled:                              0.
Pages wired down:                        156244.
Pages purgeable:                           9429.
"Translation faults":                  14335334.
Pages copy-on-write:                     557301.
Pages zero filled:                      5682527.
Pages reactivated:                           74.
Pages purged:                             52633.
File-backed pages:                       660167.
Anonymous pages:                        1190018.
Pages stored in compressor:                 644.
Pages occupied by compressor:               603.
Decompressions:                              18.
Compressions:                               859.
Pageins:                                 253589.
Pageouts:                                     0.
Swapins:                                      0.
Swapouts:                                     0.
    
risposta data 05.05.2014 - 11:14
fonte
1

Credo che tra top e vm_stat potresti ottenere la maggior parte di quell'output, sebbene in una forma meno leggibile. (Perché vuoi leggerlo dal terminale, curiosità?)

top ha la maggior parte delle statistiche di memoria fisica e virtuale, ma vm_stats ha la quantità di compressione, e entrambi hanno lo swapping, sebbene grazie alla compressione sia bassa.

Le specifiche di App Memory e Filecache non sono stato trovato, sono incluse nel conteggio della memoria virtuale.

vm_stats:

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                              262614.
Pages active:                            818894.
Pages inactive:                          287658.
Pages speculative:                        46300.
Pages throttled:                              0.
Pages wired down:                        411565.
Pages purgeable:                          56793.
"Translation faults":                 255617431.
Pages copy-on-write:                   10812762.
Pages zero filled:                    165910381.
Pages reactivated:                      3419113.
Pages purged:                           2058688.
File-backed pages:                       246635.
Anonymous pages:                         906217.
Pages stored in compressor:              396258.
Pages occupied by compressor:            269783.
Decompressions:                          625574.
Compressions:                           1816628.
Pageins:                                1693962.
Pageouts:                                223513.
Swapins:                                      0.
Swapouts:                                     0.

top:

Processes: 253 total, 2 running, 6 stuck, 245 sleeping, 1101 threads             14:53:50
Load Avg: 1.42, 1.43, 1.62  CPU usage: 8.52% user, 5.97% sys, 85.50% idle
SharedLibs: 120M resident, 0B data, 26M linkedit.
MemRegions: 70307 total, 2561M resident, 107M private, 577M shared.
PhysMem: 5919M used (1608M wired), 1218M unused.
VM: 631G vsize, 1312M framework vsize, 0(0) swapins, 0(0) swapouts.
Networks: packets: 7933197/5221M in, 5685549/2563M out.
Disks: 1748536/37G read, 1726987/42G written.

Modifica: Ok ho cercato uno strumento che potesse trovare quel valore della memoria virtuale. Credo che il valore della memoria virtuale mostrato in "Monitoraggio attività" sia la quantità di memoria effettivamente utilizzata. Mentre 'top' mostra tutta la memoria virtuale, e la maggior parte di essa non è stata effettivamente posizionata da qualche parte. I programmi possono richiedere molta più memoria di quello che useranno, e dato che si tratta di memoria virtuale, non costa nulla che gli permetta di avere un grande spazio vm purché non lo usino realmente. Questo link ha uno strumento di sostituzione superiore Se lo esegui con 'sudo' come 'sudo procexp -all' dà fuori da ciò che la memoria virtuale può essere più simile a ciò che mostra "Activity Monitor".

-----------------
Process: 0  Name: kernel_task       Parent:     0   Status: runnable
Flags:   64-bit,system,session leader
UID:        0   RUID:     0 SVUID:     0
GID:        0   RGID:     0 SVGID:     0

Virtual size:       7167M (7515574272)  Resident size:         752M (789536768)
Time:     58.03   =   00.00 (User)    +    58.03 (System)
Syscalls:           0   Mach Traps:       0
Disk I/O: Read   9786K  Written:      88547K

#Threads:  96     (Process has no workqueues)
    
risposta data 26.03.2014 - 15:00
fonte

Leggi altre domande sui tag