Escolar Documentos
Profissional Documentos
Cultura Documentos
Agenda
Overview of Memory
Introduction to Memory pools
NSF,NIF, Event and other pool structures
OS memory
Shared memory, Semaphores
Domino Server A
Router
Server
Allocation Update
In Domino Compact
Allocation from
Unique Memory Mgt
Domino Memory OS MALLOC()
Shared Memory
Private Memory
NSF Pool
Server
Router
Buffer pool Bob.nsf
In Shared
Memory
NSF Pool what is the size?
500 MB
NSF Pool What is the right size?
Compare peak and max if peak is max or max -2 review
Sh ST Database.Database.BufferPool.PerCentReadsInBuffer
Since average customer has 50% concurrency and each entry uses 1/3 MB,
take total mail files and divide by 6 for starting buffer pool.
NIF Pool
View/Index Pool
Caches frequently used views such as $Users
Special caches for NameLookup and Group membership
Increasing Any memory pool size is a trade off for performance
DPool
Defines the size of each shared memory pool in Domino
ADDENVVAR Notes_shared_dpoolsize
PRIVATE_DPOOLSIZE_THRESHOLD=
Notes.ini determines the size of each request
When the request is larger than the defined max, the request is
allocated via OSLOCAL
Domino Memory - Private
Available Memory
Private Memory
Note: EACH task has it's own address space for private memory
Memory limits are generally OS based from 2 GB on Windows 32 bit to
1 TB on AIX and i5/OS
Real versus Virtual Memory
Many Operating Systems virtualize memory
When An application MALLOC() for memory OS returns a virtual address
This virtual address maps to a real address in memory or disk
The application is unaware of the real location of memory
This provides a larger memory address space which can be used
The operating system is required to remap real space between disk and ram
This is called paging (moving data in and out of ram)
Domino Memory
OS Real Memory
Disk
Tuning /sizing/ Hang debug
More to come..
OS Memory Tools
QP0ZIPCS semaphore/shared mem
Switches E,m,s,a
Sample:
IPC STATUS AS OF Sun Sep 5 17:43:50 2004
T ID KEY MODE OWNER GROUP
AJOBNUM NUMATT
SHARED MEMORY:
M 11904 0X2A18356F --RW----RW- QNOTES *NONE
M 896 0000000000 --RW----R-- QTMHHTTP *NONE
M 12033 0X2A18365B --RW----RW- QNOTES *NONE
M 11905 0X2A183572 --RW----RW- QNOTES *NONE
M 1 0000000000 --RW-RW---- QDIRSRV *NONE
M 11906 0X2A183573 --RW----RW- QNOTES *NONE
M 12419 0X2A1834E0 --RW----RW- QNOTES *NONE
M 12291 0X2A183441 --RW----RW- QNOTES *NONE
M 11907 0X2A183574 --RW----RW- QNOTES *NONE
M 899 0000000000 --RW-RW-RW- QSECOFR *NONE
M 12420 0X2A1834E3 --RW----RW- QNOTES *NONE
IPCS api on AIX provides similar data.
SH MEM DUMP
Raw report of memory and handles for a given Domino server
Report by Domino Task
Refer to handouts for overview of dump
Domino Memory Pool Performance
Why do I need to restart a Domino server?
Domino DPOOLs are memory structures from which tasks allocate shared
memory. As threads allocate and free memory the dpools become fragmented.
Think of a parking lot....
If the lot fills up always parking in the first available space, the lot fills from
front to back quickly, no need to find a parking space.
Now think of your last trip to a busy mall, finding that free space can take
a LONG time.
Domino memory does the same thing, as memory is freed it is not
reorganized so empty slots are left as is, the next request for memory must
search the memory for those open slots.
Domino Shared Pool- parking lots
The longer the 'search' for the required available memory the
longer the response time to the user requests.
Searched/Skipped rates
Define Memory performance
Domino must find contiguous memory
Searched pool count should be 1.8 or less
Skipped count should be less than 5 (ideally)
Memory Dump - Laza
Annotated dump
Defines usage by package
Should be used when a function reports out of memory.
For detailed package information see attached PDF.
MEMSTATS
Tool to build summary report of MEM DUMP.
Summarizes dump by function
Server
Client
Network
Full Text Index
Refer to handouts for full review of report.
Using Memory Dumps
Dumps can be used to better understand memory leaks
Collect a series of dumps.
Use memstats to summarize each reports
Review reports for continually increasing addresses
Refer to handouts for additional information
Trapping a Memory leak
DEBUG_TRAPLEAKS
Set for the value of the memory address which is of concern from the memstats
report
Must be used with DEBUG_SHOWLEAKS
Trapleaks must be set to the full offset address.
The offsets are in binary in memstats report but must be converted to HEX.
Refer to handle outs
Trapleaks cont.
Sample console entry
[01434:00002-01024] Leaked block: PID=0x129 Handle=0x0044 Type=0x0910(PKG_0x1+41) Length=24 Addr=43B395C0