Quote:
Originally Posted by
Corona688
I can see why it would cause issues when contiguous pages aren't available, but why using contiguous pages cause pages to become discontinuous?
Oracle doesn't technically request "contiguous" pages, it requests large pages. To get those large pages, the OS must coalesce smaller pages.
Oracle uses the large page, releases it, then something else requests normal size pages and the large page gets fragmented. Oracle comes back and requests larges pages...
Rinse, lather, repeat.
The coalescing necessary to create the large pages can have some nasty performance impacts as it tends to lock up virtual memory management while it's happening. And for any OS instance, VM management tends to get very single threaded when memory gets tight. Processes won't start or hang because fork() and brk() calls block while the virtual memory manager thrashes about.
This can be really bad with Oracle on Solaris using ZFS because the ZFS ARC cache uses lots of small pages and isn't exactly quick in letting them go, and the standard recommendation is "let the ARC cache get as big as it wants, it doesn't hurt anything." Umm, wrong.